summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml2
-rw-r--r--.gitignore4
-rw-r--r--.mailmap29
-rw-r--r--.travis.yml2
-rw-r--r--AUTHORS.md4
-rw-r--r--COPYRIGHT.txt458
-rw-r--r--DONORS.md26
-rw-r--r--ISSUE_TEMPLATE.md13
-rw-r--r--SConstruct17
-rw-r--r--core/allocators.h1
-rw-r--r--core/array.cpp1
-rw-r--r--core/array.h1
-rw-r--r--core/bind/core_bind.cpp40
-rw-r--r--core/bind/core_bind.h3
-rw-r--r--core/class_db.cpp1
-rw-r--r--core/class_db.h1
-rw-r--r--core/color.cpp108
-rw-r--r--core/color.h13
-rw-r--r--core/command_queue_mt.cpp1
-rw-r--r--core/command_queue_mt.h1
-rw-r--r--core/compressed_translation.cpp1
-rw-r--r--core/compressed_translation.h1
-rw-r--r--core/core_string_names.cpp1
-rw-r--r--core/core_string_names.h1
-rw-r--r--core/dictionary.cpp22
-rw-r--r--core/dictionary.h1
-rw-r--r--core/dvector.cpp1
-rw-r--r--core/dvector.h1
-rw-r--r--core/engine.cpp1
-rw-r--r--core/engine.h1
-rw-r--r--core/error_list.h1
-rw-r--r--core/error_macros.cpp1
-rw-r--r--core/error_macros.h1
-rw-r--r--core/func_ref.cpp1
-rw-r--r--core/func_ref.h1
-rw-r--r--core/global_constants.cpp3
-rw-r--r--core/global_constants.h1
-rw-r--r--core/hash_map.h1
-rw-r--r--core/hashfuncs.h1
-rw-r--r--core/helper/math_fieldwise.h1
-rw-r--r--core/helper/value_evaluator.h1
-rw-r--r--core/image.cpp10
-rw-r--r--core/image.h1
-rw-r--r--core/input_map.cpp1
-rw-r--r--core/input_map.h1
-rw-r--r--core/io/compression.cpp1
-rw-r--r--core/io/compression.h1
-rw-r--r--core/io/config_file.cpp1
-rw-r--r--core/io/config_file.h1
-rw-r--r--core/io/file_access_buffered.cpp1
-rw-r--r--core/io/file_access_buffered.h1
-rw-r--r--core/io/file_access_buffered_fa.h1
-rw-r--r--core/io/file_access_compressed.cpp1
-rw-r--r--core/io/file_access_compressed.h1
-rw-r--r--core/io/file_access_encrypted.cpp1
-rw-r--r--core/io/file_access_encrypted.h1
-rw-r--r--core/io/file_access_memory.cpp1
-rw-r--r--core/io/file_access_memory.h1
-rw-r--r--core/io/file_access_network.cpp3
-rw-r--r--core/io/file_access_network.h1
-rw-r--r--core/io/file_access_pack.cpp1
-rw-r--r--core/io/file_access_pack.h1
-rw-r--r--core/io/file_access_zip.cpp1
-rw-r--r--core/io/file_access_zip.h7
-rw-r--r--core/io/http_client.cpp4
-rw-r--r--core/io/http_client.h1
-rw-r--r--core/io/image_loader.cpp1
-rw-r--r--core/io/image_loader.h1
-rw-r--r--core/io/ip.cpp1
-rw-r--r--core/io/ip.h1
-rw-r--r--core/io/ip_address.cpp1
-rw-r--r--core/io/ip_address.h1
-rw-r--r--core/io/json.cpp1
-rw-r--r--core/io/json.h1
-rw-r--r--core/io/marshalls.cpp3
-rw-r--r--core/io/marshalls.h1
-rw-r--r--core/io/networked_multiplayer_peer.cpp5
-rw-r--r--core/io/networked_multiplayer_peer.h2
-rw-r--r--core/io/packet_peer.cpp15
-rw-r--r--core/io/packet_peer.h2
-rw-r--r--core/io/packet_peer_udp.cpp1
-rw-r--r--core/io/packet_peer_udp.h1
-rw-r--r--core/io/pck_packer.cpp1
-rw-r--r--core/io/pck_packer.h6
-rw-r--r--core/io/resource_format_binary.cpp1
-rw-r--r--core/io/resource_format_binary.h1
-rw-r--r--core/io/resource_import.cpp37
-rw-r--r--core/io/resource_import.h5
-rw-r--r--core/io/resource_loader.cpp4
-rw-r--r--core/io/resource_loader.h1
-rw-r--r--core/io/resource_saver.cpp1
-rw-r--r--core/io/resource_saver.h1
-rw-r--r--core/io/stream_peer.cpp29
-rw-r--r--core/io/stream_peer.h1
-rw-r--r--core/io/stream_peer_ssl.cpp1
-rw-r--r--core/io/stream_peer_ssl.h1
-rw-r--r--core/io/stream_peer_tcp.cpp2
-rw-r--r--core/io/stream_peer_tcp.h3
-rw-r--r--core/io/tcp_server.cpp1
-rw-r--r--core/io/tcp_server.h1
-rw-r--r--core/io/translation_loader_po.cpp1
-rw-r--r--core/io/translation_loader_po.h1
-rw-r--r--core/io/xml_parser.cpp1
-rw-r--r--core/io/xml_parser.h1
-rw-r--r--core/io/zip_io.h1
-rw-r--r--core/list.h3
-rw-r--r--core/map.h1
-rw-r--r--core/math/a_star.cpp1
-rw-r--r--core/math/a_star.h1
-rw-r--r--core/math/aabb.cpp1
-rw-r--r--core/math/aabb.h1
-rw-r--r--core/math/audio_frame.cpp1
-rw-r--r--core/math/audio_frame.h1
-rw-r--r--core/math/bsp_tree.cpp1
-rw-r--r--core/math/bsp_tree.h1
-rw-r--r--core/math/camera_matrix.cpp1
-rw-r--r--core/math/camera_matrix.h1
-rw-r--r--core/math/face3.cpp1
-rw-r--r--core/math/face3.h1
-rw-r--r--core/math/geometry.cpp12
-rw-r--r--core/math/geometry.h4
-rw-r--r--core/math/math_2d.cpp1
-rw-r--r--core/math/math_2d.h1
-rw-r--r--core/math/math_defs.h1
-rw-r--r--core/math/math_funcs.cpp1
-rw-r--r--core/math/math_funcs.h1
-rw-r--r--core/math/matrix3.cpp18
-rw-r--r--core/math/matrix3.h3
-rw-r--r--core/math/octree.h3
-rw-r--r--core/math/plane.cpp1
-rw-r--r--core/math/plane.h1
-rw-r--r--core/math/quat.cpp1
-rw-r--r--core/math/quick_hull.cpp1
-rw-r--r--core/math/quick_hull.h1
-rw-r--r--core/math/transform.cpp1
-rw-r--r--core/math/transform.h1
-rw-r--r--core/math/triangle_mesh.cpp1
-rw-r--r--core/math/triangle_mesh.h1
-rw-r--r--core/math/triangulate.cpp1
-rw-r--r--core/math/triangulate.h1
-rw-r--r--core/math/vector3.cpp1
-rw-r--r--core/math/vector3.h1
-rw-r--r--core/message_queue.cpp1
-rw-r--r--core/message_queue.h1
-rw-r--r--core/method_bind.cpp1
-rw-r--r--core/method_bind.h3
-rw-r--r--core/method_ptrcall.h1
-rw-r--r--core/node_path.cpp1
-rw-r--r--core/node_path.h1
-rw-r--r--core/oa_hash_map.h3
-rw-r--r--core/object.cpp5
-rw-r--r--core/object.h5
-rw-r--r--core/ordered_hash_map.h3
-rw-r--r--core/os/copymem.h1
-rw-r--r--core/os/dir_access.cpp7
-rw-r--r--core/os/dir_access.h5
-rw-r--r--core/os/file_access.cpp1
-rw-r--r--core/os/file_access.h1
-rw-r--r--core/os/input.cpp21
-rw-r--r--core/os/input.h26
-rw-r--r--core/os/input_event.cpp1
-rw-r--r--core/os/input_event.h5
-rw-r--r--core/os/keyboard.cpp1
-rw-r--r--core/os/keyboard.h1
-rw-r--r--core/os/main_loop.cpp1
-rw-r--r--core/os/main_loop.h1
-rw-r--r--core/os/memory.cpp1
-rw-r--r--core/os/memory.h1
-rw-r--r--core/os/mutex.cpp1
-rw-r--r--core/os/mutex.h1
-rw-r--r--core/os/os.cpp1
-rw-r--r--core/os/os.h4
-rw-r--r--core/os/rw_lock.cpp1
-rw-r--r--core/os/rw_lock.h1
-rw-r--r--core/os/semaphore.cpp1
-rw-r--r--core/os/semaphore.h1
-rw-r--r--core/os/shell.cpp1
-rw-r--r--core/os/shell.h1
-rw-r--r--core/os/thread.cpp1
-rw-r--r--core/os/thread.h1
-rw-r--r--core/os/thread_dummy.cpp1
-rw-r--r--core/os/thread_dummy.h1
-rw-r--r--core/os/thread_safe.cpp1
-rw-r--r--core/os/thread_safe.h1
-rw-r--r--core/os/threaded_array_processor.cpp2
-rw-r--r--core/os/threaded_array_processor.h30
-rw-r--r--core/packed_data_container.cpp1
-rw-r--r--core/packed_data_container.h1
-rw-r--r--core/pair.h1
-rw-r--r--core/path_remap.cpp1
-rw-r--r--core/path_remap.h1
-rw-r--r--core/pool_allocator.cpp1
-rw-r--r--core/pool_allocator.h1
-rw-r--r--core/print_string.cpp1
-rw-r--r--core/print_string.h1
-rw-r--r--core/project_settings.cpp3
-rw-r--r--core/project_settings.h7
-rw-r--r--core/ref_ptr.cpp1
-rw-r--r--core/ref_ptr.h1
-rw-r--r--core/reference.cpp1
-rw-r--r--core/reference.h1
-rw-r--r--core/register_core_types.cpp1
-rw-r--r--core/register_core_types.h1
-rw-r--r--core/resource.cpp3
-rw-r--r--core/resource.h1
-rw-r--r--core/rid.cpp1
-rw-r--r--core/rid.h1
-rw-r--r--core/ring_buffer.h18
-rw-r--r--core/safe_refcount.h1
-rw-r--r--core/script_debugger_local.cpp6
-rw-r--r--core/script_debugger_local.h2
-rw-r--r--core/script_debugger_remote.cpp146
-rw-r--r--core/script_debugger_remote.h6
-rw-r--r--core/script_language.cpp3
-rw-r--r--core/script_language.h7
-rw-r--r--core/self_list.h1
-rw-r--r--core/set.h1
-rw-r--r--core/simple_type.h1
-rw-r--r--core/sort.h1
-rw-r--r--core/string_buffer.cpp1
-rw-r--r--core/string_buffer.h1
-rw-r--r--core/string_builder.cpp4
-rw-r--r--core/string_builder.h1
-rw-r--r--core/string_db.cpp1
-rw-r--r--core/string_db.h1
-rw-r--r--core/translation.cpp3
-rw-r--r--core/translation.h1
-rw-r--r--core/type_info.h30
-rw-r--r--core/typedefs.h1
-rw-r--r--core/ucaps.h1
-rw-r--r--core/undo_redo.cpp27
-rw-r--r--core/undo_redo.h5
-rw-r--r--core/ustring.cpp23
-rw-r--r--core/ustring.h1
-rw-r--r--core/variant.cpp1
-rw-r--r--core/variant.h1
-rw-r--r--core/variant_call.cpp14
-rw-r--r--core/variant_construct_string.cpp1
-rw-r--r--core/variant_op.cpp9
-rw-r--r--core/variant_parser.cpp1
-rw-r--r--core/variant_parser.h1
-rw-r--r--core/vector.h1
-rw-r--r--core/version.h1
-rw-r--r--core/vmap.h1
-rw-r--r--core/vset.h1
-rw-r--r--doc/classes/@GDScript.xml23
-rw-r--r--doc/classes/@GlobalScope.xml67
-rw-r--r--doc/classes/@NativeScript.xml2
-rw-r--r--doc/classes/@VisualScript.xml2
-rw-r--r--doc/classes/AABB.xml3
-rw-r--r--doc/classes/ARVRAnchor.xml2
-rw-r--r--doc/classes/ARVRCamera.xml2
-rw-r--r--doc/classes/ARVRController.xml2
-rw-r--r--doc/classes/ARVRInterface.xml4
-rw-r--r--doc/classes/ARVROrigin.xml2
-rw-r--r--doc/classes/ARVRPositionalTracker.xml2
-rw-r--r--doc/classes/ARVRServer.xml14
-rw-r--r--doc/classes/AStar.xml4
-rw-r--r--doc/classes/AcceptDialog.xml2
-rw-r--r--doc/classes/AnimatedSprite.xml2
-rw-r--r--doc/classes/AnimatedSprite3D.xml2
-rw-r--r--doc/classes/Animation.xml62
-rw-r--r--doc/classes/AnimationPlayer.xml107
-rw-r--r--doc/classes/AnimationTreePlayer.xml37
-rw-r--r--doc/classes/Area.xml10
-rw-r--r--doc/classes/Area2D.xml10
-rw-r--r--doc/classes/Array.xml2
-rw-r--r--doc/classes/ArrayMesh.xml36
-rw-r--r--doc/classes/AtlasTexture.xml2
-rw-r--r--doc/classes/AudioBusLayout.xml2
-rw-r--r--doc/classes/AudioEffect.xml2
-rw-r--r--doc/classes/AudioEffectAmplify.xml2
-rw-r--r--doc/classes/AudioEffectBandLimitFilter.xml2
-rw-r--r--doc/classes/AudioEffectBandPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectChorus.xml2
-rw-r--r--doc/classes/AudioEffectCompressor.xml2
-rw-r--r--doc/classes/AudioEffectDelay.xml2
-rw-r--r--doc/classes/AudioEffectDistortion.xml2
-rw-r--r--doc/classes/AudioEffectEQ.xml2
-rw-r--r--doc/classes/AudioEffectEQ10.xml2
-rw-r--r--doc/classes/AudioEffectEQ21.xml2
-rw-r--r--doc/classes/AudioEffectEQ6.xml2
-rw-r--r--doc/classes/AudioEffectFilter.xml2
-rw-r--r--doc/classes/AudioEffectHighPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectHighShelfFilter.xml2
-rw-r--r--doc/classes/AudioEffectLimiter.xml2
-rw-r--r--doc/classes/AudioEffectLowPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectLowShelfFilter.xml2
-rw-r--r--doc/classes/AudioEffectNotchFilter.xml2
-rw-r--r--doc/classes/AudioEffectPanner.xml2
-rw-r--r--doc/classes/AudioEffectPhaser.xml2
-rw-r--r--doc/classes/AudioEffectPitchShift.xml2
-rw-r--r--doc/classes/AudioEffectReverb.xml16
-rw-r--r--doc/classes/AudioEffectStereoEnhance.xml2
-rw-r--r--doc/classes/AudioServer.xml3
-rw-r--r--doc/classes/AudioStream.xml3
-rw-r--r--doc/classes/AudioStreamPlayback.xml2
-rw-r--r--doc/classes/AudioStreamPlayer.xml3
-rw-r--r--doc/classes/AudioStreamPlayer2D.xml3
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml3
-rw-r--r--doc/classes/AudioStreamRandomPitch.xml2
-rw-r--r--doc/classes/AudioStreamSample.xml16
-rw-r--r--doc/classes/BackBufferCopy.xml2
-rw-r--r--doc/classes/BakedLightmap.xml31
-rw-r--r--doc/classes/BakedLightmapData.xml66
-rw-r--r--doc/classes/BaseButton.xml6
-rw-r--r--doc/classes/Basis.xml4
-rw-r--r--doc/classes/BitMap.xml2
-rw-r--r--doc/classes/BitmapFont.xml2
-rw-r--r--doc/classes/BoneAttachment.xml23
-rw-r--r--doc/classes/BoxContainer.xml2
-rw-r--r--doc/classes/BoxShape.xml2
-rw-r--r--doc/classes/Button.xml2
-rw-r--r--doc/classes/ButtonGroup.xml2
-rw-r--r--doc/classes/Camera.xml5
-rw-r--r--doc/classes/Camera2D.xml59
-rw-r--r--doc/classes/CanvasItem.xml6
-rw-r--r--doc/classes/CanvasItemMaterial.xml2
-rw-r--r--doc/classes/CanvasLayer.xml63
-rw-r--r--doc/classes/CanvasModulate.xml2
-rw-r--r--doc/classes/CapsuleMesh.xml2
-rw-r--r--doc/classes/CapsuleShape.xml2
-rw-r--r--doc/classes/CapsuleShape2D.xml2
-rw-r--r--doc/classes/CenterContainer.xml2
-rw-r--r--doc/classes/CheckBox.xml2
-rw-r--r--doc/classes/CheckButton.xml2
-rw-r--r--doc/classes/CircleShape2D.xml2
-rw-r--r--doc/classes/ClassDB.xml2
-rw-r--r--doc/classes/CollisionObject.xml2
-rw-r--r--doc/classes/CollisionObject2D.xml2
-rw-r--r--doc/classes/CollisionPolygon.xml2
-rw-r--r--doc/classes/CollisionPolygon2D.xml2
-rw-r--r--doc/classes/CollisionShape.xml3
-rw-r--r--doc/classes/CollisionShape2D.xml3
-rw-r--r--doc/classes/Color.xml8
-rw-r--r--doc/classes/ColorPicker.xml61
-rw-r--r--doc/classes/ColorPickerButton.xml2
-rw-r--r--doc/classes/ColorRect.xml2
-rw-r--r--doc/classes/ConcavePolygonShape.xml2
-rw-r--r--doc/classes/ConcavePolygonShape2D.xml2
-rw-r--r--doc/classes/ConeTwistJoint.xml2
-rw-r--r--doc/classes/ConfigFile.xml2
-rw-r--r--doc/classes/ConfirmationDialog.xml2
-rw-r--r--doc/classes/Container.xml2
-rw-r--r--doc/classes/Control.xml81
-rw-r--r--doc/classes/ConvexPolygonShape.xml2
-rw-r--r--doc/classes/ConvexPolygonShape2D.xml2
-rw-r--r--doc/classes/CubeMap.xml21
-rw-r--r--doc/classes/CubeMesh.xml2
-rw-r--r--doc/classes/Curve.xml2
-rw-r--r--doc/classes/Curve2D.xml2
-rw-r--r--doc/classes/Curve3D.xml2
-rw-r--r--doc/classes/CurveTexture.xml2
-rw-r--r--doc/classes/CylinderMesh.xml2
-rw-r--r--doc/classes/DampedSpringJoint2D.xml2
-rw-r--r--doc/classes/Dictionary.xml2
-rw-r--r--doc/classes/DirectionalLight.xml3
-rw-r--r--doc/classes/Directory.xml3
-rw-r--r--doc/classes/DynamicFont.xml2
-rw-r--r--doc/classes/DynamicFontData.xml2
-rw-r--r--doc/classes/EditorExportPlugin.xml2
-rw-r--r--doc/classes/EditorFileDialog.xml2
-rw-r--r--doc/classes/EditorFileSystem.xml2
-rw-r--r--doc/classes/EditorFileSystemDirectory.xml2
-rw-r--r--doc/classes/EditorImportPlugin.xml2
-rw-r--r--doc/classes/EditorInterface.xml36
-rw-r--r--doc/classes/EditorPlugin.xml7
-rw-r--r--doc/classes/EditorResourceConversionPlugin.xml2
-rw-r--r--doc/classes/EditorResourcePreview.xml2
-rw-r--r--doc/classes/EditorResourcePreviewGenerator.xml2
-rw-r--r--doc/classes/EditorSceneImporter.xml2
-rw-r--r--doc/classes/EditorScenePostImport.xml2
-rw-r--r--doc/classes/EditorScript.xml2
-rw-r--r--doc/classes/EditorSelection.xml2
-rw-r--r--doc/classes/EditorSettings.xml4
-rw-r--r--doc/classes/EditorSpatialGizmo.xml2
-rw-r--r--doc/classes/EncodedObjectAsID.xml2
-rw-r--r--doc/classes/Engine.xml80
-rw-r--r--doc/classes/Environment.xml4
-rw-r--r--doc/classes/File.xml26
-rw-r--r--doc/classes/FileDialog.xml59
-rw-r--r--doc/classes/Font.xml2
-rw-r--r--doc/classes/FuncRef.xml2
-rw-r--r--doc/classes/GIProbe.xml3
-rw-r--r--doc/classes/GIProbeData.xml180
-rw-r--r--doc/classes/Generic6DOFJoint.xml26
-rw-r--r--doc/classes/Geometry.xml2
-rw-r--r--doc/classes/GeometryInstance.xml2
-rw-r--r--doc/classes/Gradient.xml2
-rw-r--r--doc/classes/GradientTexture.xml2
-rw-r--r--doc/classes/GraphEdit.xml125
-rw-r--r--doc/classes/GraphNode.xml69
-rw-r--r--doc/classes/GridContainer.xml2
-rw-r--r--doc/classes/GrooveJoint2D.xml2
-rw-r--r--doc/classes/HBoxContainer.xml2
-rw-r--r--doc/classes/HScrollBar.xml2
-rw-r--r--doc/classes/HSeparator.xml2
-rw-r--r--doc/classes/HSlider.xml2
-rw-r--r--doc/classes/HSplitContainer.xml2
-rw-r--r--doc/classes/HTTPClient.xml44
-rw-r--r--doc/classes/HTTPRequest.xml22
-rw-r--r--doc/classes/HingeJoint.xml8
-rw-r--r--doc/classes/IP.xml2
-rw-r--r--doc/classes/IP_Unix.xml2
-rw-r--r--doc/classes/Image.xml19
-rw-r--r--doc/classes/ImageTexture.xml42
-rw-r--r--doc/classes/ImmediateGeometry.xml2
-rw-r--r--doc/classes/Input.xml43
-rw-r--r--doc/classes/InputDefault.xml2
-rw-r--r--doc/classes/InputEvent.xml20
-rw-r--r--doc/classes/InputEventAction.xml4
-rw-r--r--doc/classes/InputEventGesture.xml2
-rw-r--r--doc/classes/InputEventJoypadButton.xml4
-rw-r--r--doc/classes/InputEventJoypadMotion.xml4
-rw-r--r--doc/classes/InputEventKey.xml4
-rw-r--r--doc/classes/InputEventMagnifyGesture.xml2
-rw-r--r--doc/classes/InputEventMouse.xml8
-rw-r--r--doc/classes/InputEventMouseButton.xml6
-rw-r--r--doc/classes/InputEventMouseMotion.xml6
-rw-r--r--doc/classes/InputEventPanGesture.xml2
-rw-r--r--doc/classes/InputEventScreenDrag.xml6
-rw-r--r--doc/classes/InputEventScreenTouch.xml4
-rw-r--r--doc/classes/InputEventWithModifiers.xml6
-rw-r--r--doc/classes/InputMap.xml4
-rw-r--r--doc/classes/InstancePlaceholder.xml2
-rw-r--r--doc/classes/InterpolatedCamera.xml2
-rw-r--r--doc/classes/ItemList.xml18
-rw-r--r--doc/classes/JSON.xml2
-rw-r--r--doc/classes/JSONParseResult.xml2
-rw-r--r--doc/classes/JavaScript.xml4
-rw-r--r--doc/classes/Joint.xml4
-rw-r--r--doc/classes/Joint2D.xml2
-rw-r--r--doc/classes/KinematicBody.xml9
-rw-r--r--doc/classes/KinematicBody2D.xml6
-rw-r--r--doc/classes/KinematicCollision.xml2
-rw-r--r--doc/classes/KinematicCollision2D.xml2
-rw-r--r--doc/classes/Label.xml22
-rw-r--r--doc/classes/LargeTexture.xml2
-rw-r--r--doc/classes/Light.xml3
-rw-r--r--doc/classes/Light2D.xml2
-rw-r--r--doc/classes/LightOccluder2D.xml2
-rw-r--r--doc/classes/Line2D.xml4
-rw-r--r--doc/classes/LineEdit.xml25
-rw-r--r--doc/classes/LineShape2D.xml2
-rw-r--r--doc/classes/LinkButton.xml2
-rw-r--r--doc/classes/Listener.xml2
-rw-r--r--doc/classes/MainLoop.xml2
-rw-r--r--doc/classes/MarginContainer.xml2
-rw-r--r--doc/classes/Marshalls.xml2
-rw-r--r--doc/classes/Material.xml2
-rw-r--r--doc/classes/MenuButton.xml10
-rw-r--r--doc/classes/Mesh.xml2
-rw-r--r--doc/classes/MeshDataTool.xml2
-rw-r--r--doc/classes/MeshInstance.xml2
-rw-r--r--doc/classes/MeshLibrary.xml2
-rw-r--r--doc/classes/MultiMesh.xml2
-rw-r--r--doc/classes/MultiMeshInstance.xml6
-rw-r--r--doc/classes/Mutex.xml2
-rw-r--r--doc/classes/Navigation.xml2
-rw-r--r--doc/classes/Navigation2D.xml2
-rw-r--r--doc/classes/NavigationMesh.xml2
-rw-r--r--doc/classes/NavigationMeshInstance.xml2
-rw-r--r--doc/classes/NavigationPolygon.xml2
-rw-r--r--doc/classes/NavigationPolygonInstance.xml2
-rw-r--r--doc/classes/NetworkedMultiplayerPeer.xml36
-rw-r--r--doc/classes/Nil.xml2
-rw-r--r--doc/classes/NinePatchRect.xml2
-rw-r--r--doc/classes/Node.xml92
-rw-r--r--doc/classes/Node2D.xml26
-rw-r--r--doc/classes/NodePath.xml2
-rw-r--r--doc/classes/OS.xml278
-rw-r--r--doc/classes/Object.xml2
-rw-r--r--doc/classes/OccluderPolygon2D.xml2
-rw-r--r--doc/classes/OmniLight.xml3
-rw-r--r--doc/classes/OptionButton.xml2
-rw-r--r--doc/classes/PCKPacker.xml2
-rw-r--r--doc/classes/PHashTranslation.xml2
-rw-r--r--doc/classes/PackedDataContainer.xml2
-rw-r--r--doc/classes/PackedDataContainerRef.xml2
-rw-r--r--doc/classes/PackedScene.xml2
-rw-r--r--doc/classes/PacketPeer.xml20
-rw-r--r--doc/classes/PacketPeerStream.xml48
-rw-r--r--doc/classes/PacketPeerUDP.xml2
-rw-r--r--doc/classes/Panel.xml2
-rw-r--r--doc/classes/PanelContainer.xml2
-rw-r--r--doc/classes/PanoramaSky.xml2
-rw-r--r--doc/classes/ParallaxBackground.xml2
-rw-r--r--doc/classes/ParallaxLayer.xml2
-rw-r--r--doc/classes/Particles.xml2
-rw-r--r--doc/classes/Particles2D.xml2
-rw-r--r--doc/classes/ParticlesMaterial.xml2
-rw-r--r--doc/classes/Path.xml2
-rw-r--r--doc/classes/Path2D.xml2
-rw-r--r--doc/classes/PathFollow.xml142
-rw-r--r--doc/classes/PathFollow2D.xml144
-rw-r--r--doc/classes/Performance.xml2
-rw-r--r--doc/classes/Physics2DDirectBodyState.xml140
-rw-r--r--doc/classes/Physics2DDirectBodyStateSW.xml2
-rw-r--r--doc/classes/Physics2DDirectSpaceState.xml3
-rw-r--r--doc/classes/Physics2DServer.xml14
-rw-r--r--doc/classes/Physics2DServerSW.xml2
-rw-r--r--doc/classes/Physics2DShapeQueryParameters.xml118
-rw-r--r--doc/classes/Physics2DShapeQueryResult.xml2
-rw-r--r--doc/classes/Physics2DTestMotionResult.xml76
-rw-r--r--doc/classes/PhysicsBody.xml3
-rw-r--r--doc/classes/PhysicsBody2D.xml3
-rw-r--r--doc/classes/PhysicsDirectBodyState.xml142
-rw-r--r--doc/classes/PhysicsDirectSpaceState.xml3
-rw-r--r--doc/classes/PhysicsServer.xml30
-rw-r--r--doc/classes/PhysicsShapeQueryParameters.xml84
-rw-r--r--doc/classes/PhysicsShapeQueryResult.xml2
-rw-r--r--doc/classes/PinJoint.xml10
-rw-r--r--doc/classes/PinJoint2D.xml2
-rw-r--r--doc/classes/Plane.xml3
-rw-r--r--doc/classes/PlaneMesh.xml2
-rw-r--r--doc/classes/PlaneShape.xml2
-rw-r--r--doc/classes/Polygon2D.xml21
-rw-r--r--doc/classes/PolygonPathFinder.xml2
-rw-r--r--doc/classes/PoolByteArray.xml2
-rw-r--r--doc/classes/PoolColorArray.xml2
-rw-r--r--doc/classes/PoolIntArray.xml2
-rw-r--r--doc/classes/PoolRealArray.xml2
-rw-r--r--doc/classes/PoolStringArray.xml2
-rw-r--r--doc/classes/PoolVector2Array.xml2
-rw-r--r--doc/classes/PoolVector3Array.xml2
-rw-r--r--doc/classes/Popup.xml2
-rw-r--r--doc/classes/PopupDialog.xml2
-rw-r--r--doc/classes/PopupMenu.xml22
-rw-r--r--doc/classes/PopupPanel.xml2
-rw-r--r--doc/classes/Position2D.xml2
-rw-r--r--doc/classes/Position3D.xml2
-rw-r--r--doc/classes/PrimitiveMesh.xml2
-rw-r--r--doc/classes/PrismMesh.xml2
-rw-r--r--doc/classes/ProceduralSky.xml2
-rw-r--r--doc/classes/ProgressBar.xml2
-rw-r--r--doc/classes/ProjectSettings.xml4
-rw-r--r--doc/classes/ProximityGroup.xml28
-rw-r--r--doc/classes/ProxyTexture.xml2
-rw-r--r--doc/classes/QuadMesh.xml2
-rw-r--r--doc/classes/Quat.xml2
-rw-r--r--doc/classes/RID.xml2
-rw-r--r--doc/classes/Range.xml21
-rw-r--r--doc/classes/RayCast.xml2
-rw-r--r--doc/classes/RayCast2D.xml4
-rw-r--r--doc/classes/RayShape.xml2
-rw-r--r--doc/classes/RayShape2D.xml2
-rw-r--r--doc/classes/Rect2.xml3
-rw-r--r--doc/classes/RectangleShape2D.xml2
-rw-r--r--doc/classes/Reference.xml2
-rw-r--r--doc/classes/ReferenceRect.xml2
-rw-r--r--doc/classes/ReflectionProbe.xml3
-rw-r--r--doc/classes/RemoteTransform.xml2
-rw-r--r--doc/classes/RemoteTransform2D.xml2
-rw-r--r--doc/classes/Resource.xml2
-rw-r--r--doc/classes/ResourceImporter.xml2
-rw-r--r--doc/classes/ResourceInteractiveLoader.xml2
-rw-r--r--doc/classes/ResourceLoader.xml2
-rw-r--r--doc/classes/ResourcePreloader.xml2
-rw-r--r--doc/classes/ResourceSaver.xml2
-rw-r--r--doc/classes/RichTextLabel.xml118
-rw-r--r--doc/classes/RigidBody.xml7
-rw-r--r--doc/classes/RigidBody2D.xml61
-rw-r--r--doc/classes/SceneState.xml2
-rw-r--r--doc/classes/SceneTree.xml142
-rw-r--r--doc/classes/SceneTreeTimer.xml20
-rw-r--r--doc/classes/Script.xml24
-rw-r--r--doc/classes/ScriptEditor.xml18
-rw-r--r--doc/classes/ScrollBar.xml2
-rw-r--r--doc/classes/ScrollContainer.xml46
-rw-r--r--doc/classes/SegmentShape2D.xml2
-rw-r--r--doc/classes/Semaphore.xml2
-rw-r--r--doc/classes/Separator.xml2
-rw-r--r--doc/classes/Shader.xml21
-rw-r--r--doc/classes/ShaderMaterial.xml20
-rw-r--r--doc/classes/Shape.xml3
-rw-r--r--doc/classes/Shape2D.xml3
-rw-r--r--doc/classes/ShortCut.xml2
-rw-r--r--doc/classes/Skeleton.xml2
-rw-r--r--doc/classes/Sky.xml2
-rw-r--r--doc/classes/Slider.xml2
-rw-r--r--doc/classes/SliderJoint.xml22
-rw-r--r--doc/classes/Spatial.xml92
-rw-r--r--doc/classes/SpatialGizmo.xml2
-rw-r--r--doc/classes/SpatialMaterial.xml3
-rw-r--r--doc/classes/SpatialVelocityTracker.xml20
-rw-r--r--doc/classes/SphereMesh.xml2
-rw-r--r--doc/classes/SphereShape.xml2
-rw-r--r--doc/classes/SpinBox.xml2
-rw-r--r--doc/classes/SplitContainer.xml2
-rw-r--r--doc/classes/SpotLight.xml3
-rw-r--r--doc/classes/Sprite.xml2
-rw-r--r--doc/classes/Sprite3D.xml2
-rw-r--r--doc/classes/SpriteBase3D.xml2
-rw-r--r--doc/classes/SpriteFrames.xml2
-rw-r--r--doc/classes/StaticBody.xml2
-rw-r--r--doc/classes/StaticBody2D.xml2
-rw-r--r--doc/classes/StreamPeer.xml49
-rw-r--r--doc/classes/StreamPeerBuffer.xml20
-rw-r--r--doc/classes/StreamPeerSSL.xml3
-rw-r--r--doc/classes/StreamPeerTCP.xml12
-rw-r--r--doc/classes/StreamTexture.xml2
-rw-r--r--doc/classes/String.xml7
-rw-r--r--doc/classes/StyleBox.xml2
-rw-r--r--doc/classes/StyleBoxEmpty.xml2
-rw-r--r--doc/classes/StyleBoxFlat.xml2
-rw-r--r--doc/classes/StyleBoxLine.xml18
-rw-r--r--doc/classes/StyleBoxTexture.xml2
-rw-r--r--doc/classes/SurfaceTool.xml2
-rw-r--r--doc/classes/TCP_Server.xml2
-rw-r--r--doc/classes/TabContainer.xml2
-rw-r--r--doc/classes/Tabs.xml18
-rw-r--r--doc/classes/TextEdit.xml25
-rw-r--r--doc/classes/Texture.xml29
-rw-r--r--doc/classes/TextureButton.xml2
-rw-r--r--doc/classes/TextureProgress.xml2
-rw-r--r--doc/classes/TextureRect.xml2
-rw-r--r--doc/classes/Theme.xml2
-rw-r--r--doc/classes/Thread.xml2
-rw-r--r--doc/classes/TileMap.xml5
-rw-r--r--doc/classes/TileSet.xml8
-rw-r--r--doc/classes/Timer.xml31
-rw-r--r--doc/classes/ToolButton.xml2
-rw-r--r--doc/classes/TouchScreenButton.xml2
-rw-r--r--doc/classes/Transform.xml7
-rw-r--r--doc/classes/Transform2D.xml18
-rw-r--r--doc/classes/Translation.xml2
-rw-r--r--doc/classes/TranslationServer.xml2
-rw-r--r--doc/classes/Tree.xml125
-rw-r--r--doc/classes/TreeItem.xml61
-rw-r--r--doc/classes/TriangleMesh.xml2
-rw-r--r--doc/classes/Tween.xml46
-rw-r--r--doc/classes/UndoRedo.xml16
-rw-r--r--doc/classes/VBoxContainer.xml2
-rw-r--r--doc/classes/VScrollBar.xml2
-rw-r--r--doc/classes/VSeparator.xml2
-rw-r--r--doc/classes/VSlider.xml2
-rw-r--r--doc/classes/VSplitContainer.xml2
-rw-r--r--doc/classes/Variant.xml2
-rw-r--r--doc/classes/Vector2.xml7
-rw-r--r--doc/classes/Vector3.xml7
-rw-r--r--doc/classes/VehicleBody.xml17
-rw-r--r--doc/classes/VehicleWheel.xml2
-rw-r--r--doc/classes/VideoPlayer.xml59
-rw-r--r--doc/classes/VideoStream.xml2
-rw-r--r--doc/classes/Viewport.xml97
-rw-r--r--doc/classes/ViewportContainer.xml2
-rw-r--r--doc/classes/ViewportTexture.xml2
-rw-r--r--doc/classes/VisibilityEnabler.xml2
-rw-r--r--doc/classes/VisibilityEnabler2D.xml2
-rw-r--r--doc/classes/VisibilityNotifier.xml2
-rw-r--r--doc/classes/VisibilityNotifier2D.xml2
-rw-r--r--doc/classes/VisualInstance.xml2
-rw-r--r--doc/classes/VisualServer.xml26
-rw-r--r--doc/classes/WeakRef.xml2
-rw-r--r--doc/classes/WindowDialog.xml2
-rw-r--r--doc/classes/World.xml33
-rw-r--r--doc/classes/World2D.xml35
-rw-r--r--doc/classes/WorldEnvironment.xml10
-rw-r--r--doc/classes/XMLParser.xml2
-rw-r--r--doc/classes/YSort.xml2
-rw-r--r--doc/classes/bool.xml2
-rw-r--r--doc/classes/float.xml2
-rw-r--r--doc/classes/int.xml2
-rw-r--r--doc/tools/makerst.py45
-rw-r--r--drivers/alsa/audio_driver_alsa.cpp1
-rw-r--r--drivers/alsa/audio_driver_alsa.h1
-rw-r--r--drivers/convex_decomp/b2d_decompose.cpp1
-rw-r--r--drivers/convex_decomp/b2d_decompose.h1
-rw-r--r--drivers/coreaudio/audio_driver_coreaudio.cpp1
-rw-r--r--drivers/coreaudio/audio_driver_coreaudio.h1
-rw-r--r--drivers/gl_context/context_gl.cpp1
-rw-r--r--drivers/gl_context/context_gl.h1
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp29
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.h1
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp11
-rw-r--r--drivers/gles3/rasterizer_gles3.h1
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp5
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h1
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp68
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h4
-rw-r--r--drivers/gles3/shader_compiler_gles3.cpp129
-rw-r--r--drivers/gles3/shader_compiler_gles3.h3
-rw-r--r--drivers/gles3/shader_gles3.cpp1
-rw-r--r--drivers/gles3/shader_gles3.h1
-rw-r--r--drivers/gles3/shaders/canvas.glsl6
-rw-r--r--drivers/gles3/shaders/copy.glsl4
-rw-r--r--drivers/gles3/shaders/effect_blur.glsl2
-rw-r--r--drivers/gles3/shaders/scene.glsl19
-rw-r--r--drivers/png/image_loader_png.cpp1
-rw-r--r--drivers/png/image_loader_png.h1
-rw-r--r--drivers/png/resource_saver_png.cpp1
-rw-r--r--drivers/png/resource_saver_png.h1
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.cpp1
-rw-r--r--drivers/pulseaudio/audio_driver_pulseaudio.h9
-rw-r--r--drivers/register_driver_types.cpp1
-rw-r--r--drivers/register_driver_types.h1
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.cpp1
-rw-r--r--drivers/rtaudio/audio_driver_rtaudio.h1
-rw-r--r--drivers/unix/dir_access_unix.cpp1
-rw-r--r--drivers/unix/dir_access_unix.h1
-rw-r--r--drivers/unix/file_access_unix.cpp1
-rw-r--r--drivers/unix/file_access_unix.h1
-rw-r--r--drivers/unix/ip_unix.cpp1
-rw-r--r--drivers/unix/ip_unix.h1
-rw-r--r--drivers/unix/mutex_posix.cpp1
-rw-r--r--drivers/unix/mutex_posix.h1
-rw-r--r--drivers/unix/os_unix.cpp40
-rw-r--r--drivers/unix/os_unix.h3
-rw-r--r--drivers/unix/packet_peer_udp_posix.cpp1
-rw-r--r--drivers/unix/packet_peer_udp_posix.h1
-rw-r--r--drivers/unix/rw_lock_posix.cpp1
-rw-r--r--drivers/unix/rw_lock_posix.h1
-rw-r--r--drivers/unix/semaphore_posix.cpp1
-rw-r--r--drivers/unix/semaphore_posix.h1
-rw-r--r--drivers/unix/socket_helpers.h1
-rw-r--r--drivers/unix/stream_peer_tcp_posix.cpp3
-rw-r--r--drivers/unix/stream_peer_tcp_posix.h3
-rw-r--r--drivers/unix/tcp_server_posix.cpp1
-rw-r--r--drivers/unix/tcp_server_posix.h1
-rw-r--r--drivers/unix/thread_posix.cpp1
-rw-r--r--drivers/unix/thread_posix.h1
-rw-r--r--drivers/wasapi/audio_driver_wasapi.cpp3
-rw-r--r--drivers/wasapi/audio_driver_wasapi.h3
-rw-r--r--drivers/windows/dir_access_windows.cpp1
-rw-r--r--drivers/windows/dir_access_windows.h1
-rw-r--r--drivers/windows/file_access_windows.cpp41
-rw-r--r--drivers/windows/file_access_windows.h1
-rw-r--r--drivers/windows/mutex_windows.cpp1
-rw-r--r--drivers/windows/mutex_windows.h1
-rw-r--r--drivers/windows/packet_peer_udp_winsock.cpp1
-rw-r--r--drivers/windows/packet_peer_udp_winsock.h1
-rw-r--r--drivers/windows/rw_lock_windows.cpp1
-rw-r--r--drivers/windows/rw_lock_windows.h1
-rw-r--r--drivers/windows/semaphore_windows.cpp1
-rw-r--r--drivers/windows/semaphore_windows.h1
-rw-r--r--drivers/windows/shell_windows.cpp1
-rw-r--r--drivers/windows/shell_windows.h1
-rw-r--r--drivers/windows/stream_peer_tcp_winsock.cpp3
-rw-r--r--drivers/windows/stream_peer_tcp_winsock.h5
-rw-r--r--drivers/windows/tcp_server_winsock.cpp1
-rw-r--r--drivers/windows/tcp_server_winsock.h1
-rw-r--r--drivers/windows/thread_windows.cpp1
-rw-r--r--drivers/windows/thread_windows.h1
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.cpp1
-rw-r--r--drivers/xaudio2/audio_driver_xaudio2.h1
-rw-r--r--editor/animation_editor.cpp7
-rw-r--r--editor/animation_editor.h1
-rw-r--r--editor/array_property_edit.cpp1
-rw-r--r--editor/array_property_edit.h1
-rw-r--r--editor/code_editor.cpp555
-rw-r--r--editor/code_editor.h67
-rw-r--r--editor/collada/collada.cpp5
-rw-r--r--editor/collada/collada.h1
-rw-r--r--editor/connections_dialog.cpp1
-rw-r--r--editor/connections_dialog.h1
-rw-r--r--editor/create_dialog.cpp34
-rw-r--r--editor/create_dialog.h4
-rw-r--r--editor/dependency_editor.cpp12
-rw-r--r--editor/dependency_editor.h1
-rw-r--r--editor/dictionary_property_edit.cpp3
-rw-r--r--editor/dictionary_property_edit.h3
-rw-r--r--editor/doc/doc_data.cpp1
-rw-r--r--editor/doc/doc_data.h1
-rw-r--r--editor/doc/doc_dump.cpp1
-rw-r--r--editor/doc/doc_dump.h1
-rw-r--r--editor/doc_code_font.h33
-rw-r--r--editor/doc_font.h33
-rw-r--r--editor/doc_title_font.h33
-rw-r--r--editor/editor_about.cpp4
-rw-r--r--editor/editor_about.h1
-rw-r--r--editor/editor_asset_installer.cpp1
-rw-r--r--editor/editor_asset_installer.h1
-rw-r--r--editor/editor_audio_buses.cpp1
-rw-r--r--editor/editor_audio_buses.h1
-rw-r--r--editor/editor_autoload_settings.cpp1
-rw-r--r--editor/editor_data.cpp31
-rw-r--r--editor/editor_data.h9
-rw-r--r--editor/editor_dir_dialog.cpp1
-rw-r--r--editor/editor_dir_dialog.h1
-rw-r--r--editor/editor_export.cpp17
-rw-r--r--editor/editor_export.h1
-rw-r--r--editor/editor_file_dialog.cpp20
-rw-r--r--editor/editor_file_dialog.h2
-rw-r--r--editor/editor_file_system.cpp14
-rw-r--r--editor/editor_file_system.h1
-rw-r--r--editor/editor_fonts.cpp84
-rw-r--r--editor/editor_fonts.h1
-rw-r--r--editor/editor_help.cpp43
-rw-r--r--editor/editor_help.h1
-rw-r--r--editor/editor_initialize_ssl.cpp1
-rw-r--r--editor/editor_initialize_ssl.h1
-rw-r--r--editor/editor_log.cpp7
-rw-r--r--editor/editor_log.h1
-rw-r--r--editor/editor_name_dialog.cpp1
-rw-r--r--editor/editor_node.cpp104
-rw-r--r--editor/editor_node.h1
-rw-r--r--editor/editor_path.cpp1
-rw-r--r--editor/editor_path.h1
-rw-r--r--editor/editor_plugin.cpp24
-rw-r--r--editor/editor_plugin.h9
-rw-r--r--editor/editor_plugin_settings.cpp1
-rw-r--r--editor/editor_plugin_settings.h1
-rw-r--r--editor/editor_profiler.cpp1
-rw-r--r--editor/editor_profiler.h1
-rw-r--r--editor/editor_resource_preview.cpp1
-rw-r--r--editor/editor_resource_preview.h1
-rw-r--r--editor/editor_run.cpp1
-rw-r--r--editor/editor_run.h1
-rw-r--r--editor/editor_run_native.cpp1
-rw-r--r--editor/editor_run_native.h1
-rw-r--r--editor/editor_run_script.cpp1
-rw-r--r--editor/editor_run_script.h1
-rw-r--r--editor/editor_scale.cpp1
-rw-r--r--editor/editor_scale.h1
-rw-r--r--editor/editor_settings.cpp95
-rw-r--r--editor/editor_settings.h11
-rw-r--r--editor/editor_sub_scene.cpp1
-rw-r--r--editor/editor_sub_scene.h1
-rw-r--r--editor/editor_themes.cpp143
-rw-r--r--editor/editor_themes.h1
-rw-r--r--editor/export_template_manager.cpp12
-rw-r--r--editor/export_template_manager.h1
-rw-r--r--editor/file_type_cache.cpp1
-rw-r--r--editor/file_type_cache.h1
-rw-r--r--editor/fileserver/editor_file_server.cpp3
-rw-r--r--editor/fileserver/editor_file_server.h1
-rw-r--r--editor/filesystem_dock.cpp41
-rw-r--r--editor/filesystem_dock.h3
-rw-r--r--editor/groups_editor.cpp1
-rw-r--r--editor/groups_editor.h1
-rw-r--r--editor/icons/SCsub4
-rw-r--r--editor/import/editor_import_collada.cpp5
-rw-r--r--editor/import/editor_import_collada.h1
-rw-r--r--editor/import/editor_import_plugin.cpp1
-rw-r--r--editor/import/editor_import_plugin.h1
-rw-r--r--editor/import/editor_scene_importer_gltf.cpp86
-rw-r--r--editor/import/editor_scene_importer_gltf.h35
-rw-r--r--editor/import/resource_importer_bitmask.cpp91
-rw-r--r--editor/import/resource_importer_bitmask.h29
-rw-r--r--editor/import/resource_importer_csv_translation.cpp1
-rw-r--r--editor/import/resource_importer_csv_translation.h1
-rw-r--r--editor/import/resource_importer_obj.cpp1
-rw-r--r--editor/import/resource_importer_obj.h1
-rw-r--r--editor/import/resource_importer_scene.cpp24
-rw-r--r--editor/import/resource_importer_scene.h11
-rw-r--r--editor/import/resource_importer_texture.cpp1
-rw-r--r--editor/import/resource_importer_texture.h1
-rw-r--r--editor/import/resource_importer_wav.cpp15
-rw-r--r--editor/import/resource_importer_wav.h1
-rw-r--r--editor/import_dock.cpp1
-rw-r--r--editor/import_dock.h1
-rw-r--r--editor/multi_node_edit.cpp1
-rw-r--r--editor/multi_node_edit.h1
-rw-r--r--editor/node_dock.cpp1
-rw-r--r--editor/node_dock.h1
-rw-r--r--editor/output_strings.cpp1
-rw-r--r--editor/output_strings.h1
-rw-r--r--editor/pane_drag.cpp1
-rw-r--r--editor/pane_drag.h1
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.cpp1
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.h1
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp31
-rw-r--r--editor/plugins/animation_player_editor_plugin.h1
-rw-r--r--editor/plugins/animation_tree_editor_plugin.cpp1
-rw-r--r--editor/plugins/animation_tree_editor_plugin.h1
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp1
-rw-r--r--editor/plugins/asset_library_editor_plugin.h1
-rw-r--r--editor/plugins/baked_lightmap_editor_plugin.cpp33
-rw-r--r--editor/plugins/baked_lightmap_editor_plugin.h30
-rw-r--r--editor/plugins/camera_editor_plugin.cpp1
-rw-r--r--editor/plugins/camera_editor_plugin.h1
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp200
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h6
-rw-r--r--editor/plugins/collision_polygon_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/collision_polygon_2d_editor_plugin.h1
-rw-r--r--editor/plugins/collision_polygon_editor_plugin.cpp1
-rw-r--r--editor/plugins/collision_polygon_editor_plugin.h1
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.h1
-rw-r--r--editor/plugins/cube_grid_theme_editor_plugin.cpp4
-rw-r--r--editor/plugins/cube_grid_theme_editor_plugin.h1
-rw-r--r--editor/plugins/curve_editor_plugin.cpp25
-rw-r--r--editor/plugins/editor_preview_plugins.cpp1
-rw-r--r--editor/plugins/editor_preview_plugins.h1
-rw-r--r--editor/plugins/gi_probe_editor_plugin.cpp5
-rw-r--r--editor/plugins/gi_probe_editor_plugin.h3
-rw-r--r--editor/plugins/gradient_editor_plugin.cpp1
-rw-r--r--editor/plugins/gradient_editor_plugin.h1
-rw-r--r--editor/plugins/item_list_editor_plugin.cpp1
-rw-r--r--editor/plugins/item_list_editor_plugin.h1
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.h1
-rw-r--r--editor/plugins/line_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/line_2d_editor_plugin.h1
-rw-r--r--editor/plugins/material_editor_plugin.h1
-rw-r--r--editor/plugins/mesh_editor_plugin.cpp1
-rw-r--r--editor/plugins/mesh_editor_plugin.h1
-rw-r--r--editor/plugins/mesh_instance_editor_plugin.cpp1
-rw-r--r--editor/plugins/mesh_instance_editor_plugin.h1
-rw-r--r--editor/plugins/multimesh_editor_plugin.cpp1
-rw-r--r--editor/plugins/multimesh_editor_plugin.h1
-rw-r--r--editor/plugins/navigation_mesh_editor_plugin.cpp3
-rw-r--r--editor/plugins/navigation_mesh_editor_plugin.h1
-rw-r--r--editor/plugins/navigation_mesh_generator.cpp15
-rw-r--r--editor/plugins/navigation_mesh_generator.h3
-rw-r--r--editor/plugins/navigation_polygon_editor_plugin.cpp1
-rw-r--r--editor/plugins/navigation_polygon_editor_plugin.h1
-rw-r--r--editor/plugins/particles_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/particles_2d_editor_plugin.h1
-rw-r--r--editor/plugins/particles_editor_plugin.h1
-rw-r--r--editor/plugins/path_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/path_2d_editor_plugin.h1
-rw-r--r--editor/plugins/path_editor_plugin.cpp1
-rw-r--r--editor/plugins/path_editor_plugin.h1
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.cpp1
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.h3
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp1
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.h1
-rw-r--r--editor/plugins/script_editor_plugin.cpp59
-rw-r--r--editor/plugins/script_editor_plugin.h2
-rw-r--r--editor/plugins/script_text_editor.cpp44
-rw-r--r--editor/plugins/script_text_editor.h5
-rw-r--r--editor/plugins/shader_editor_plugin.cpp1
-rw-r--r--editor/plugins/shader_editor_plugin.h1
-rw-r--r--editor/plugins/shader_graph_editor_plugin.h1
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp54
-rw-r--r--editor/plugins/spatial_editor_plugin.h1
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp1
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.h1
-rw-r--r--editor/plugins/style_box_editor_plugin.cpp1
-rw-r--r--editor/plugins/style_box_editor_plugin.h1
-rw-r--r--editor/plugins/texture_editor_plugin.cpp1
-rw-r--r--editor/plugins/texture_editor_plugin.h1
-rw-r--r--editor/plugins/texture_region_editor_plugin.cpp7
-rw-r--r--editor/plugins/texture_region_editor_plugin.h6
-rw-r--r--editor/plugins/theme_editor_plugin.cpp1
-rw-r--r--editor/plugins/theme_editor_plugin.h1
-rw-r--r--editor/plugins/tile_map_editor_plugin.cpp1
-rw-r--r--editor/plugins/tile_map_editor_plugin.h1
-rw-r--r--editor/plugins/tile_set_editor_plugin.cpp227
-rw-r--r--editor/plugins/tile_set_editor_plugin.h5
-rw-r--r--editor/progress_dialog.cpp3
-rw-r--r--editor/progress_dialog.h1
-rw-r--r--editor/project_export.cpp1
-rw-r--r--editor/project_export.h1
-rw-r--r--editor/project_manager.cpp205
-rw-r--r--editor/project_manager.h3
-rw-r--r--editor/project_settings_editor.cpp12
-rw-r--r--editor/project_settings_editor.h1
-rw-r--r--editor/property_editor.cpp4
-rw-r--r--editor/property_editor.h1
-rw-r--r--editor/property_selector.cpp1
-rw-r--r--editor/property_selector.h1
-rw-r--r--editor/pvrtc_compress.cpp1
-rw-r--r--editor/pvrtc_compress.h1
-rw-r--r--editor/quick_open.cpp1
-rw-r--r--editor/quick_open.h1
-rw-r--r--editor/register_exporters.h1
-rw-r--r--editor/reparent_dialog.cpp1
-rw-r--r--editor/reparent_dialog.h1
-rw-r--r--editor/run_settings_dialog.cpp1
-rw-r--r--editor/run_settings_dialog.h1
-rw-r--r--editor/scene_tree_dock.cpp47
-rw-r--r--editor/scene_tree_dock.h2
-rw-r--r--editor/scene_tree_editor.cpp1
-rw-r--r--editor/scene_tree_editor.h1
-rw-r--r--editor/script_create_dialog.cpp17
-rw-r--r--editor/script_create_dialog.h1
-rw-r--r--editor/script_editor_debugger.cpp94
-rw-r--r--editor/script_editor_debugger.h11
-rw-r--r--editor/settings_config_dialog.cpp1
-rw-r--r--editor/settings_config_dialog.h1
-rw-r--r--editor/spatial_editor_gizmos.cpp1
-rw-r--r--editor/spatial_editor_gizmos.h1
-rw-r--r--editor/translations/af.po424
-rw-r--r--editor/translations/ar.po628
-rw-r--r--editor/translations/bg.po460
-rw-r--r--editor/translations/bn.po504
-rw-r--r--editor/translations/ca.po650
-rw-r--r--editor/translations/cs.po1744
-rw-r--r--editor/translations/da.po428
-rw-r--r--editor/translations/de.po812
-rw-r--r--editor/translations/de_CH.po401
-rw-r--r--editor/translations/editor.pot361
-rw-r--r--editor/translations/el.po669
-rw-r--r--editor/translations/es.po509
-rw-r--r--editor/translations/es_AR.po668
-rw-r--r--editor/translations/fa.po417
-rw-r--r--editor/translations/fi.po556
-rw-r--r--editor/translations/fr.po657
-rw-r--r--editor/translations/he.po1252
-rw-r--r--editor/translations/hi.po381
-rw-r--r--editor/translations/hu.po1338
-rw-r--r--editor/translations/id.po474
-rw-r--r--editor/translations/is.po361
-rw-r--r--editor/translations/it.po502
-rw-r--r--editor/translations/ja.po544
-rw-r--r--editor/translations/ko.po1254
-rw-r--r--editor/translations/lt.po375
-rw-r--r--editor/translations/nb.po465
-rw-r--r--editor/translations/nl.po869
-rw-r--r--editor/translations/pl.po1042
-rw-r--r--editor/translations/pr.po379
-rw-r--r--editor/translations/pt_BR.po835
-rw-r--r--editor/translations/pt_PT.po791
-rw-r--r--editor/translations/ro.po7903
-rw-r--r--editor/translations/ru.po686
-rw-r--r--editor/translations/sk.po366
-rw-r--r--editor/translations/sl.po401
-rw-r--r--editor/translations/sr_Cyrl.po486
-rw-r--r--editor/translations/sv.po520
-rw-r--r--editor/translations/ta.po361
-rw-r--r--editor/translations/th.po652
-rw-r--r--editor/translations/tr.po664
-rw-r--r--editor/translations/uk.po2261
-rw-r--r--editor/translations/ur_PK.po369
-rw-r--r--editor/translations/vi.po587
-rw-r--r--editor/translations/zh_CN.po849
-rw-r--r--editor/translations/zh_HK.po455
-rw-r--r--editor/translations/zh_TW.po433
-rw-r--r--main/input_default.cpp21
-rw-r--r--main/input_default.h3
-rw-r--r--main/main.cpp32
-rw-r--r--main/main.h1
-rw-r--r--main/performance.cpp1
-rw-r--r--main/performance.h1
-rw-r--r--main/tests/test_gdscript.cpp1
-rw-r--r--main/tests/test_gdscript.h1
-rw-r--r--main/tests/test_gui.cpp1
-rw-r--r--main/tests/test_gui.h1
-rw-r--r--main/tests/test_image.cpp1
-rw-r--r--main/tests/test_image.h1
-rw-r--r--main/tests/test_io.cpp1
-rw-r--r--main/tests/test_io.h1
-rw-r--r--main/tests/test_main.cpp1
-rw-r--r--main/tests/test_main.h1
-rw-r--r--main/tests/test_math.cpp1
-rw-r--r--main/tests/test_math.h1
-rw-r--r--main/tests/test_oa_hash_map.cpp2
-rw-r--r--main/tests/test_oa_hash_map.h1
-rw-r--r--main/tests/test_ordered_hash_map.cpp2
-rw-r--r--main/tests/test_ordered_hash_map.h3
-rw-r--r--main/tests/test_physics.cpp1
-rw-r--r--main/tests/test_physics.h1
-rw-r--r--main/tests/test_physics_2d.cpp1
-rw-r--r--main/tests/test_physics_2d.h1
-rw-r--r--main/tests/test_render.cpp1
-rw-r--r--main/tests/test_render.h1
-rw-r--r--main/tests/test_shader_lang.cpp1
-rw-r--r--main/tests/test_shader_lang.h1
-rw-r--r--main/tests/test_string.cpp3
-rw-r--r--main/tests/test_string.h1
-rw-r--r--methods.py56
-rw-r--r--misc/dist/html/default.html2
-rw-r--r--misc/dist/ios_xcode/godot_ios/dummy.cpp2
-rw-r--r--misc/dist/linux/godot.617
-rwxr-xr-xmisc/dist/osx_tools.app/Contents/Info.plist8
-rw-r--r--misc/scripts/fix_headers.py (renamed from misc/scripts/addheader.py)63
-rw-r--r--modules/SCsub8
-rw-r--r--modules/bullet/SCsub24
-rw-r--r--modules/bullet/SCsub_with_lib33
-rw-r--r--modules/bullet/area_bullet.cpp17
-rw-r--r--modules/bullet/area_bullet.h7
-rw-r--r--modules/bullet/btRayShape.cpp13
-rw-r--r--modules/bullet/btRayShape.h13
-rw-r--r--modules/bullet/bullet_physics_server.cpp12
-rw-r--r--modules/bullet/bullet_physics_server.h7
-rw-r--r--modules/bullet/bullet_types_converter.cpp18
-rw-r--r--modules/bullet/bullet_types_converter.h15
-rw-r--r--modules/bullet/bullet_utilities.h7
-rw-r--r--modules/bullet/collision_object_bullet.cpp60
-rw-r--r--modules/bullet/collision_object_bullet.h13
-rw-r--r--modules/bullet/cone_twist_joint_bullet.cpp11
-rw-r--r--modules/bullet/cone_twist_joint_bullet.h7
-rw-r--r--modules/bullet/constraint_bullet.cpp8
-rw-r--r--modules/bullet/constraint_bullet.h10
-rw-r--r--modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml2
-rw-r--r--modules/bullet/doc_classes/BulletPhysicsServer.xml2
-rw-r--r--modules/bullet/generic_6dof_joint_bullet.cpp11
-rw-r--r--modules/bullet/generic_6dof_joint_bullet.h7
-rw-r--r--modules/bullet/godot_collision_configuration.cpp13
-rw-r--r--modules/bullet/godot_collision_configuration.h9
-rw-r--r--modules/bullet/godot_collision_dispatcher.cpp8
-rw-r--r--modules/bullet/godot_collision_dispatcher.h8
-rw-r--r--modules/bullet/godot_motion_state.h12
-rw-r--r--modules/bullet/godot_ray_world_algorithm.cpp24
-rw-r--r--modules/bullet/godot_ray_world_algorithm.h13
-rw-r--r--modules/bullet/godot_result_callbacks.cpp8
-rw-r--r--modules/bullet/godot_result_callbacks.h12
-rw-r--r--modules/bullet/hinge_joint_bullet.cpp11
-rw-r--r--modules/bullet/hinge_joint_bullet.h7
-rw-r--r--modules/bullet/joint_bullet.cpp8
-rw-r--r--modules/bullet/joint_bullet.h7
-rw-r--r--modules/bullet/pin_joint_bullet.cpp11
-rw-r--r--modules/bullet/pin_joint_bullet.h7
-rw-r--r--modules/bullet/register_types.cpp8
-rw-r--r--modules/bullet/register_types.h7
-rw-r--r--modules/bullet/rid_bullet.h7
-rw-r--r--modules/bullet/rigid_body_bullet.cpp69
-rw-r--r--modules/bullet/rigid_body_bullet.h18
-rw-r--r--modules/bullet/shape_bullet.cpp69
-rw-r--r--modules/bullet/shape_bullet.h33
-rw-r--r--modules/bullet/shape_owner_bullet.cpp7
-rw-r--r--modules/bullet/shape_owner_bullet.h9
-rw-r--r--modules/bullet/slider_joint_bullet.cpp11
-rw-r--r--modules/bullet/slider_joint_bullet.h7
-rw-r--r--modules/bullet/soft_body_bullet.cpp9
-rw-r--r--modules/bullet/soft_body_bullet.h13
-rw-r--r--modules/bullet/space_bullet.cpp254
-rw-r--r--modules/bullet/space_bullet.h36
-rw-r--r--modules/dds/register_types.cpp1
-rw-r--r--modules/dds/register_types.h1
-rw-r--r--modules/dds/texture_loader_dds.cpp1
-rw-r--r--modules/dds/texture_loader_dds.h1
-rw-r--r--modules/enet/SCsub4
-rw-r--r--modules/enet/doc_classes/NetworkedMultiplayerENet.xml20
-rw-r--r--modules/enet/networked_multiplayer_enet.cpp7
-rw-r--r--modules/enet/networked_multiplayer_enet.h2
-rw-r--r--modules/enet/register_types.cpp1
-rw-r--r--modules/enet/register_types.h1
-rw-r--r--modules/etc/image_etc.cpp21
-rw-r--r--modules/etc/image_etc.h1
-rw-r--r--modules/etc/register_types.cpp1
-rw-r--r--modules/etc/register_types.h1
-rw-r--r--modules/etc/texture_loader_pkm.cpp1
-rw-r--r--modules/etc/texture_loader_pkm.h1
-rw-r--r--modules/freetype/register_types.cpp1
-rw-r--r--modules/freetype/register_types.h1
-rw-r--r--modules/gdnative/SCsub8
-rw-r--r--modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml2
-rw-r--r--modules/gdnative/doc_classes/GDNative.xml2
-rw-r--r--modules/gdnative/doc_classes/GDNativeLibrary.xml4
-rw-r--r--modules/gdnative/doc_classes/NativeScript.xml2
-rw-r--r--modules/gdnative/doc_classes/PluginScript.xml2
-rw-r--r--modules/gdnative/gdnative.cpp41
-rw-r--r--modules/gdnative/gdnative.h10
-rw-r--r--modules/gdnative/gdnative/aabb.cpp3
-rw-r--r--modules/gdnative/gdnative/array.cpp1
-rw-r--r--modules/gdnative/gdnative/basis.cpp1
-rw-r--r--modules/gdnative/gdnative/color.cpp1
-rw-r--r--modules/gdnative/gdnative/dictionary.cpp1
-rw-r--r--modules/gdnative/gdnative/gdnative.cpp1
-rw-r--r--modules/gdnative/gdnative/node_path.cpp1
-rw-r--r--modules/gdnative/gdnative/plane.cpp1
-rw-r--r--modules/gdnative/gdnative/pool_arrays.cpp57
-rw-r--r--modules/gdnative/gdnative/quat.cpp1
-rw-r--r--modules/gdnative/gdnative/rect2.cpp1
-rw-r--r--modules/gdnative/gdnative/rid.cpp1
-rw-r--r--modules/gdnative/gdnative/string.cpp265
-rw-r--r--modules/gdnative/gdnative/string_name.cpp5
-rw-r--r--modules/gdnative/gdnative/transform.cpp5
-rw-r--r--modules/gdnative/gdnative/transform2d.cpp1
-rw-r--r--modules/gdnative/gdnative/variant.cpp1
-rw-r--r--modules/gdnative/gdnative/vector2.cpp1
-rw-r--r--modules/gdnative/gdnative/vector3.cpp1
-rw-r--r--modules/gdnative/gdnative_api.json180
-rw-r--r--modules/gdnative/gdnative_library_editor_plugin.cpp4
-rw-r--r--modules/gdnative/gdnative_library_editor_plugin.h1
-rw-r--r--modules/gdnative/gdnative_library_singleton_editor.cpp3
-rw-r--r--modules/gdnative/gdnative_library_singleton_editor.h3
-rw-r--r--modules/gdnative/include/arvr/godot_arvr.h1
-rw-r--r--modules/gdnative/include/gdnative/aabb.h3
-rw-r--r--modules/gdnative/include/gdnative/basis.h1
-rw-r--r--modules/gdnative/include/gdnative/color.h1
-rw-r--r--modules/gdnative/include/gdnative/dictionary.h1
-rw-r--r--modules/gdnative/include/gdnative/gdnative.h3
-rw-r--r--modules/gdnative/include/gdnative/node_path.h1
-rw-r--r--modules/gdnative/include/gdnative/plane.h1
-rw-r--r--modules/gdnative/include/gdnative/pool_arrays.h15
-rw-r--r--modules/gdnative/include/gdnative/quat.h1
-rw-r--r--modules/gdnative/include/gdnative/rect2.h1
-rw-r--r--modules/gdnative/include/gdnative/rid.h1
-rw-r--r--modules/gdnative/include/gdnative/string.h33
-rw-r--r--modules/gdnative/include/gdnative/string_name.h5
-rw-r--r--modules/gdnative/include/gdnative/transform.h5
-rw-r--r--modules/gdnative/include/gdnative/transform2d.h1
-rw-r--r--modules/gdnative/include/gdnative/variant.h1
-rw-r--r--modules/gdnative/include/gdnative/vector2.h1
-rw-r--r--modules/gdnative/include/gdnative/vector3.h1
-rw-r--r--modules/gdnative/include/nativescript/godot_nativescript.h3
-rw-r--r--modules/gdnative/include/pluginscript/godot_pluginscript.h3
-rw-r--r--modules/gdnative/nativescript/api_generator.cpp1
-rw-r--r--modules/gdnative/nativescript/api_generator.h1
-rw-r--r--modules/gdnative/nativescript/godot_nativescript.cpp1
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp86
-rw-r--r--modules/gdnative/nativescript/nativescript.h3
-rw-r--r--modules/gdnative/nativescript/register_types.cpp1
-rw-r--r--modules/gdnative/nativescript/register_types.h1
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.cpp7
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.h2
-rw-r--r--modules/gdnative/pluginscript/pluginscript_language.cpp11
-rw-r--r--modules/gdnative/pluginscript/pluginscript_language.h2
-rw-r--r--modules/gdnative/pluginscript/pluginscript_loader.cpp2
-rw-r--r--modules/gdnative/pluginscript/pluginscript_loader.h2
-rw-r--r--modules/gdnative/pluginscript/pluginscript_script.cpp51
-rw-r--r--modules/gdnative/pluginscript/pluginscript_script.h4
-rw-r--r--modules/gdnative/pluginscript/register_types.cpp3
-rw-r--r--modules/gdnative/pluginscript/register_types.h3
-rw-r--r--modules/gdnative/register_types.cpp1
-rw-r--r--modules/gdnative/register_types.h1
-rw-r--r--modules/gdscript/doc_classes/GDScript.xml3
-rw-r--r--modules/gdscript/doc_classes/GDScriptFunctionState.xml2
-rw-r--r--modules/gdscript/doc_classes/GDScriptNativeClass.xml2
-rw-r--r--modules/gdscript/gdscript.cpp3
-rw-r--r--modules/gdscript/gdscript.h5
-rw-r--r--modules/gdscript/gdscript_compiler.cpp39
-rw-r--r--modules/gdscript/gdscript_compiler.h1
-rw-r--r--modules/gdscript/gdscript_editor.cpp17
-rw-r--r--modules/gdscript/gdscript_function.cpp3
-rw-r--r--modules/gdscript/gdscript_function.h1
-rw-r--r--modules/gdscript/gdscript_functions.cpp7
-rw-r--r--modules/gdscript/gdscript_functions.h1
-rw-r--r--modules/gdscript/gdscript_parser.cpp7
-rw-r--r--modules/gdscript/gdscript_parser.h1
-rw-r--r--modules/gdscript/gdscript_tokenizer.cpp1
-rw-r--r--modules/gdscript/gdscript_tokenizer.h1
-rw-r--r--modules/gdscript/register_types.cpp1
-rw-r--r--modules/gdscript/register_types.h1
-rw-r--r--modules/gridmap/doc_classes/GridMap.xml117
-rw-r--r--modules/gridmap/grid_map.cpp141
-rw-r--r--modules/gridmap/grid_map.h17
-rw-r--r--modules/gridmap/grid_map_editor_plugin.cpp1
-rw-r--r--modules/gridmap/grid_map_editor_plugin.h1
-rw-r--r--modules/gridmap/register_types.cpp1
-rw-r--r--modules/gridmap/register_types.h1
-rw-r--r--modules/hdr/image_loader_hdr.cpp1
-rw-r--r--modules/hdr/image_loader_hdr.h1
-rw-r--r--modules/hdr/register_types.cpp1
-rw-r--r--modules/hdr/register_types.h1
-rw-r--r--modules/jpg/image_loader_jpegd.cpp1
-rw-r--r--modules/jpg/image_loader_jpegd.h1
-rw-r--r--modules/jpg/register_types.cpp1
-rw-r--r--modules/jpg/register_types.h1
-rw-r--r--modules/mobile_vr/doc_classes/MobileVRInterface.xml2
-rw-r--r--modules/mobile_vr/mobile_interface.cpp4
-rw-r--r--modules/mobile_vr/mobile_interface.h3
-rw-r--r--modules/mobile_vr/register_types.cpp1
-rw-r--r--modules/mobile_vr/register_types.h1
-rw-r--r--modules/mono/csharp_script.cpp363
-rw-r--r--modules/mono/csharp_script.h13
-rw-r--r--modules/mono/doc_classes/@C#.xml2
-rw-r--r--modules/mono/doc_classes/CSharpScript.xml2
-rw-r--r--modules/mono/doc_classes/GodotSharp.xml2
-rw-r--r--modules/mono/editor/bindings_generator.cpp170
-rw-r--r--modules/mono/editor/bindings_generator.h5
-rw-r--r--modules/mono/editor/csharp_project.cpp1
-rw-r--r--modules/mono/editor/csharp_project.h1
-rw-r--r--modules/mono/editor/godotsharp_builds.cpp3
-rw-r--r--modules/mono/editor/godotsharp_builds.h1
-rw-r--r--modules/mono/editor/godotsharp_editor.cpp94
-rw-r--r--modules/mono/editor/godotsharp_editor.h9
-rw-r--r--modules/mono/editor/mono_bottom_panel.cpp1
-rw-r--r--modules/mono/editor/mono_bottom_panel.h1
-rw-r--r--modules/mono/editor/mono_build_info.h1
-rw-r--r--modules/mono/editor/monodevelop_instance.cpp5
-rw-r--r--modules/mono/editor/monodevelop_instance.h1
-rw-r--r--modules/mono/editor/net_solution.cpp1
-rw-r--r--modules/mono/editor/net_solution.h1
-rw-r--r--modules/mono/glue/builtin_types_glue.h59
-rw-r--r--modules/mono/glue/cs_files/Color.cs26
-rw-r--r--modules/mono/glue/cs_files/DebuggingUtils.cs83
-rw-r--r--modules/mono/glue/cs_files/Plane.cs2
-rw-r--r--modules/mono/glue/glue_header.h19
-rw-r--r--modules/mono/godotsharp_defs.h1
-rw-r--r--modules/mono/godotsharp_dirs.cpp1
-rw-r--r--modules/mono/godotsharp_dirs.h1
-rw-r--r--modules/mono/mono_gc_handle.cpp1
-rw-r--r--modules/mono/mono_gc_handle.h1
-rw-r--r--modules/mono/mono_gd/gd_mono.cpp18
-rw-r--r--modules/mono/mono_gd/gd_mono.h9
-rw-r--r--modules/mono/mono_gd/gd_mono_assembly.cpp3
-rw-r--r--modules/mono/mono_gd/gd_mono_assembly.h1
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp82
-rw-r--r--modules/mono/mono_gd/gd_mono_class.h17
-rw-r--r--modules/mono/mono_gd/gd_mono_class_member.h (renamed from modules/pbm/bitmap_loader_pbm.h)46
-rw-r--r--modules/mono/mono_gd/gd_mono_field.cpp35
-rw-r--r--modules/mono/mono_gd/gd_mono_field.h36
-rw-r--r--modules/mono/mono_gd/gd_mono_header.h5
-rw-r--r--modules/mono/mono_gd/gd_mono_internals.cpp3
-rw-r--r--modules/mono/mono_gd/gd_mono_internals.h3
-rw-r--r--modules/mono/mono_gd/gd_mono_log.cpp1
-rw-r--r--modules/mono/mono_gd/gd_mono_log.h1
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.cpp29
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.h2
-rw-r--r--modules/mono/mono_gd/gd_mono_method.cpp46
-rw-r--r--modules/mono/mono_gd/gd_mono_method.h22
-rw-r--r--modules/mono/mono_gd/gd_mono_property.cpp199
-rw-r--r--modules/mono/mono_gd/gd_mono_property.h (renamed from modules/pbm/register_types.cpp)54
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.cpp104
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.h37
-rw-r--r--modules/mono/register_types.cpp1
-rw-r--r--modules/mono/register_types.h1
-rw-r--r--modules/mono/signal_awaiter_utils.cpp3
-rw-r--r--modules/mono/signal_awaiter_utils.h1
-rw-r--r--modules/mono/utils/mono_reg_utils.cpp1
-rw-r--r--modules/mono/utils/mono_reg_utils.h1
-rw-r--r--modules/mono/utils/path_utils.cpp1
-rw-r--r--modules/mono/utils/path_utils.h1
-rw-r--r--modules/mono/utils/string_utils.cpp1
-rw-r--r--modules/mono/utils/string_utils.h1
-rw-r--r--modules/ogg/register_types.cpp1
-rw-r--r--modules/ogg/register_types.h1
-rw-r--r--modules/openssl/register_types.cpp1
-rw-r--r--modules/openssl/register_types.h1
-rw-r--r--modules/openssl/stream_peer_openssl.cpp1
-rw-r--r--modules/openssl/stream_peer_openssl.h1
-rw-r--r--modules/opus/audio_stream_opus.cpp7
-rw-r--r--modules/opus/audio_stream_opus.h6
-rw-r--r--modules/opus/register_types.cpp1
-rw-r--r--modules/opus/register_types.h1
-rw-r--r--modules/opus/stub/register_types.cpp3
-rw-r--r--modules/opus/stub/register_types.h3
-rw-r--r--modules/pbm/SCsub8
-rw-r--r--modules/pbm/bitmap_loader_pbm.cpp236
-rw-r--r--modules/pbm/config.py5
-rw-r--r--modules/pbm/register_types.h31
-rw-r--r--modules/pvr/register_types.cpp1
-rw-r--r--modules/pvr/register_types.h1
-rw-r--r--modules/pvr/texture_loader_pvr.cpp1
-rw-r--r--modules/pvr/texture_loader_pvr.h1
-rw-r--r--modules/regex/doc_classes/RegEx.xml2
-rw-r--r--modules/regex/doc_classes/RegExMatch.xml34
-rw-r--r--modules/regex/regex.cpp31
-rw-r--r--modules/register_module_types.h1
-rw-r--r--modules/squish/image_compress_squish.cpp1
-rw-r--r--modules/squish/image_compress_squish.h1
-rw-r--r--modules/squish/register_types.cpp1
-rw-r--r--modules/squish/register_types.h1
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.cpp34
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.h7
-rw-r--r--modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml50
-rw-r--r--modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml2
-rw-r--r--modules/stb_vorbis/register_types.cpp1
-rw-r--r--modules/stb_vorbis/register_types.h1
-rw-r--r--modules/stb_vorbis/resource_importer_ogg_vorbis.cpp1
-rw-r--r--modules/stb_vorbis/resource_importer_ogg_vorbis.h1
-rw-r--r--modules/svg/image_loader_svg.cpp1
-rw-r--r--modules/svg/image_loader_svg.h1
-rw-r--r--modules/svg/register_types.cpp1
-rw-r--r--modules/svg/register_types.h1
-rw-r--r--modules/tga/image_loader_tga.cpp1
-rw-r--r--modules/tga/image_loader_tga.h1
-rw-r--r--modules/tga/register_types.cpp1
-rw-r--r--modules/tga/register_types.h1
-rw-r--r--modules/thekla_unwrap/SCsub12
-rw-r--r--modules/thekla_unwrap/register_types.cpp8
-rw-r--r--modules/thekla_unwrap/register_types.h1
-rw-r--r--modules/theora/doc_classes/ResourceImporterTheora.xml2
-rw-r--r--modules/theora/doc_classes/VideoStreamTheora.xml2
-rw-r--r--modules/theora/register_types.cpp1
-rw-r--r--modules/theora/register_types.h1
-rw-r--r--modules/theora/resource_importer_theora.cpp3
-rw-r--r--modules/theora/resource_importer_theora.h3
-rw-r--r--modules/theora/video_stream_theora.cpp12
-rw-r--r--modules/theora/video_stream_theora.h1
-rw-r--r--modules/tinyexr/image_loader_tinyexr.cpp1
-rw-r--r--modules/tinyexr/image_loader_tinyexr.h1
-rw-r--r--modules/tinyexr/register_types.cpp1
-rw-r--r--modules/tinyexr/register_types.h1
-rw-r--r--modules/visual_script/doc_classes/VisualScript.xml3
-rw-r--r--modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptClassConstant.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptComment.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptCondition.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptConstant.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptConstructor.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptCustomNode.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptDeconstruct.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptEditor.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptEmitSignal.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptExpression.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptFunction.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptFunctionCall.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptFunctionState.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptIndexGet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptIndexSet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptInputAction.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptIterator.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptLocalVar.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptMathConstant.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptNode.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptOperator.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptPreload.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptPropertyGet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptPropertySet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptResourcePath.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptReturn.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSceneNode.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSceneTree.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSelect.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSelf.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSequence.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSubCall.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSwitch.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptTypeCast.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptVariableGet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptVariableSet.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptWhile.xml2
-rw-r--r--modules/visual_script/doc_classes/VisualScriptYield.xml18
-rw-r--r--modules/visual_script/doc_classes/VisualScriptYieldSignal.xml2
-rw-r--r--modules/visual_script/register_types.cpp1
-rw-r--r--modules/visual_script/register_types.h1
-rw-r--r--modules/visual_script/visual_script.cpp5
-rw-r--r--modules/visual_script/visual_script.h7
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.cpp17
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.h1
-rw-r--r--modules/visual_script/visual_script_editor.cpp4
-rw-r--r--modules/visual_script/visual_script_editor.h1
-rw-r--r--modules/visual_script/visual_script_expression.cpp1
-rw-r--r--modules/visual_script/visual_script_expression.h1
-rw-r--r--modules/visual_script/visual_script_flow_control.cpp1
-rw-r--r--modules/visual_script/visual_script_flow_control.h1
-rw-r--r--modules/visual_script/visual_script_func_nodes.cpp15
-rw-r--r--modules/visual_script/visual_script_func_nodes.h1
-rw-r--r--modules/visual_script/visual_script_nodes.cpp7
-rw-r--r--modules/visual_script/visual_script_nodes.h1
-rw-r--r--modules/visual_script/visual_script_yield_nodes.cpp1
-rw-r--r--modules/visual_script/visual_script_yield_nodes.h1
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.cpp1
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.h1
-rw-r--r--modules/vorbis/register_types.cpp1
-rw-r--r--modules/vorbis/register_types.h1
-rw-r--r--modules/vorbis/stub/register_types.cpp3
-rw-r--r--modules/vorbis/stub/register_types.h3
-rw-r--r--modules/webm/doc_classes/ResourceImporterWebm.xml2
-rw-r--r--modules/webm/doc_classes/VideoStreamWebm.xml2
-rw-r--r--modules/webm/register_types.cpp1
-rw-r--r--modules/webm/register_types.h1
-rw-r--r--modules/webm/resource_importer_webm.cpp3
-rw-r--r--modules/webm/resource_importer_webm.h3
-rw-r--r--modules/webm/video_stream_webm.cpp3
-rw-r--r--modules/webm/video_stream_webm.h6
-rw-r--r--modules/webp/image_loader_webp.cpp1
-rw-r--r--modules/webp/image_loader_webp.h1
-rw-r--r--modules/webp/register_types.cpp1
-rw-r--r--modules/webp/register_types.h1
-rw-r--r--platform/android/SCsub2
-rw-r--r--platform/android/audio_driver_jandroid.cpp1
-rw-r--r--platform/android/audio_driver_jandroid.h1
-rw-r--r--platform/android/audio_driver_opensl.cpp1
-rw-r--r--platform/android/audio_driver_opensl.h1
-rw-r--r--platform/android/build.gradle.template7
-rw-r--r--platform/android/dir_access_android.cpp1
-rw-r--r--platform/android/dir_access_android.h1
-rw-r--r--platform/android/dir_access_jandroid.cpp1
-rw-r--r--platform/android/dir_access_jandroid.h1
-rw-r--r--platform/android/export/export.cpp29
-rw-r--r--platform/android/export/export.h1
-rw-r--r--platform/android/file_access_android.cpp1
-rw-r--r--platform/android/file_access_android.h1
-rw-r--r--platform/android/file_access_jandroid.cpp1
-rw-r--r--platform/android/file_access_jandroid.h1
-rw-r--r--platform/android/globals/global_defaults.cpp1
-rw-r--r--platform/android/globals/global_defaults.h1
-rw-r--r--platform/android/godot_android.cpp1
-rw-r--r--platform/android/java/gradle/wrapper/gradle-wrapper.properties2
-rw-r--r--platform/android/java/src/org/godotengine/godot/Dictionary.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/Godot.java6
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotIO.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotLib.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotView.java3
-rw-r--r--platform/android/java/src/org/godotengine/godot/input/GodotEditText.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java12
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/Crypt.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java1
-rw-r--r--platform/android/java/src/org/godotengine/godot/utils/RequestParams.java1
-rw-r--r--platform/android/java_class_wrapper.cpp1
-rw-r--r--platform/android/java_class_wrapper.h1
-rw-r--r--platform/android/java_glue.cpp1
-rw-r--r--platform/android/java_glue.h1
-rw-r--r--platform/android/os_android.cpp51
-rw-r--r--platform/android/os_android.h6
-rw-r--r--platform/android/platform_config.h1
-rw-r--r--platform/android/thread_jandroid.cpp1
-rw-r--r--platform/android/thread_jandroid.h1
-rw-r--r--platform/haiku/audio_driver_media_kit.cpp1
-rw-r--r--platform/haiku/audio_driver_media_kit.h1
-rw-r--r--platform/haiku/context_gl_haiku.cpp1
-rw-r--r--platform/haiku/context_gl_haiku.h1
-rw-r--r--platform/haiku/godot_haiku.cpp1
-rw-r--r--platform/haiku/haiku_application.cpp1
-rw-r--r--platform/haiku/haiku_application.h1
-rw-r--r--platform/haiku/haiku_direct_window.cpp1
-rw-r--r--platform/haiku/haiku_direct_window.h1
-rw-r--r--platform/haiku/haiku_gl_view.cpp1
-rw-r--r--platform/haiku/haiku_gl_view.h1
-rw-r--r--platform/haiku/key_mapping_haiku.cpp1
-rw-r--r--platform/haiku/key_mapping_haiku.h1
-rw-r--r--platform/haiku/os_haiku.cpp11
-rw-r--r--platform/haiku/os_haiku.h4
-rw-r--r--platform/haiku/platform_config.h1
-rw-r--r--platform/iphone/app_delegate.h1
-rw-r--r--platform/iphone/app_delegate.mm1
-rw-r--r--platform/iphone/export/export.cpp2
-rw-r--r--platform/iphone/export/export.h1
-rw-r--r--platform/iphone/game_center.h1
-rw-r--r--platform/iphone/game_center.mm1
-rw-r--r--platform/iphone/gl_view.mm1
-rw-r--r--platform/iphone/globals/global_defaults.cpp1
-rw-r--r--platform/iphone/globals/global_defaults.h1
-rw-r--r--platform/iphone/godot_iphone.cpp1
-rw-r--r--platform/iphone/icloud.h1
-rw-r--r--platform/iphone/icloud.mm1
-rw-r--r--platform/iphone/in_app_store.h1
-rw-r--r--platform/iphone/in_app_store.mm1
-rw-r--r--platform/iphone/ios.h1
-rw-r--r--platform/iphone/ios.mm1
-rw-r--r--platform/iphone/main.m1
-rw-r--r--platform/iphone/os_iphone.cpp7
-rw-r--r--platform/iphone/os_iphone.h4
-rw-r--r--platform/iphone/platform_config.h1
-rw-r--r--platform/iphone/platform_refcount.h1
-rw-r--r--platform/iphone/sem_iphone.cpp1
-rw-r--r--platform/iphone/sem_iphone.h1
-rw-r--r--platform/iphone/view_controller.h1
-rw-r--r--platform/iphone/view_controller.mm1
-rw-r--r--platform/javascript/SCsub11
-rw-r--r--platform/javascript/api/api.cpp1
-rw-r--r--platform/javascript/api/api.h1
-rw-r--r--platform/javascript/api/javascript_eval.h1
-rw-r--r--platform/javascript/audio_driver_javascript.cpp1
-rw-r--r--platform/javascript/audio_driver_javascript.h1
-rw-r--r--platform/javascript/detect.py15
-rw-r--r--platform/javascript/dom_keys.h1
-rw-r--r--platform/javascript/engine.js10
-rw-r--r--platform/javascript/export/export.cpp29
-rw-r--r--platform/javascript/export/export.h1
-rw-r--r--platform/javascript/http_client_javascript.cpp3
-rw-r--r--platform/javascript/http_request.h3
-rw-r--r--platform/javascript/javascript_eval.cpp1
-rw-r--r--platform/javascript/javascript_main.cpp3
-rw-r--r--platform/javascript/os_javascript.cpp59
-rw-r--r--platform/javascript/os_javascript.h7
-rw-r--r--platform/javascript/platform_config.h1
-rw-r--r--platform/osx/SCsub3
-rw-r--r--platform/osx/crash_handler_osx.h1
-rw-r--r--platform/osx/crash_handler_osx.mm1
-rw-r--r--platform/osx/detect.py7
-rw-r--r--platform/osx/dir_access_osx.h1
-rw-r--r--platform/osx/dir_access_osx.mm1
-rw-r--r--platform/osx/export/export.cpp45
-rw-r--r--platform/osx/export/export.h1
-rw-r--r--platform/osx/godot_main_osx.mm12
-rw-r--r--platform/osx/joypad_osx.cpp1
-rw-r--r--platform/osx/joypad_osx.h1
-rw-r--r--platform/osx/os_osx.h22
-rw-r--r--platform/osx/os_osx.mm488
-rw-r--r--platform/osx/platform_config.h1
-rw-r--r--platform/osx/sem_osx.cpp1
-rw-r--r--platform/osx/sem_osx.h1
-rw-r--r--platform/register_platform_apis.h1
-rw-r--r--platform/server/detect.py12
-rw-r--r--platform/server/godot_server.cpp1
-rw-r--r--platform/server/os_server.cpp11
-rw-r--r--platform/server/os_server.h4
-rw-r--r--platform/server/platform_config.h1
-rw-r--r--platform/uwp/app.cpp1
-rw-r--r--platform/uwp/app.h1
-rw-r--r--platform/uwp/export/export.cpp11
-rw-r--r--platform/uwp/export/export.h1
-rw-r--r--platform/uwp/gl_context_egl.cpp1
-rw-r--r--platform/uwp/gl_context_egl.h1
-rw-r--r--platform/uwp/joypad_uwp.h1
-rw-r--r--platform/uwp/os_uwp.cpp54
-rw-r--r--platform/uwp/os_uwp.h8
-rw-r--r--platform/uwp/platform_config.h1
-rw-r--r--platform/uwp/thread_uwp.cpp1
-rw-r--r--platform/uwp/thread_uwp.h1
-rw-r--r--platform/windows/SCsub2
-rw-r--r--platform/windows/context_gl_win.cpp1
-rw-r--r--platform/windows/context_gl_win.h1
-rw-r--r--platform/windows/crash_handler_win.cpp1
-rw-r--r--platform/windows/crash_handler_win.h1
-rw-r--r--platform/windows/ctxgl_procaddr.cpp1
-rw-r--r--platform/windows/ctxgl_procaddr.h1
-rw-r--r--platform/windows/detect.py3
-rw-r--r--platform/windows/export/export.cpp1
-rw-r--r--platform/windows/export/export.h1
-rw-r--r--platform/windows/godot_win.cpp1
-rw-r--r--platform/windows/joypad.cpp1
-rw-r--r--platform/windows/joypad.h1
-rw-r--r--platform/windows/key_mapping_win.cpp1
-rw-r--r--platform/windows/key_mapping_win.h1
-rw-r--r--platform/windows/lang_table.h1
-rw-r--r--platform/windows/os_windows.cpp182
-rw-r--r--platform/windows/os_windows.h9
-rw-r--r--platform/windows/platform_config.h1
-rw-r--r--platform/x11/SCsub2
-rw-r--r--platform/x11/context_gl_x11.cpp1
-rw-r--r--platform/x11/context_gl_x11.h1
-rw-r--r--platform/x11/crash_handler_x11.cpp1
-rw-r--r--platform/x11/crash_handler_x11.h1
-rw-r--r--platform/x11/detect.py13
-rw-r--r--platform/x11/export/export.cpp1
-rw-r--r--platform/x11/export/export.h1
-rw-r--r--platform/x11/godot_x11.cpp1
-rw-r--r--platform/x11/key_mapping_x11.cpp1
-rw-r--r--platform/x11/key_mapping_x11.h1
-rw-r--r--platform/x11/os_x11.cpp164
-rw-r--r--platform/x11/os_x11.h6
-rw-r--r--platform/x11/platform_config.h1
-rw-r--r--scene/2d/animated_sprite.cpp3
-rw-r--r--scene/2d/animated_sprite.h1
-rw-r--r--scene/2d/area_2d.cpp13
-rw-r--r--scene/2d/area_2d.h1
-rw-r--r--scene/2d/audio_stream_player_2d.cpp31
-rw-r--r--scene/2d/audio_stream_player_2d.h30
-rw-r--r--scene/2d/back_buffer_copy.cpp1
-rw-r--r--scene/2d/back_buffer_copy.h1
-rw-r--r--scene/2d/camera_2d.cpp28
-rw-r--r--scene/2d/camera_2d.h1
-rw-r--r--scene/2d/canvas_item.cpp9
-rw-r--r--scene/2d/canvas_item.h2
-rw-r--r--scene/2d/canvas_modulate.cpp1
-rw-r--r--scene/2d/canvas_modulate.h1
-rw-r--r--scene/2d/collision_object_2d.cpp15
-rw-r--r--scene/2d/collision_object_2d.h3
-rw-r--r--scene/2d/collision_polygon_2d.cpp30
-rw-r--r--scene/2d/collision_polygon_2d.h4
-rw-r--r--scene/2d/collision_shape_2d.cpp33
-rw-r--r--scene/2d/collision_shape_2d.h4
-rw-r--r--scene/2d/joints_2d.cpp1
-rw-r--r--scene/2d/joints_2d.h1
-rw-r--r--scene/2d/light_2d.cpp1
-rw-r--r--scene/2d/light_2d.h1
-rw-r--r--scene/2d/light_occluder_2d.cpp1
-rw-r--r--scene/2d/light_occluder_2d.h1
-rw-r--r--scene/2d/line_2d.cpp27
-rw-r--r--scene/2d/line_2d.h4
-rw-r--r--scene/2d/line_builder.cpp1
-rw-r--r--scene/2d/line_builder.h1
-rw-r--r--scene/2d/navigation2d.cpp1
-rw-r--r--scene/2d/navigation2d.h1
-rw-r--r--scene/2d/navigation_polygon.cpp67
-rw-r--r--scene/2d/navigation_polygon.h10
-rw-r--r--scene/2d/node_2d.cpp23
-rw-r--r--scene/2d/node_2d.h7
-rw-r--r--scene/2d/parallax_background.cpp1
-rw-r--r--scene/2d/parallax_background.h1
-rw-r--r--scene/2d/parallax_layer.cpp1
-rw-r--r--scene/2d/parallax_layer.h1
-rw-r--r--scene/2d/particles_2d.cpp1
-rw-r--r--scene/2d/particles_2d.h1
-rw-r--r--scene/2d/path_2d.cpp135
-rw-r--r--scene/2d/path_2d.h8
-rw-r--r--scene/2d/path_texture.cpp1
-rw-r--r--scene/2d/path_texture.h1
-rw-r--r--scene/2d/physics_body_2d.cpp22
-rw-r--r--scene/2d/physics_body_2d.h1
-rw-r--r--scene/2d/polygon_2d.cpp11
-rw-r--r--scene/2d/polygon_2d.h2
-rw-r--r--scene/2d/position_2d.cpp1
-rw-r--r--scene/2d/position_2d.h1
-rw-r--r--scene/2d/ray_cast_2d.cpp1
-rw-r--r--scene/2d/ray_cast_2d.h1
-rw-r--r--scene/2d/remote_transform_2d.cpp1
-rw-r--r--scene/2d/remote_transform_2d.h6
-rw-r--r--scene/2d/screen_button.cpp1
-rw-r--r--scene/2d/screen_button.h1
-rw-r--r--scene/2d/sprite.cpp94
-rw-r--r--scene/2d/sprite.h4
-rw-r--r--scene/2d/tile_map.cpp11
-rw-r--r--scene/2d/tile_map.h1
-rw-r--r--scene/2d/visibility_notifier_2d.cpp5
-rw-r--r--scene/2d/visibility_notifier_2d.h1
-rw-r--r--scene/2d/y_sort.cpp1
-rw-r--r--scene/2d/y_sort.h1
-rw-r--r--scene/3d/area.cpp13
-rw-r--r--scene/3d/area.h1
-rw-r--r--scene/3d/audio_stream_player_3d.cpp32
-rw-r--r--scene/3d/audio_stream_player_3d.h30
-rw-r--r--scene/3d/baked_lightmap.cpp36
-rw-r--r--scene/3d/baked_lightmap.h30
-rw-r--r--scene/3d/bone_attachment.cpp49
-rw-r--r--scene/3d/bone_attachment.h5
-rw-r--r--scene/3d/camera.cpp1
-rw-r--r--scene/3d/camera.h1
-rw-r--r--scene/3d/collision_object.cpp15
-rw-r--r--scene/3d/collision_object.h3
-rw-r--r--scene/3d/collision_polygon.cpp21
-rw-r--r--scene/3d/collision_polygon.h3
-rw-r--r--scene/3d/collision_shape.cpp18
-rw-r--r--scene/3d/collision_shape.h3
-rw-r--r--scene/3d/gi_probe.cpp3
-rw-r--r--scene/3d/gi_probe.h1
-rw-r--r--scene/3d/immediate_geometry.cpp1
-rw-r--r--scene/3d/immediate_geometry.h1
-rw-r--r--scene/3d/interpolated_camera.cpp1
-rw-r--r--scene/3d/interpolated_camera.h1
-rw-r--r--scene/3d/light.cpp1
-rw-r--r--scene/3d/light.h1
-rw-r--r--scene/3d/listener.cpp1
-rw-r--r--scene/3d/listener.h1
-rw-r--r--scene/3d/mesh_instance.cpp1
-rw-r--r--scene/3d/mesh_instance.h1
-rw-r--r--scene/3d/multimesh_instance.cpp1
-rw-r--r--scene/3d/multimesh_instance.h1
-rw-r--r--scene/3d/navigation.cpp1
-rw-r--r--scene/3d/navigation.h1
-rw-r--r--scene/3d/navigation_mesh.cpp5
-rw-r--r--scene/3d/navigation_mesh.h1
-rw-r--r--scene/3d/particles.cpp18
-rw-r--r--scene/3d/particles.h1
-rw-r--r--scene/3d/path.cpp72
-rw-r--r--scene/3d/path.h5
-rw-r--r--scene/3d/physics_body.cpp18
-rw-r--r--scene/3d/physics_body.h6
-rw-r--r--scene/3d/physics_joint.cpp1
-rw-r--r--scene/3d/physics_joint.h1
-rw-r--r--scene/3d/portal.cpp1
-rw-r--r--scene/3d/portal.h1
-rw-r--r--scene/3d/position_3d.cpp1
-rw-r--r--scene/3d/position_3d.h1
-rw-r--r--scene/3d/proximity_group.cpp38
-rw-r--r--scene/3d/proximity_group.h13
-rw-r--r--scene/3d/ray_cast.cpp3
-rw-r--r--scene/3d/ray_cast.h1
-rw-r--r--scene/3d/reflection_probe.cpp3
-rw-r--r--scene/3d/reflection_probe.h1
-rw-r--r--scene/3d/remote_transform.h1
-rw-r--r--scene/3d/room_instance.cpp1
-rw-r--r--scene/3d/room_instance.h1
-rw-r--r--scene/3d/scenario_fx.cpp1
-rw-r--r--scene/3d/scenario_fx.h1
-rw-r--r--scene/3d/skeleton.cpp11
-rw-r--r--scene/3d/skeleton.h9
-rw-r--r--scene/3d/spatial.cpp97
-rw-r--r--scene/3d/spatial.h21
-rw-r--r--scene/3d/spatial_velocity_tracker.cpp32
-rw-r--r--scene/3d/spatial_velocity_tracker.h30
-rw-r--r--scene/3d/sprite_3d.cpp1
-rw-r--r--scene/3d/sprite_3d.h1
-rw-r--r--scene/3d/vehicle_body.cpp78
-rw-r--r--scene/3d/vehicle_body.h20
-rw-r--r--scene/3d/visibility_notifier.cpp7
-rw-r--r--scene/3d/visibility_notifier.h1
-rw-r--r--scene/3d/visual_instance.cpp1
-rw-r--r--scene/3d/visual_instance.h1
-rw-r--r--scene/3d/voxel_light_baker.cpp26
-rw-r--r--scene/3d/voxel_light_baker.h4
-rw-r--r--scene/animation/animation_cache.cpp5
-rw-r--r--scene/animation/animation_cache.h1
-rw-r--r--scene/animation/animation_player.cpp161
-rw-r--r--scene/animation/animation_player.h5
-rw-r--r--scene/animation/animation_tree_player.cpp1
-rw-r--r--scene/animation/animation_tree_player.h1
-rw-r--r--scene/animation/tween.cpp94
-rw-r--r--scene/animation/tween.h1
-rw-r--r--scene/animation/tween_interpolaters.cpp1
-rw-r--r--scene/audio/audio_player.cpp1
-rw-r--r--scene/audio/audio_player.h1
-rw-r--r--scene/gui/base_button.cpp15
-rw-r--r--scene/gui/base_button.h5
-rw-r--r--scene/gui/box_container.cpp1
-rw-r--r--scene/gui/box_container.h1
-rw-r--r--scene/gui/button.cpp1
-rw-r--r--scene/gui/button.h1
-rw-r--r--scene/gui/center_container.cpp1
-rw-r--r--scene/gui/center_container.h1
-rw-r--r--scene/gui/check_box.cpp3
-rw-r--r--scene/gui/check_box.h1
-rw-r--r--scene/gui/check_button.cpp1
-rw-r--r--scene/gui/check_button.h1
-rw-r--r--scene/gui/color_picker.cpp6
-rw-r--r--scene/gui/color_picker.h1
-rw-r--r--scene/gui/color_rect.cpp1
-rw-r--r--scene/gui/color_rect.h1
-rw-r--r--scene/gui/container.cpp1
-rw-r--r--scene/gui/container.h1
-rw-r--r--scene/gui/control.cpp36
-rw-r--r--scene/gui/control.h5
-rw-r--r--scene/gui/dialogs.cpp1
-rw-r--r--scene/gui/dialogs.h1
-rw-r--r--scene/gui/file_dialog.cpp16
-rw-r--r--scene/gui/file_dialog.h1
-rw-r--r--scene/gui/gradient_edit.cpp3
-rw-r--r--scene/gui/gradient_edit.h14
-rw-r--r--scene/gui/graph_edit.cpp16
-rw-r--r--scene/gui/graph_edit.h3
-rw-r--r--scene/gui/graph_node.cpp5
-rw-r--r--scene/gui/graph_node.h1
-rw-r--r--scene/gui/grid_container.cpp1
-rw-r--r--scene/gui/grid_container.h1
-rw-r--r--scene/gui/item_list.cpp13
-rw-r--r--scene/gui/item_list.h5
-rw-r--r--scene/gui/label.cpp4
-rw-r--r--scene/gui/label.h1
-rw-r--r--scene/gui/line_edit.cpp20
-rw-r--r--scene/gui/line_edit.h1
-rw-r--r--scene/gui/link_button.cpp1
-rw-r--r--scene/gui/link_button.h1
-rw-r--r--scene/gui/margin_container.cpp1
-rw-r--r--scene/gui/margin_container.h1
-rw-r--r--scene/gui/menu_button.cpp3
-rw-r--r--scene/gui/menu_button.h1
-rw-r--r--scene/gui/nine_patch_rect.cpp1
-rw-r--r--scene/gui/nine_patch_rect.h1
-rw-r--r--scene/gui/option_button.cpp3
-rw-r--r--scene/gui/option_button.h1
-rw-r--r--scene/gui/panel.cpp1
-rw-r--r--scene/gui/panel.h1
-rw-r--r--scene/gui/panel_container.cpp1
-rw-r--r--scene/gui/panel_container.h1
-rw-r--r--scene/gui/popup.cpp1
-rw-r--r--scene/gui/popup.h1
-rw-r--r--scene/gui/popup_menu.cpp66
-rw-r--r--scene/gui/popup_menu.h2
-rw-r--r--scene/gui/progress_bar.cpp1
-rw-r--r--scene/gui/progress_bar.h1
-rw-r--r--scene/gui/range.cpp2
-rw-r--r--scene/gui/range.h1
-rw-r--r--scene/gui/reference_rect.cpp1
-rw-r--r--scene/gui/reference_rect.h1
-rw-r--r--scene/gui/rich_text_label.cpp41
-rw-r--r--scene/gui/rich_text_label.h1
-rw-r--r--scene/gui/scroll_bar.cpp9
-rw-r--r--scene/gui/scroll_bar.h1
-rw-r--r--scene/gui/scroll_container.cpp11
-rw-r--r--scene/gui/scroll_container.h1
-rw-r--r--scene/gui/separator.cpp1
-rw-r--r--scene/gui/separator.h1
-rw-r--r--scene/gui/shortcut.cpp1
-rw-r--r--scene/gui/shortcut.h1
-rw-r--r--scene/gui/slider.cpp1
-rw-r--r--scene/gui/slider.h1
-rw-r--r--scene/gui/spin_box.cpp1
-rw-r--r--scene/gui/spin_box.h1
-rw-r--r--scene/gui/split_container.cpp1
-rw-r--r--scene/gui/split_container.h1
-rw-r--r--scene/gui/tab_container.cpp1
-rw-r--r--scene/gui/tab_container.h1
-rw-r--r--scene/gui/tabs.cpp2
-rw-r--r--scene/gui/tabs.h1
-rw-r--r--scene/gui/text_edit.cpp249
-rw-r--r--scene/gui/text_edit.h9
-rw-r--r--scene/gui/texture_button.cpp1
-rw-r--r--scene/gui/texture_button.h1
-rw-r--r--scene/gui/texture_progress.cpp1
-rw-r--r--scene/gui/texture_progress.h1
-rw-r--r--scene/gui/texture_rect.cpp1
-rw-r--r--scene/gui/texture_rect.h1
-rw-r--r--scene/gui/tool_button.cpp1
-rw-r--r--scene/gui/tool_button.h1
-rw-r--r--scene/gui/tree.cpp133
-rw-r--r--scene/gui/tree.h7
-rw-r--r--scene/gui/video_player.cpp13
-rw-r--r--scene/gui/video_player.h3
-rw-r--r--scene/gui/viewport_container.cpp29
-rw-r--r--scene/gui/viewport_container.h2
-rw-r--r--scene/main/canvas_layer.cpp6
-rw-r--r--scene/main/canvas_layer.h1
-rw-r--r--scene/main/http_request.cpp2
-rw-r--r--scene/main/http_request.h1
-rw-r--r--scene/main/instance_placeholder.cpp1
-rw-r--r--scene/main/instance_placeholder.h1
-rw-r--r--scene/main/node.cpp34
-rw-r--r--scene/main/node.h1
-rw-r--r--scene/main/resource_preloader.cpp3
-rw-r--r--scene/main/resource_preloader.h1
-rw-r--r--scene/main/scene_tree.cpp24
-rw-r--r--scene/main/scene_tree.h2
-rwxr-xr-xscene/main/timer.cpp3
-rwxr-xr-xscene/main/timer.h1
-rw-r--r--scene/main/viewport.cpp151
-rw-r--r--scene/main/viewport.h11
-rw-r--r--scene/register_scene_types.cpp83
-rw-r--r--scene/register_scene_types.h1
-rw-r--r--scene/resources/animation.cpp32
-rw-r--r--scene/resources/animation.h1
-rw-r--r--scene/resources/audio_stream_sample.cpp41
-rw-r--r--scene/resources/audio_stream_sample.h5
-rw-r--r--scene/resources/bit_mask.cpp11
-rw-r--r--scene/resources/bit_mask.h2
-rw-r--r--scene/resources/bounds.cpp1
-rw-r--r--scene/resources/bounds.h1
-rw-r--r--scene/resources/box_shape.cpp1
-rw-r--r--scene/resources/box_shape.h1
-rw-r--r--scene/resources/canvas.cpp1
-rw-r--r--scene/resources/canvas.h1
-rw-r--r--scene/resources/capsule_shape.cpp1
-rw-r--r--scene/resources/capsule_shape.h1
-rw-r--r--scene/resources/capsule_shape_2d.cpp30
-rw-r--r--scene/resources/capsule_shape_2d.h4
-rw-r--r--scene/resources/circle_shape_2d.cpp7
-rw-r--r--scene/resources/circle_shape_2d.h3
-rw-r--r--scene/resources/color_ramp.cpp1
-rw-r--r--scene/resources/color_ramp.h1
-rw-r--r--scene/resources/concave_polygon_shape.cpp25
-rw-r--r--scene/resources/concave_polygon_shape.h4
-rw-r--r--scene/resources/concave_polygon_shape_2d.cpp18
-rw-r--r--scene/resources/concave_polygon_shape_2d.h3
-rw-r--r--scene/resources/convex_polygon_shape.cpp1
-rw-r--r--scene/resources/convex_polygon_shape.h1
-rw-r--r--scene/resources/convex_polygon_shape_2d.cpp6
-rw-r--r--scene/resources/convex_polygon_shape_2d.h3
-rw-r--r--scene/resources/curve.cpp7
-rw-r--r--scene/resources/curve.h1
-rw-r--r--scene/resources/default_theme/default_theme.cpp4
-rw-r--r--scene/resources/dynamic_font.cpp27
-rw-r--r--scene/resources/dynamic_font.h17
-rw-r--r--scene/resources/dynamic_font_stb.cpp1
-rw-r--r--scene/resources/dynamic_font_stb.h1
-rw-r--r--scene/resources/environment.cpp11
-rw-r--r--scene/resources/environment.h1
-rw-r--r--scene/resources/font.cpp46
-rw-r--r--scene/resources/font.h9
-rw-r--r--scene/resources/material.cpp51
-rw-r--r--scene/resources/material.h1
-rw-r--r--scene/resources/mesh.cpp21
-rw-r--r--scene/resources/mesh.h1
-rw-r--r--scene/resources/mesh_data_tool.cpp1
-rw-r--r--scene/resources/mesh_data_tool.h1
-rw-r--r--scene/resources/mesh_library.cpp1
-rw-r--r--scene/resources/mesh_library.h1
-rw-r--r--scene/resources/multimesh.cpp5
-rw-r--r--scene/resources/multimesh.h1
-rw-r--r--scene/resources/packed_scene.cpp9
-rw-r--r--scene/resources/packed_scene.h1
-rw-r--r--scene/resources/plane_shape.cpp1
-rw-r--r--scene/resources/plane_shape.h1
-rw-r--r--scene/resources/polygon_path_finder.cpp3
-rw-r--r--scene/resources/polygon_path_finder.h1
-rw-r--r--scene/resources/primitive_meshes.h2
-rw-r--r--scene/resources/ray_shape.cpp1
-rw-r--r--scene/resources/ray_shape.h1
-rw-r--r--scene/resources/rectangle_shape_2d.cpp1
-rw-r--r--scene/resources/rectangle_shape_2d.h1
-rw-r--r--scene/resources/room.cpp1
-rw-r--r--scene/resources/room.h1
-rw-r--r--scene/resources/scene_format_text.cpp5
-rw-r--r--scene/resources/scene_format_text.h5
-rw-r--r--scene/resources/segment_shape_2d.cpp8
-rw-r--r--scene/resources/segment_shape_2d.h3
-rw-r--r--scene/resources/shader.cpp1
-rw-r--r--scene/resources/shader.h1
-rw-r--r--scene/resources/shader_graph.cpp3
-rw-r--r--scene/resources/shader_graph.h1
-rw-r--r--scene/resources/shape.cpp1
-rw-r--r--scene/resources/shape.h1
-rw-r--r--scene/resources/shape_2d.cpp1
-rw-r--r--scene/resources/shape_2d.h3
-rw-r--r--scene/resources/shape_line_2d.cpp16
-rw-r--r--scene/resources/shape_line_2d.h3
-rw-r--r--scene/resources/sky_box.cpp1
-rw-r--r--scene/resources/sky_box.h7
-rw-r--r--scene/resources/space_2d.cpp1
-rw-r--r--scene/resources/space_2d.h1
-rw-r--r--scene/resources/sphere_shape.cpp1
-rw-r--r--scene/resources/sphere_shape.h1
-rw-r--r--scene/resources/style_box.cpp2
-rw-r--r--scene/resources/style_box.h1
-rw-r--r--scene/resources/surface_tool.cpp1
-rw-r--r--scene/resources/surface_tool.h1
-rw-r--r--scene/resources/texture.cpp26
-rw-r--r--scene/resources/texture.h1
-rw-r--r--scene/resources/theme.cpp1
-rw-r--r--scene/resources/theme.h1
-rw-r--r--scene/resources/tile_set.cpp22
-rw-r--r--scene/resources/tile_set.h1
-rw-r--r--scene/resources/video_stream.cpp1
-rw-r--r--scene/resources/video_stream.h1
-rw-r--r--scene/resources/world.cpp4
-rw-r--r--scene/resources/world.h1
-rw-r--r--scene/resources/world_2d.cpp5
-rw-r--r--scene/resources/world_2d.h1
-rw-r--r--scene/scene_string_names.cpp2
-rw-r--r--scene/scene_string_names.h2
-rw-r--r--servers/arvr/arvr_interface.cpp1
-rw-r--r--servers/arvr/arvr_interface.h1
-rw-r--r--servers/arvr/arvr_positional_tracker.cpp3
-rw-r--r--servers/arvr/arvr_positional_tracker.h1
-rw-r--r--servers/arvr_server.cpp10
-rw-r--r--servers/arvr_server.h4
-rw-r--r--servers/audio/audio_driver_dummy.cpp1
-rw-r--r--servers/audio/audio_driver_dummy.h1
-rw-r--r--servers/audio/audio_effect.cpp1
-rw-r--r--servers/audio/audio_effect.h1
-rw-r--r--servers/audio/audio_filter_sw.cpp1
-rw-r--r--servers/audio/audio_filter_sw.h1
-rw-r--r--servers/audio/audio_rb_resampler.cpp3
-rw-r--r--servers/audio/audio_rb_resampler.h1
-rw-r--r--servers/audio/audio_stream.cpp24
-rw-r--r--servers/audio/audio_stream.h12
-rw-r--r--servers/audio/effects/audio_effect_amplify.cpp1
-rw-r--r--servers/audio/effects/audio_effect_amplify.h1
-rw-r--r--servers/audio/effects/audio_effect_chorus.cpp1
-rw-r--r--servers/audio/effects/audio_effect_chorus.h1
-rw-r--r--servers/audio/effects/audio_effect_compressor.cpp1
-rw-r--r--servers/audio/effects/audio_effect_compressor.h1
-rw-r--r--servers/audio/effects/audio_effect_delay.cpp1
-rw-r--r--servers/audio/effects/audio_effect_delay.h1
-rw-r--r--servers/audio/effects/audio_effect_distortion.cpp1
-rw-r--r--servers/audio/effects/audio_effect_distortion.h1
-rw-r--r--servers/audio/effects/audio_effect_eq.cpp1
-rw-r--r--servers/audio/effects/audio_effect_eq.h1
-rw-r--r--servers/audio/effects/audio_effect_filter.cpp1
-rw-r--r--servers/audio/effects/audio_effect_filter.h1
-rw-r--r--servers/audio/effects/audio_effect_limiter.cpp1
-rw-r--r--servers/audio/effects/audio_effect_limiter.h1
-rw-r--r--servers/audio/effects/audio_effect_panner.cpp1
-rw-r--r--servers/audio/effects/audio_effect_panner.h1
-rw-r--r--servers/audio/effects/audio_effect_phaser.cpp1
-rw-r--r--servers/audio/effects/audio_effect_phaser.h1
-rw-r--r--servers/audio/effects/audio_effect_pitch_shift.cpp1
-rw-r--r--servers/audio/effects/audio_effect_pitch_shift.h1
-rw-r--r--servers/audio/effects/audio_effect_reverb.cpp5
-rw-r--r--servers/audio/effects/audio_effect_reverb.h1
-rw-r--r--servers/audio/effects/audio_effect_stereo_enhance.cpp1
-rw-r--r--servers/audio/effects/audio_effect_stereo_enhance.h1
-rw-r--r--servers/audio/reverb_sw.cpp1
-rw-r--r--servers/audio/reverb_sw.h1
-rw-r--r--servers/audio/voice_rb_sw.h1
-rw-r--r--servers/audio_server.cpp18
-rw-r--r--servers/audio_server.h1
-rw-r--r--servers/physics/area_pair_sw.cpp1
-rw-r--r--servers/physics/area_pair_sw.h1
-rw-r--r--servers/physics/area_sw.cpp1
-rw-r--r--servers/physics/area_sw.h1
-rw-r--r--servers/physics/body_pair_sw.cpp1
-rw-r--r--servers/physics/body_pair_sw.h1
-rw-r--r--servers/physics/body_sw.cpp1
-rw-r--r--servers/physics/body_sw.h1
-rw-r--r--servers/physics/broad_phase_basic.cpp1
-rw-r--r--servers/physics/broad_phase_basic.h1
-rw-r--r--servers/physics/broad_phase_octree.cpp1
-rw-r--r--servers/physics/broad_phase_octree.h1
-rw-r--r--servers/physics/broad_phase_sw.cpp1
-rw-r--r--servers/physics/broad_phase_sw.h1
-rw-r--r--servers/physics/collision_object_sw.cpp1
-rw-r--r--servers/physics/collision_object_sw.h1
-rw-r--r--servers/physics/collision_solver_sat.cpp1
-rw-r--r--servers/physics/collision_solver_sat.h1
-rw-r--r--servers/physics/collision_solver_sw.cpp1
-rw-r--r--servers/physics/collision_solver_sw.h1
-rw-r--r--servers/physics/constraint_sw.h1
-rw-r--r--servers/physics/gjk_epa.cpp1
-rw-r--r--servers/physics/gjk_epa.h1
-rw-r--r--servers/physics/joints_sw.h1
-rw-r--r--servers/physics/physics_server_sw.cpp1
-rw-r--r--servers/physics/physics_server_sw.h1
-rw-r--r--servers/physics/shape_sw.cpp1
-rw-r--r--servers/physics/shape_sw.h1
-rw-r--r--servers/physics/space_sw.cpp1
-rw-r--r--servers/physics/space_sw.h1
-rw-r--r--servers/physics/step_sw.cpp1
-rw-r--r--servers/physics/step_sw.h1
-rw-r--r--servers/physics_2d/area_2d_sw.cpp1
-rw-r--r--servers/physics_2d/area_2d_sw.h1
-rw-r--r--servers/physics_2d/area_pair_2d_sw.cpp1
-rw-r--r--servers/physics_2d/area_pair_2d_sw.h1
-rw-r--r--servers/physics_2d/body_2d_sw.cpp1
-rw-r--r--servers/physics_2d/body_2d_sw.h1
-rw-r--r--servers/physics_2d/body_pair_2d_sw.cpp1
-rw-r--r--servers/physics_2d/body_pair_2d_sw.h1
-rw-r--r--servers/physics_2d/broad_phase_2d_basic.cpp1
-rw-r--r--servers/physics_2d/broad_phase_2d_basic.h1
-rw-r--r--servers/physics_2d/broad_phase_2d_hash_grid.cpp1
-rw-r--r--servers/physics_2d/broad_phase_2d_hash_grid.h1
-rw-r--r--servers/physics_2d/broad_phase_2d_sw.cpp1
-rw-r--r--servers/physics_2d/broad_phase_2d_sw.h1
-rw-r--r--servers/physics_2d/collision_object_2d_sw.cpp1
-rw-r--r--servers/physics_2d/collision_object_2d_sw.h1
-rw-r--r--servers/physics_2d/collision_solver_2d_sat.cpp1
-rw-r--r--servers/physics_2d/collision_solver_2d_sat.h1
-rw-r--r--servers/physics_2d/collision_solver_2d_sw.cpp1
-rw-r--r--servers/physics_2d/collision_solver_2d_sw.h1
-rw-r--r--servers/physics_2d/constraint_2d_sw.h1
-rw-r--r--servers/physics_2d/joints_2d_sw.cpp1
-rw-r--r--servers/physics_2d/joints_2d_sw.h1
-rw-r--r--servers/physics_2d/physics_2d_server_sw.cpp1
-rw-r--r--servers/physics_2d/physics_2d_server_sw.h1
-rw-r--r--servers/physics_2d/physics_2d_server_wrap_mt.cpp1
-rw-r--r--servers/physics_2d/physics_2d_server_wrap_mt.h1
-rw-r--r--servers/physics_2d/shape_2d_sw.cpp1
-rw-r--r--servers/physics_2d/shape_2d_sw.h1
-rw-r--r--servers/physics_2d/space_2d_sw.cpp1
-rw-r--r--servers/physics_2d/space_2d_sw.h1
-rw-r--r--servers/physics_2d/step_2d_sw.cpp1
-rw-r--r--servers/physics_2d/step_2d_sw.h1
-rw-r--r--servers/physics_2d_server.cpp30
-rw-r--r--servers/physics_2d_server.h1
-rw-r--r--servers/physics_server.cpp21
-rw-r--r--servers/physics_server.h1
-rw-r--r--servers/register_server_types.cpp1
-rw-r--r--servers/register_server_types.h1
-rw-r--r--servers/visual/rasterizer.cpp1
-rw-r--r--servers/visual/rasterizer.h1
-rw-r--r--servers/visual/shader_language.cpp7
-rw-r--r--servers/visual/shader_language.h1
-rw-r--r--servers/visual/shader_types.cpp1
-rw-r--r--servers/visual/shader_types.h1
-rw-r--r--servers/visual/visual_server_canvas.cpp9
-rw-r--r--servers/visual/visual_server_canvas.h7
-rw-r--r--servers/visual/visual_server_global.cpp1
-rw-r--r--servers/visual/visual_server_global.h1
-rw-r--r--servers/visual/visual_server_light_baker.cpp1
-rw-r--r--servers/visual/visual_server_light_baker.h1
-rw-r--r--servers/visual/visual_server_raster.cpp1
-rw-r--r--servers/visual/visual_server_raster.h3
-rw-r--r--servers/visual/visual_server_scene.cpp5
-rw-r--r--servers/visual/visual_server_scene.h1
-rw-r--r--servers/visual/visual_server_viewport.cpp3
-rw-r--r--servers/visual/visual_server_viewport.h1
-rw-r--r--servers/visual/visual_server_wrap_mt.cpp2
-rw-r--r--servers/visual/visual_server_wrap_mt.h6
-rw-r--r--servers/visual_server.cpp29
-rw-r--r--servers/visual_server.h3
-rw-r--r--thirdparty/README.md116
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h (renamed from thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Config.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h)0
-rw-r--r--thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h (renamed from thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3AlignedAllocator.cpp (renamed from thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3AlignedAllocator.h (renamed from thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3AlignedObjectArray.h (renamed from thirdparty/bullet/src/Bullet3Common/b3AlignedObjectArray.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3CommandLineArgs.h (renamed from thirdparty/bullet/src/Bullet3Common/b3CommandLineArgs.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3FileUtils.h (renamed from thirdparty/bullet/src/Bullet3Common/b3FileUtils.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3HashMap.h (renamed from thirdparty/bullet/src/Bullet3Common/b3HashMap.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Logging.cpp (renamed from thirdparty/bullet/src/Bullet3Common/b3Logging.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Logging.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Logging.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Matrix3x3.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Matrix3x3.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3MinMax.h (renamed from thirdparty/bullet/src/Bullet3Common/b3MinMax.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3PoolAllocator.h (renamed from thirdparty/bullet/src/Bullet3Common/b3PoolAllocator.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3QuadWord.h (renamed from thirdparty/bullet/src/Bullet3Common/b3QuadWord.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Quaternion.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Quaternion.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Random.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Random.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3ResizablePool.h (renamed from thirdparty/bullet/src/Bullet3Common/b3ResizablePool.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Scalar.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Scalar.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3StackAlloc.h (renamed from thirdparty/bullet/src/Bullet3Common/b3StackAlloc.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Transform.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Transform.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3TransformUtil.h (renamed from thirdparty/bullet/src/Bullet3Common/b3TransformUtil.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Vector3.cpp (renamed from thirdparty/bullet/src/Bullet3Common/b3Vector3.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Common/b3Vector3.h (renamed from thirdparty/bullet/src/Bullet3Common/b3Vector3.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3Float4.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3Float4.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3Int2.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3Int2.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3Int4.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3Int4.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3Mat3x3.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3Mat3x3.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3PlatformDefinitions.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3PlatformDefinitions.h)0
-rw-r--r--thirdparty/bullet/Bullet3Common/shared/b3Quat.h (renamed from thirdparty/bullet/src/Bullet3Common/shared/b3Quat.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp (renamed from thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/shared/b3ContactConstraint4.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/shared/b3ContactConstraint4.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/shared/b3ConvertConstraint4.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/shared/b3Inertia.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/shared/b3Inertia.h)0
-rw-r--r--thirdparty/bullet/Bullet3Dynamics/shared/b3IntegrateTransforms.h (renamed from thirdparty/bullet/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3AabbUtil.h (renamed from thirdparty/bullet/src/Bullet3Geometry/b3AabbUtil.h)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.cpp (renamed from thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.h (renamed from thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.h)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.cpp (renamed from thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.h (renamed from thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.h)0
-rw-r--r--thirdparty/bullet/Bullet3Geometry/b3GrahamScan2dConvexHull.h (renamed from thirdparty/bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLInclude.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.cpp (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl)0
-rw-r--r--thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h (renamed from thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp)0
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h (renamed from thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h (renamed from thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMaterial.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMaterial.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h (renamed from thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btBoxCollision.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btBoxCollision.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btClipPolygon.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btClipPolygon.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btCompoundFromGimpact.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessingStructs.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvhStructs.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactMassUtil.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btGeometryOperations.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btGeometryOperations.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btQuantization.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btQuantization.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_array.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_array.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_bitset.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_bitset.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_box_collision.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_collision.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_clip_polygon.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_clip_polygon.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_contact.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_contact.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_geom_types.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_geom_types.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_geometry.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_geometry.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_hash_table.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_hash_table.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_linear_math.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_linear_math.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_math.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_math.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_memory.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_memory.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_radixsort.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_radixsort.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.h (renamed from thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h (renamed from thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Character/btCharacterControllerInterface.h (renamed from thirdparty/bullet/src/BulletDynamics/Character/btCharacterControllerInterface.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.h (renamed from thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverBody.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btActionInterface.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btActionInterface.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h (renamed from thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLink.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h (renamed from thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btPATHSolver.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btPATHSolver.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h (renamed from thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h (renamed from thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h (renamed from thirdparty/bullet/src/BulletDynamics/Vehicle/btVehicleRaycaster.h)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp (renamed from thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp)0
-rw-r--r--thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.h (renamed from thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.h)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDConfig.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDConfig.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDConfigBuiltin.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDConfigBuiltin.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDConfigEigen.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDConfigEigen.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDErrorMessages.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDErrorMessages.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDMath.cpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDMath.cpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/IDMath.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/IDMath.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.cpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.cpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/IDEigenInterface.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/IDEigenInterface.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/IDLinearMathInterface.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/IDMatVec.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/IDMatVec.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp)0
-rw-r--r--thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp (renamed from thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.h (renamed from thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBody.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBody.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBody.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBody.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyData.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyData.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyInternals.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyInternals.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftBodySolvers.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftBodySolvers.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h)0
-rw-r--r--thirdparty/bullet/BulletSoftBody/btSparseSDF.h (renamed from thirdparty/bullet/src/BulletSoftBody/btSparseSDF.h)0
-rw-r--r--thirdparty/bullet/LICENSE.txt15
-rw-r--r--thirdparty/bullet/LinearMath/btAabbUtil2.h (renamed from thirdparty/bullet/src/LinearMath/btAabbUtil2.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btAlignedAllocator.cpp (renamed from thirdparty/bullet/src/LinearMath/btAlignedAllocator.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btAlignedAllocator.h (renamed from thirdparty/bullet/src/LinearMath/btAlignedAllocator.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btAlignedObjectArray.h (renamed from thirdparty/bullet/src/LinearMath/btAlignedObjectArray.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btConvexHull.cpp (renamed from thirdparty/bullet/src/LinearMath/btConvexHull.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btConvexHull.h (renamed from thirdparty/bullet/src/LinearMath/btConvexHull.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btConvexHullComputer.cpp (renamed from thirdparty/bullet/src/LinearMath/btConvexHullComputer.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btConvexHullComputer.h (renamed from thirdparty/bullet/src/LinearMath/btConvexHullComputer.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btCpuFeatureUtility.h (renamed from thirdparty/bullet/src/LinearMath/btCpuFeatureUtility.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btDefaultMotionState.h (renamed from thirdparty/bullet/src/LinearMath/btDefaultMotionState.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btGeometryUtil.cpp (renamed from thirdparty/bullet/src/LinearMath/btGeometryUtil.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btGeometryUtil.h (renamed from thirdparty/bullet/src/LinearMath/btGeometryUtil.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btGrahamScan2dConvexHull.h (renamed from thirdparty/bullet/src/LinearMath/btGrahamScan2dConvexHull.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btHashMap.h (renamed from thirdparty/bullet/src/LinearMath/btHashMap.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btIDebugDraw.h (renamed from thirdparty/bullet/src/LinearMath/btIDebugDraw.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btList.h (renamed from thirdparty/bullet/src/LinearMath/btList.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btMatrix3x3.h (renamed from thirdparty/bullet/src/LinearMath/btMatrix3x3.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btMatrixX.h (renamed from thirdparty/bullet/src/LinearMath/btMatrixX.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btMinMax.h (renamed from thirdparty/bullet/src/LinearMath/btMinMax.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btMotionState.h (renamed from thirdparty/bullet/src/LinearMath/btMotionState.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btPolarDecomposition.cpp (renamed from thirdparty/bullet/src/LinearMath/btPolarDecomposition.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btPolarDecomposition.h (renamed from thirdparty/bullet/src/LinearMath/btPolarDecomposition.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btPoolAllocator.h (renamed from thirdparty/bullet/src/LinearMath/btPoolAllocator.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btQuadWord.h (renamed from thirdparty/bullet/src/LinearMath/btQuadWord.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btQuaternion.h (renamed from thirdparty/bullet/src/LinearMath/btQuaternion.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btQuickprof.cpp (renamed from thirdparty/bullet/src/LinearMath/btQuickprof.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btQuickprof.h (renamed from thirdparty/bullet/src/LinearMath/btQuickprof.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btRandom.h (renamed from thirdparty/bullet/src/LinearMath/btRandom.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btScalar.h (renamed from thirdparty/bullet/src/LinearMath/btScalar.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btSerializer.cpp (renamed from thirdparty/bullet/src/LinearMath/btSerializer.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btSerializer.h (renamed from thirdparty/bullet/src/LinearMath/btSerializer.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btSerializer64.cpp (renamed from thirdparty/bullet/src/LinearMath/btSerializer64.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btSpatialAlgebra.h (renamed from thirdparty/bullet/src/LinearMath/btSpatialAlgebra.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btStackAlloc.h (renamed from thirdparty/bullet/src/LinearMath/btStackAlloc.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btThreads.cpp (renamed from thirdparty/bullet/src/LinearMath/btThreads.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btThreads.h (renamed from thirdparty/bullet/src/LinearMath/btThreads.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btTransform.h (renamed from thirdparty/bullet/src/LinearMath/btTransform.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btTransformUtil.h (renamed from thirdparty/bullet/src/LinearMath/btTransformUtil.h)0
-rw-r--r--thirdparty/bullet/LinearMath/btVector3.cpp (renamed from thirdparty/bullet/src/LinearMath/btVector3.cpp)0
-rw-r--r--thirdparty/bullet/LinearMath/btVector3.h (renamed from thirdparty/bullet/src/LinearMath/btVector3.h)0
-rw-r--r--thirdparty/bullet/btBulletCollisionCommon.h (renamed from thirdparty/bullet/src/btBulletCollisionCommon.h)0
-rw-r--r--thirdparty/bullet/btBulletDynamicsCommon.h (renamed from thirdparty/bullet/src/btBulletDynamicsCommon.h)0
-rw-r--r--thirdparty/bullet/clew/clew.c (renamed from thirdparty/bullet/src/clew/clew.c)0
-rw-r--r--thirdparty/bullet/clew/clew.h (renamed from thirdparty/bullet/src/clew/clew.h)0
-rw-r--r--thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt93
-rw-r--r--thirdparty/bullet/src/Bullet3Collision/premake4.lua13
-rw-r--r--thirdparty/bullet/src/Bullet3Common/CMakeLists.txt63
-rw-r--r--thirdparty/bullet/src/Bullet3Common/premake4.lua12
-rw-r--r--thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt61
-rw-r--r--thirdparty/bullet/src/Bullet3Dynamics/premake4.lua15
-rw-r--r--thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt47
-rw-r--r--thirdparty/bullet/src/Bullet3Geometry/premake4.lua13
-rw-r--r--thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt77
-rw-r--r--thirdparty/bullet/src/Bullet3OpenCL/premake4.lua29
-rw-r--r--thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt55
-rw-r--r--thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua12
-rw-r--r--thirdparty/bullet/src/BulletCollision/CMakeLists.txt292
-rw-r--r--thirdparty/bullet/src/BulletCollision/premake4.lua20
-rw-r--r--thirdparty/bullet/src/BulletDynamics/CMakeLists.txt170
-rw-r--r--thirdparty/bullet/src/BulletDynamics/premake4.lua21
-rw-r--r--thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt66
-rw-r--r--thirdparty/bullet/src/BulletInverseDynamics/premake4.lua12
-rw-r--r--thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt69
-rw-r--r--thirdparty/bullet/src/BulletSoftBody/premake4.lua11
-rw-r--r--thirdparty/bullet/src/CMakeLists.txt19
-rw-r--r--thirdparty/bullet/src/LinearMath/CMakeLists.txt75
-rw-r--r--thirdparty/bullet/src/LinearMath/premake4.lua10
-rw-r--r--thirdparty/bullet/version.txt1
-rw-r--r--thirdparty/libogg/bitwise.c2
-rw-r--r--thirdparty/libogg/framing.c33
-rw-r--r--thirdparty/libogg/ogg/ogg.h2
-rw-r--r--thirdparty/libogg/ogg/os_types.h33
-rw-r--r--thirdparty/openssl/LICENSE4
-rw-r--r--thirdparty/openssl/crypto/LPdir_win.c19
-rw-r--r--thirdparty/openssl/crypto/asn1/a_bitstr.c6
-rw-r--r--thirdparty/openssl/crypto/asn1/a_i2d_fp.c3
-rw-r--r--thirdparty/openssl/crypto/asn1/asn1_int.h63
-rw-r--r--thirdparty/openssl/crypto/asn1/tasn_fre.c7
-rw-r--r--thirdparty/openssl/crypto/asn1/tasn_new.c5
-rw-r--r--thirdparty/openssl/crypto/asn1/x_name.c18
-rw-r--r--thirdparty/openssl/crypto/asn1/x_pkey.c21
-rw-r--r--thirdparty/openssl/crypto/bio/b_print.c4
-rw-r--r--thirdparty/openssl/crypto/bn/bn_exp.c30
-rw-r--r--thirdparty/openssl/crypto/bn/bn_lib.c3
-rw-r--r--thirdparty/openssl/crypto/bn/bn_mont.c3
-rw-r--r--thirdparty/openssl/crypto/bn/bn_mul.c40
-rw-r--r--thirdparty/openssl/crypto/bn/bn_x931p.c8
-rw-r--r--thirdparty/openssl/crypto/cryptlib.c7
-rw-r--r--thirdparty/openssl/crypto/dh/dh_kdf.c4
-rw-r--r--thirdparty/openssl/crypto/dh/dh_pmeth.c9
-rw-r--r--thirdparty/openssl/crypto/dsa/dsa_ameth.c9
-rw-r--r--thirdparty/openssl/crypto/dsa/dsa_gen.c2
-rw-r--r--thirdparty/openssl/crypto/dsa/dsa_ossl.c42
-rw-r--r--thirdparty/openssl/crypto/ec/ecp_mont.c2
-rw-r--r--thirdparty/openssl/crypto/ec/ecp_nistp224.c3
-rw-r--r--thirdparty/openssl/crypto/ec/ecp_nistp256.c3
-rw-r--r--thirdparty/openssl/crypto/ec/ecp_nistp521.c3
-rw-r--r--thirdparty/openssl/crypto/ecdh/ech_lib.c9
-rw-r--r--thirdparty/openssl/crypto/ecdsa/ecs_lib.c9
-rw-r--r--thirdparty/openssl/crypto/ecdsa/ecs_ossl.c24
-rw-r--r--thirdparty/openssl/crypto/engine/eng_fat.c1
-rw-r--r--thirdparty/openssl/crypto/err/err.c19
-rw-r--r--thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c13
-rw-r--r--thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c21
-rw-r--r--thirdparty/openssl/crypto/evp/evp_key.c20
-rw-r--r--thirdparty/openssl/crypto/evp/pmeth_lib.c167
-rw-r--r--thirdparty/openssl/crypto/ex_data.c9
-rw-r--r--thirdparty/openssl/crypto/include/internal/bn_conf.h28
-rw-r--r--thirdparty/openssl/crypto/include/internal/dso_conf.h16
-rw-r--r--thirdparty/openssl/crypto/lhash/lhash.c77
-rw-r--r--thirdparty/openssl/crypto/ocsp/ocsp_vfy.c2
-rw-r--r--thirdparty/openssl/crypto/pem/pem_lib.c3
-rw-r--r--thirdparty/openssl/crypto/pem/pem_pk8.c1
-rw-r--r--thirdparty/openssl/crypto/pem/pem_pkey.c1
-rw-r--r--thirdparty/openssl/crypto/pkcs12/p12_kiss.c21
-rw-r--r--thirdparty/openssl/crypto/rand/rand_win.c35
-rw-r--r--thirdparty/openssl/crypto/rsa/rsa_ameth.c2
-rw-r--r--thirdparty/openssl/crypto/rsa/rsa_gen.c23
-rw-r--r--thirdparty/openssl/crypto/rsa/rsa_oaep.c8
-rw-r--r--thirdparty/openssl/crypto/rsa/rsa_pk1.c6
-rw-r--r--thirdparty/openssl/crypto/rsa/rsa_pmeth.c75
-rw-r--r--thirdparty/openssl/crypto/ui/ui_lib.c1
-rw-r--r--thirdparty/openssl/crypto/whrlpool/wp_dgst.c4
-rw-r--r--thirdparty/openssl/crypto/x509/by_dir.c1
-rw-r--r--thirdparty/openssl/crypto/x509/by_file.c10
-rw-r--r--thirdparty/openssl/crypto/x509v3/pcy_tree.c14
-rw-r--r--thirdparty/openssl/crypto/x509v3/v3_addr.c10
-rw-r--r--thirdparty/openssl/crypto/x509v3/v3_genn.c1
-rw-r--r--thirdparty/openssl/crypto/x509v3/v3_lib.c22
-rw-r--r--thirdparty/openssl/crypto/x509v3/v3_ncons.c51
-rw-r--r--thirdparty/openssl/crypto/x509v3/v3_scts.c2
-rw-r--r--thirdparty/openssl/openssl/dh.h2
-rw-r--r--thirdparty/openssl/openssl/evp.h92
-rw-r--r--thirdparty/openssl/openssl/opensslv.h6
-rw-r--r--thirdparty/openssl/openssl/ssl.h2
-rw-r--r--thirdparty/openssl/openssl/symhacks.h2
-rw-r--r--thirdparty/openssl/openssl/tls1.h2
-rw-r--r--thirdparty/openssl/patches/uwp_fix.patch12
-rw-r--r--thirdparty/openssl/ssl/s23_clnt.c30
-rw-r--r--thirdparty/openssl/ssl/s3_pkt.c12
-rw-r--r--thirdparty/openssl/ssl/s3_srvr.c36
-rw-r--r--thirdparty/openssl/ssl/ssl_ciph.c2
-rw-r--r--thirdparty/openssl/ssl/ssl_lib.c10
-rw-r--r--thirdparty/openssl/ssl/ssl_sess.c6
-rw-r--r--thirdparty/openssl/ssl/t1_lib.c2
-rw-r--r--thirdparty/thekla_atlas/godot-changes.patch154
-rw-r--r--thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp6
-rw-r--r--thirdparty/tinyexr/tinyexr.h261
-rw-r--r--thirdparty/zstd/common/bitstream.h2
-rw-r--r--thirdparty/zstd/common/mem.h28
-rw-r--r--thirdparty/zstd/common/pool.c3
-rw-r--r--thirdparty/zstd/common/zstd_common.c14
-rw-r--r--thirdparty/zstd/common/zstd_internal.h222
-rw-r--r--thirdparty/zstd/compress/zstd_compress.c771
-rw-r--r--thirdparty/zstd/compress/zstd_compress_internal.h (renamed from thirdparty/zstd/compress/zstd_compress.h)227
-rw-r--r--thirdparty/zstd/compress/zstd_double_fast.c1
-rw-r--r--thirdparty/zstd/compress/zstd_double_fast.h5
-rw-r--r--thirdparty/zstd/compress/zstd_fast.c1
-rw-r--r--thirdparty/zstd/compress/zstd_fast.h5
-rw-r--r--thirdparty/zstd/compress/zstd_lazy.c116
-rw-r--r--thirdparty/zstd/compress/zstd_lazy.h5
-rw-r--r--thirdparty/zstd/compress/zstd_ldm.h5
-rw-r--r--thirdparty/zstd/compress/zstd_opt.c1180
-rw-r--r--thirdparty/zstd/compress/zstd_opt.h4
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.c210
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.h22
-rw-r--r--thirdparty/zstd/decompress/zstd_decompress.c72
-rw-r--r--thirdparty/zstd/zstd.h73
-rw-r--r--version.py4
2874 files changed, 41062 insertions, 23486 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index aeee15e652..708961fd92 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -28,4 +28,4 @@ before_build:
- SET "SCONS_CACHE=%SCONS_CACHE_ROOT%\master"
build_script:
-- scons platform=%GD_PLATFORM% target=%TARGET% tools=%TOOLS% verbose=yes progress=no
+- scons platform=%GD_PLATFORM% target=%TARGET% tools=%TOOLS% verbose=yes progress=no gdnative_wrapper=yes
diff --git a/.gitignore b/.gitignore
index cbb0b5b133..f8296ef51e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,6 +51,10 @@ gmon.out
.cproject
.settings/
+# Geany/geany-plugins files
+*.geany
+.geanyprj
+
# Misc
.DS_Store
logs/
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 0000000000..aa2e0911ec
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,29 @@
+Andrea Catania <info@andreacatania.com>
+Andreas Haas <liu.gam3@gmail.com>
+Andreas Haas <Hinsbart@users.noreply.github.com>
+Andreas Haas <entenflugstuhl@gmail.com>
+Ariel Manzur <ariel@godotengine.org>
+Ariel Manzur <ariel@okamstudio.com>
+Bastiaan Olij <mux213@gmail.com>
+Bernhard Liebl <poke1024@gmx.de>
+Bernhard Liebl <poke1024@gmx.org>
+Geequlim <geequlim@gmail.com>
+Hugo Locurcio <hugo.locurcio@hugo.pro>
+Hugo Locurcio <hugo.locurcio@hugo.pro> <hugo.l@openmailbox.org>
+Hugo Locurcio <hugo.locurcio@hugo.pro> <Calinou@users.noreply.github.com>
+Ignacio Etcheverry <ignalfonsore@gmail.com>
+Indah Sylvia <ISylvox@yahoo.com>
+Jakub Grzesik <kubecz3k@gmail.com>
+Juan Linietsky <reduzio@gmail.com>
+Juan Linietsky <juan@okamstudio.com>
+Juan Linietsky <reduz@Juans-MBP.fibertel.com.ar>
+Julian Murgia <the.straton@gmail.com>
+Leon Krause <eska@eska.me>
+Leon Krause <eska@eska.me> <eska014@users.noreply.github.com>
+Marcelo Fernandez <marcelofg55@gmail.com>
+Mariano Javier Suligoy <marianognu.easyrpg@gmail.com>
+Paul Batty <p_batty@hotmail.co.uk>
+Poommetee Ketson <poommetee@protonmail.com>
+Saracen <SaracenOne@gmail.com>
+Thomas Herzog <therzog@mail.de>
+Zher Huei Lee <lee.zh.92@gmail.com>
diff --git a/.travis.yml b/.travis.yml
index 0dfeaf16e1..9df2388b8e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -90,5 +90,5 @@ script:
- if [ "$STATIC_CHECKS" = "yes" ]; then
sh ./misc/travis/clang-format.sh;
else
- scons -j2 CC=$CC CXX=$CXX platform=$GODOT_TARGET TOOLS=$TOOLS verbose=yes progress=no openmp=no;
+ scons -j2 CC=$CC CXX=$CXX platform=$GODOT_TARGET TOOLS=$TOOLS verbose=yes progress=no openmp=no gdnative_wrapper=yes;
fi
diff --git a/AUTHORS.md b/AUTHORS.md
index 9a373896f8..752300cb5b 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -60,11 +60,12 @@ name is available.
Hiroshi Ogawa (hi-ogawa)
Hubert Jarosz (Marqin)
Hugo Locurcio (Calinou)
- Ian (ianb96)
+ Ian Bishop (ianb96)
Ignacio Etcheverry (neikeq)
Indah Sylvia (ISylvox)
J08nY
Jakub Grzesik (kubecz3k)
+ Jérôme GULLY (Nutriz)
Johan Manuel (29jm)
Joshua Grams (JoshuaGrams)
Juan Linietsky (reduz)
@@ -100,6 +101,7 @@ name is available.
Timo (toger5)
V. Vamsi Krishna (vkbsb)
Vinzenz Feenstra (vinzenz)
+ Wilhem Barbier (nounoursheureux)
Will Nations (willnationsdev)
Wilson E. Alvarez (Rubonnek)
Yuri Roubinski (Chaosus)
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index cea485a67b..bcfaf61664 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -122,13 +122,18 @@ License: Expat and Zlib
Files: ./thirdparty/b2d_convexdecomp/
Comment: Box2D (ConvexDecomp)
Copyright: 2007, Eric Jordan
-Copyright: 2006-2009, Erin Catto
+ 2006-2009, Erin Catto
+License: Zlib
+
+Files: ./thirdparty/bullet/
+Comment: Bullet Continuous Collision Detection and Physics Library
+Copyright: 2003-2008, Erwin Coumans
License: Zlib
Files: ./thirdparty/certs/ca-certificates.crt
-Comment: FIXME
-Copyright: FIXME
-License: FIXME
+Comment: CA certificates
+Copyright: Mozilla Contributors
+License: MPL-2.0
Files: ./thirdparty/enet/
Comment: ENet
@@ -152,8 +157,9 @@ License: OFL-1.1
Files: ./thirdparty/fonts/Hack_Regular.ttf
Comment: Hack font
-Copyright: 2015-2017, Christopher Simpkins (with Reserved Font Name Hack).
-License: Hack Open Font License v2.0
+Copyright: 2017, Source Foundry Authors
+ 2003, Bitstream Inc.
+License: Expat and Bitstream Vera Fonts Copyright
Files: ./thirdparty/freetype/
Comment: The FreeType Project
@@ -292,9 +298,14 @@ Comment: YUV2RGB
Copyright: 2008-2011, Robin Watts
License: BSD-2-clause
+Files: ./thirdparty/nanosvg/
+Comment: NanoSVG
+Copyright: 2013-2014, Mikko Mononen
+License: Zlib
+
Files: ./thirdparty/openssl/
Comment: The OpenSSL Project
-Copyright: 1998-2016, The OpenSSL Project.
+Copyright: 1998-2017, The OpenSSL Project.
License: OpenSSL
Files: ./thirdparty/opus/
@@ -305,10 +316,11 @@ Copyright: 2001-2011, Xiph.Org, Skype Limited, Octasic,
Erik de Castro Lopo
License: BSD-3-clause
-Files: ./thirdparty/nanosvg/
-Comment: NanoSVG
-Copyright: 2013-2014, Mikko Mononen
-License: Zlib
+Files: ./thirdparty/pcre2/
+Comment: PCRE2
+Copyright: 1997-2017, University of Cambridge,
+ 2009-2017, Zoltan Herczeg
+License: BSD-3-clause
Files: ./thirdparty/pvrtccompressor/
Comment: PvrTcCompressor
@@ -330,6 +342,11 @@ Comment: libSquish
Copyright: 2006, Simon Brown
License: Expat
+Files: ./thirdparty/thekla_atlas/
+Comment: Thekla Atlas
+Copyright: 2013, Thekla, Inc
+License: Expat
+
Files: ./thirdparty/tinyexr/
Comment: TinyEXR
Copyright: 2014-2017, Syoyo Fujita
@@ -343,7 +360,7 @@ License: Zlib
Files: ./thirdparty/zstd/
Comment: Zstandard
-Copyright: 2016-2017, Facebook, Inc.
+Copyright: 2016-2018, Facebook, Inc.
License: BSD-3-Clause
@@ -385,6 +402,48 @@ License: BSD-2-clause
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+License: Bitstream Vera Fonts Copyright
+ Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a
+ trademark of Bitstream, Inc.
+ .
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ the fonts accompanying this license ("Fonts") and associated documentation
+ files (the "Font Software"), to reproduce and distribute the Font Software,
+ including without limitation the rights to use, copy, merge, publish,
+ distribute, and/or sell copies of the Font Software, and to permit persons to
+ whom the Font Software is furnished to do so, subject to the following
+ conditions:
+ .
+ The above copyright and trademark notices and this permission notice shall be
+ included in all copies of one or more of the Font Software typefaces.
+ .
+ The Font Software may be modified, altered, or added to, and in particular the
+ designs of glyphs or characters in the Fonts may be modified and additional
+ glyphs or characters may be added to the Fonts, only if the fonts are renamed
+ to names not containing either the words "Bitstream" or the word "Vera".
+ .
+ This License becomes null and void to the extent applicable to Fonts or Font
+ Software that has been modified and is distributed under the "Bitstream Vera"
+ names.
+ .
+ The Font Software may be sold as part of a larger software package but no copy
+ of one or more of the Font Software typefaces may be sold by itself.
+ .
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+ TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
+ SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO
+ USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+ .
+ Except as contained in this notice, the names of GNOME, the GNOME Foundation,
+ and Bitstream Inc., shall not be used in advertising or otherwise to promote
+ the sale, use or other dealings in this Font Software without prior written
+ authorization from the GNOME Foundation or Bitstream Inc., respectively. For
+ further information, contact: fonts at gnome dot org.
+
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
@@ -963,6 +1022,381 @@ License: ISC
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+License: MPL-2.0
+ Mozilla Public License Version 2.0
+ ==================================
+ .
+ 1. Definitions
+ --------------
+ .
+ 1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+ .
+ 1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+ .
+ 1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+ .
+ 1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+ .
+ 1.5. "Incompatible With Secondary Licenses"
+ means
+ .
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+ .
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+ .
+ 1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+ .
+ 1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+ .
+ 1.8. "License"
+ means this document.
+ .
+ 1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+ .
+ 1.10. "Modifications"
+ means any of the following:
+ .
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+ .
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+ .
+ 1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+ .
+ 1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+ .
+ 1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+ .
+ 1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+ .
+ 2. License Grants and Conditions
+ --------------------------------
+ .
+ 2.1. Grants
+ .
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+ .
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+ .
+ (b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+ .
+ 2.2. Effective Date
+ .
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor first
+ distributes such Contribution.
+ .
+ 2.3. Limitations on Grant Scope
+ .
+ The licenses granted in this Section 2 are the only rights granted under
+ this License. No additional rights or licenses will be implied from the
+ distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted by a
+ Contributor:
+ .
+ (a) for any code that a Contributor has removed from Covered Software;
+ or
+ .
+ (b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+ .
+ (c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+ .
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+ .
+ 2.4. Subsequent Licenses
+ .
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License (if
+ permitted under the terms of Section 3.3).
+ .
+ 2.5. Representation
+ .
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights
+ to grant the rights to its Contributions conveyed by this License.
+ .
+ 2.6. Fair Use
+ .
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing, or other
+ equivalents.
+ .
+ 2.7. Conditions
+ .
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+ in Section 2.1.
+ .
+ 3. Responsibilities
+ -------------------
+ .
+ 3.1. Distribution of Source Form
+ .
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under
+ the terms of this License. You must inform recipients that the Source
+ Code Form of the Covered Software is governed by the terms of this
+ License, and how they can obtain a copy of this License. You may not
+ attempt to alter or restrict the recipients' rights in the Source Code
+ Form.
+ .
+ 3.2. Distribution of Executable Form
+ .
+ If You distribute Covered Software in Executable Form then:
+ .
+ (a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+ .
+ (b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+ .
+ 3.3. Distribution of a Larger Work
+ .
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of Covered
+ Software with a work governed by one or more Secondary Licenses, and the
+ Covered Software is not Incompatible With Secondary Licenses, this
+ License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the Covered
+ Software under the terms of either this License or such Secondary
+ License(s).
+ .
+ 3.4. Notices
+ .
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty,
+ or limitations of liability) contained within the Source Code Form of
+ the Covered Software, except that You may alter any license notices to
+ the extent required to remedy known factual inaccuracies.
+ .
+ 3.5. Application of Additional Terms
+ .
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on
+ behalf of any Contributor. You must make it absolutely clear that any
+ such warranty, support, indemnity, or liability obligation is offered by
+ You alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+ .
+ 4. Inability to Comply Due to Statute or Regulation
+ ---------------------------------------------------
+ .
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Software due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description must
+ be placed in a text file included with all distributions of the Covered
+ Software under this License. Except to the extent prohibited by statute
+ or regulation, such description must be sufficiently detailed for a
+ recipient of ordinary skill to be able to understand it.
+ .
+ 5. Termination
+ --------------
+ .
+ 5.1. The rights granted under this License will terminate automatically
+ if You fail to comply with any of its terms. However, if You become
+ compliant, then the rights granted under this License from a particular
+ Contributor are reinstated (a) provisionally, unless and until such
+ Contributor explicitly and finally terminates Your grants, and (b) on an
+ ongoing basis, if such Contributor fails to notify You of the
+ non-compliance by some reasonable means prior to 60 days after You have
+ come back into compliance. Moreover, Your grants from a particular
+ Contributor are reinstated on an ongoing basis if such Contributor
+ notifies You of the non-compliance by some reasonable means, this is the
+ first time You have received notice of non-compliance with this License
+ from such Contributor, and You become compliant prior to 30 days after
+ Your receipt of the notice.
+ .
+ 5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted to
+ You by any and all Contributors for the Covered Software under Section
+ 2.1 of this License shall terminate.
+ .
+ 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+ end user license agreements (excluding distributors and resellers) which
+ have been validly granted by You or Your distributors under this License
+ prior to termination shall survive termination.
+ .
+ ************************************************************************
+ * *
+ * 6. Disclaimer of Warranty *
+ * ------------------------- *
+ * *
+ * Covered Software is provided under this License on an "as is" *
+ * basis, without warranty of any kind, either expressed, implied, or *
+ * statutory, including, without limitation, warranties that the *
+ * Covered Software is free of defects, merchantable, fit for a *
+ * particular purpose or non-infringing. The entire risk as to the *
+ * quality and performance of the Covered Software is with You. *
+ * Should any Covered Software prove defective in any respect, You *
+ * (not any Contributor) assume the cost of any necessary servicing, *
+ * repair, or correction. This disclaimer of warranty constitutes an *
+ * essential part of this License. No use of any Covered Software is *
+ * authorized under this License except under this disclaimer. *
+ * *
+ ************************************************************************
+ .
+ ************************************************************************
+ * *
+ * 7. Limitation of Liability *
+ * -------------------------- *
+ * *
+ * Under no circumstances and under no legal theory, whether tort *
+ * (including negligence), contract, or otherwise, shall any *
+ * Contributor, or anyone who distributes Covered Software as *
+ * permitted above, be liable to You for any direct, indirect, *
+ * special, incidental, or consequential damages of any character *
+ * including, without limitation, damages for lost profits, loss of *
+ * goodwill, work stoppage, computer failure or malfunction, or any *
+ * and all other commercial damages or losses, even if such party *
+ * shall have been informed of the possibility of such damages. This *
+ * limitation of liability shall not apply to liability for death or *
+ * personal injury resulting from such party's negligence to the *
+ * extent applicable law prohibits such limitation. Some *
+ * jurisdictions do not allow the exclusion or limitation of *
+ * incidental or consequential damages, so this exclusion and *
+ * limitation may not apply to You. *
+ * *
+ ************************************************************************
+ .
+ 8. Litigation
+ -------------
+ .
+ Any litigation relating to this License may be brought only in the
+ courts of a jurisdiction where the defendant maintains its principal
+ place of business and such litigation shall be governed by laws of that
+ jurisdiction, without reference to its conflict-of-law provisions.
+ Nothing in this Section shall prevent a party's ability to bring
+ cross-claims or counter-claims.
+ .
+ 9. Miscellaneous
+ ----------------
+ .
+ This License represents the complete agreement concerning the subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides
+ that the language of a contract shall be construed against the drafter
+ shall not be used to construe this License against a Contributor.
+ .
+ 10. Versions of the License
+ ---------------------------
+ .
+ 10.1. New Versions
+ .
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+ .
+ 10.2. Effect of New Versions
+ .
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published by the license
+ steward.
+ .
+ 10.3. Modified Versions
+ .
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a
+ modified version of this License if you rename the license and remove
+ any references to the name of the license steward (except to note that
+ such modified license differs from this License).
+ .
+ 10.4. Distributing Source Code Form that is Incompatible With Secondary
+ Licenses
+ .
+ If You choose to distribute Source Code Form that is Incompatible With
+ Secondary Licenses under the terms of this version of the License, the
+ notice described in Exhibit B of this License must be attached.
+ .
+ Exhibit A - Source Code Form License Notice
+ -------------------------------------------
+ .
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ .
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to look
+ for such a notice.
+ .
+ You may add additional accurate notices of copyright ownership.
+ .
+ Exhibit B - "Incompatible With Secondary Licenses" Notice
+ ---------------------------------------------------------
+ .
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
+
License: OFL-1.1
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
diff --git a/DONORS.md b/DONORS.md
index aea2ef5ae8..64d13fb3f9 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -35,24 +35,24 @@ generous deed immortalized in the next stable release of Godot Engine.
Pascal Julien
Ruslan Mustakov
Slobodan Milnovic
+ Stephan Lanfermann
+ Thomas Mathews
## Gold donors
3Dexplorer
Alexander Otto
- Andy Meier
Asdf
cheese65536
Jake Bo
- Javier
Manuele Finocchiaro
Officine Pixel S.n.c.
Rémi Verschelde
- Stephan Lanfermann
Zaven Muradyan
Andreas Schüle
Austen McRae
+ Benjamin Botwin
Bernhard Liebl
Cody Brocious
Gerald E Butler
@@ -72,7 +72,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Guilherme Felipe de C. G. da Silva
Henrique Alves
Laurence Bannister
- Leo
Przemysław Gołąb (n-pigeon)
Robert Willes
Robin Arys
@@ -97,11 +96,13 @@ generous deed immortalized in the next stable release of Godot Engine.
François Cantin
Giovanni Solimeno
Jeppe Zapp
+ joe513
Justin Arnold
Justo Delgado Baudí
Leandro Voltolino
Lucien Boudy
- Noah
+ Markus Wiesner
+ Pablo Cholaky
Patrick Schnorbus
Pete Goodwin
Ryan Estes
@@ -112,16 +113,17 @@ generous deed immortalized in the next stable release of Godot Engine.
## Silver donors
1D_Inc
- Abe Pazos
Alder Stefano
Alessandro Senese
Alex Barsukov
+ Ãlvaro Domínguez López
Andres Cuevas
Anthony Bongiovanni
Avencherus
Bastian Böhm
Ben Vercammen
Blair Allen
+ Bryanna M
Bryan Stevenson
Casey Foote
Christian Baune
@@ -129,6 +131,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Collin Shooltz
Daniel Egger
Daniel Kaplan
+ Daniel Mircea
David Cravens
David May
Diego Moreira Guimarães
@@ -137,14 +140,13 @@ generous deed immortalized in the next stable release of Godot Engine.
Fabian Becker
fengjiongmax
Francesco Lisi
- Frank C. Simmons
Fredy Romero Sam
G3Dev sàrl
Geequlim
Gerrit Großkopf
+ Gilberto K. Otubo
Guldoman
HardRound
- hatniX
HeartBeast
Heribert Hirth
Hunter Jones
@@ -152,13 +154,13 @@ generous deed immortalized in the next stable release of Godot Engine.
Jeff Hungerford
Jerry Chen
Jesse Liles
- joe513
Jonathon
Josh 'Cheeseness' Bush
Juan Negrier
JuDelCo
Julian Murgia
Juraj Móza
+ Karonis
KC Chan
Kevin Boyer
Kevin Kamper Meejach Petersen
@@ -166,7 +168,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Linus Lind Lundgren
Lisandro Lorea
magodev
- Markus Wiesner
Martin Novák
Matthew Fitzpatrick
Matthias Hölzl
@@ -174,9 +175,9 @@ generous deed immortalized in the next stable release of Godot Engine.
memoryruins
mhilbrunner
Michael Gringauz
- Michael Tintiuc
Mikael Olsson
MoM
+ monokrome
Moritz Laass
nee
Neil Blakey-Milner
@@ -191,16 +192,15 @@ generous deed immortalized in the next stable release of Godot Engine.
Paweł Kowal
Pierre-Igor Berthet
Pietro Vertechi
- rayos
Richman Stewart
Rodolfo Baeza
Roger Burgess
Roger Smith
Roman Tinkov
- Sam Van Campenhout
Sasori Olkof
Scott D. Yelich
Sootstone
+ Stephen Traskal
Theo Cranmore
Thomas Norman
Tom Larrow
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index ddddc3a1a9..1ca0b3694c 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,9 +1,13 @@
+<!-- Please search existing issues for potential duplicates before filing yours:
+https://github.com/godotengine/godot/issues?q=is%3Aissue
+-->
+
**Godot version:**
-<!-- If thirdparty or self-compiled, specify the build date or commit hash. -->
+<!-- Specify commit hash if non-official. -->
**OS/device including version:**
-<!-- If graphics related, specify also GPU model and drivers. -->
+<!-- Specify GPU model and drivers if graphics-related. -->
**Issue description:**
@@ -14,7 +18,4 @@
**Minimal reproduction project:**
-<!-- Optional but greatly speeds up debugging. You can drag and drop a zip archive to upload it. -->
-
-
-- [ ] I searched the existing [GitHub issues](https://github.com/godotengine/godot/issues?utf8=%E2%9C%93&q=is%3Aissue+) for potential duplicates.
+<!-- Recommended as it greatly speeds up debugging. Drag and drop a zip archive to upload it. -->
diff --git a/SConstruct b/SConstruct
index 88b29695cb..f71c6a397c 100644
--- a/SConstruct
+++ b/SConstruct
@@ -90,6 +90,7 @@ env_base.android_appattributes_chunk = ""
env_base.disabled_modules = []
env_base.use_ptrcall = False
env_base.split_drivers = False
+env_base.split_modules = False
env_base.module_version_string = ""
# To decide whether to rebuild a file, use the MD5 sum only if the timestamp has changed.
@@ -171,6 +172,7 @@ opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=all", False
opts.Add(EnumVariable('macports_clang', "Build using clang from MacPorts", 'no', ('no', '5.0', 'devel')))
# Thirdparty libraries
+opts.Add(BoolVariable('builtin_bullet', "Use the builtin bullet library", True))
opts.Add(BoolVariable('builtin_enet', "Use the builtin enet library", True))
opts.Add(BoolVariable('builtin_freetype', "Use the builtin freetype library", True))
opts.Add(BoolVariable('builtin_libogg', "Use the builtin libogg library", True))
@@ -189,10 +191,12 @@ opts.Add(BoolVariable('builtin_zlib', "Use the builtin zlib library", True))
opts.Add(BoolVariable('builtin_zstd', "Use the builtin zstd library", True))
opts.Add(BoolVariable('no_editor_splash', "Don't use the custom splash screen for the editor", False))
-# Environment setup
+# Compilation environment setup
opts.Add("CXX", "C++ compiler")
opts.Add("CC", "C compiler")
-opts.Add("CCFLAGS", "Custom flags for the C and C++ compilers")
+opts.Add("LINK", "Linker")
+opts.Add("CCFLAGS", "Custom flags for both the C and C++ compilers")
+opts.Add("CXXFLAGS", "Custom flags for the C++ compiler")
opts.Add("CFLAGS", "Custom flags for the C compiler")
opts.Add("LINKFLAGS", "Custom flags for the linker")
@@ -286,6 +290,8 @@ if selected_platform in platform_list:
basename = basename.replace('\\\\', '/')
if os.path.isfile(basename + ".h"):
env.vs_incs = env.vs_incs + [basename + ".h"]
+ elif os.path.isfile(basename + ".hpp"):
+ env.vs_incs = env.vs_incs + [basename + ".hpp"]
if os.path.isfile(basename + ".c"):
env.vs_srcs = env.vs_srcs + [basename + ".c"]
elif os.path.isfile(basename + ".cpp"):
@@ -495,7 +501,12 @@ node_count_interval = 1
node_pruning = 8 # Number of nodes to process before prunning the cache
if ('env' in locals()):
node_count_fname = str(env.Dir('#')) + '/.scons_node_count'
-show_progress = env['progress']
+# Progress reporting is not available in non-TTY environments since it
+# messes with the output (for example, when writing to a file)
+if sys.stdout.isatty():
+ show_progress = env['progress']
+else:
+ show_progress = False
import time, math
diff --git a/core/allocators.h b/core/allocators.h
index 0d5989b4ab..e17ab298d6 100644
--- a/core/allocators.h
+++ b/core/allocators.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ALLOCATORS_H
#define ALLOCATORS_H
diff --git a/core/array.cpp b/core/array.cpp
index a333830d3a..c53fea1f28 100644
--- a/core/array.cpp
+++ b/core/array.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "array.h"
#include "hashfuncs.h"
diff --git a/core/array.h b/core/array.h
index 4aef4f49c5..7c6fc59048 100644
--- a/core/array.h
+++ b/core/array.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ARRAY_H
#define ARRAY_H
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index c1e33c1493..32b94b9b02 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "core_bind.h"
#include "core/project_settings.h"
@@ -70,7 +71,13 @@ Ref<ResourceInteractiveLoader> _ResourceLoader::load_interactive(const String &p
RES _ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p_no_cache) {
- RES ret = ResourceLoader::load(p_path, p_type_hint, p_no_cache);
+ Error err = OK;
+ RES ret = ResourceLoader::load(p_path, p_type_hint, p_no_cache, &err);
+
+ if (err != OK) {
+ ERR_EXPLAIN("Error loading resource: '" + p_path + "'");
+ ERR_FAIL_COND_V(err != OK, ret);
+ }
return ret;
}
@@ -1122,6 +1129,22 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_power_seconds_left"), &_OS::get_power_seconds_left);
ClassDB::bind_method(D_METHOD("get_power_percent_left"), &_OS::get_power_percent_left);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "clipboard"), "set_clipboard", "get_clipboard");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "current_screen"), "set_current_screen", "get_current_screen");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "exit_code"), "set_exit_code", "get_exit_code");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vsync_enabled"), "set_use_vsync", "is_vsync_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "low_processor_usage_mode"), "set_low_processor_usage_mode", "is_in_low_processor_usage_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_screen_on"), "set_keep_screen_on", "is_keep_screen_on");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "screen_orientation", PROPERTY_HINT_ENUM, "Landscape,Portrait,Reverse Landscape,Reverse Portrait,Sensor Landscape,Sensor Portrait,Sensor"), "set_screen_orientation", "get_screen_orientation");
+ ADD_GROUP("Window", "window_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_borderless"), "set_borderless_window", "get_borderless_window");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_fullscreen"), "set_window_fullscreen", "is_window_fullscreen");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_maximized"), "set_window_maximized", "is_window_maximized");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_minimized"), "set_window_minimized", "is_window_minimized");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "window_resizable"), "set_window_resizable", "is_window_resizable");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "window_position"), "set_window_position", "get_window_position");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "window_size"), "set_window_size", "get_window_size");
+
BIND_ENUM_CONSTANT(DAY_SUNDAY);
BIND_ENUM_CONSTANT(DAY_MONDAY);
BIND_ENUM_CONSTANT(DAY_TUESDAY);
@@ -1801,6 +1824,8 @@ void _File::_bind_methods() {
ClassDB::bind_method(D_METHOD("file_exists", "path"), &_File::file_exists);
ClassDB::bind_method(D_METHOD("get_modified_time", "file"), &_File::get_modified_time);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "endian_swap"), "set_endian_swap", "get_endian_swap");
+
BIND_ENUM_CONSTANT(READ);
BIND_ENUM_CONSTANT(WRITE);
BIND_ENUM_CONSTANT(READ_WRITE);
@@ -2459,7 +2484,13 @@ Array _ClassDB::get_method_list(StringName p_class, bool p_no_inheritance) const
Array ret;
for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
+#ifdef DEBUG_METHODS_ENABLED
ret.push_back(E->get().operator Dictionary());
+#else
+ Dictionary dict;
+ dict["name"] = E->get().name;
+ ret.push_back(dict);
+#endif
}
return ret;
@@ -2554,7 +2585,7 @@ void _Engine::set_target_fps(int p_fps) {
Engine::get_singleton()->set_target_fps(p_fps);
}
-float _Engine::get_target_fps() const {
+int _Engine::get_target_fps() const {
return Engine::get_singleton()->get_target_fps();
}
@@ -2636,6 +2667,11 @@ void _Engine::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_editor_hint", "enabled"), &_Engine::set_editor_hint);
ClassDB::bind_method(D_METHOD("is_editor_hint"), &_Engine::is_editor_hint);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_hint"), "set_editor_hint", "is_editor_hint");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "iterations_per_second"), "set_iterations_per_second", "get_iterations_per_second");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "target_fps"), "set_target_fps", "get_target_fps");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_scale"), "set_time_scale", "get_time_scale");
}
_Engine *_Engine::singleton = NULL;
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index ed4111fea4..2353b6d09f 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CORE_BIND_H
#define CORE_BIND_H
@@ -655,7 +656,7 @@ public:
int get_iterations_per_second() const;
void set_target_fps(int p_fps);
- float get_target_fps() const;
+ int get_target_fps() const;
float get_frames_per_second() const;
diff --git a/core/class_db.cpp b/core/class_db.cpp
index 141bc1c5e2..d2cd362792 100644
--- a/core/class_db.cpp
+++ b/core/class_db.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "class_db.h"
#include "os/mutex.h"
diff --git a/core/class_db.h b/core/class_db.h
index c977068be1..14e36e459b 100644
--- a/core/class_db.h
+++ b/core/class_db.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CLASS_DB_H
#define CLASS_DB_H
diff --git a/core/color.cpp b/core/color.cpp
index 00a31dfdd8..a0568d26ed 100644
--- a/core/color.cpp
+++ b/core/color.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "color.h"
#include "color_names.inc"
@@ -412,96 +413,95 @@ Color::operator String() const {
Color Color::operator+(const Color &p_color) const {
return Color(
- CLAMP(r + p_color.r, 0.0, 1.0),
- CLAMP(g + p_color.g, 0.0, 1.0),
- CLAMP(b + p_color.b, 0.0, 1.0),
- CLAMP(a + p_color.a, 0.0, 1.0));
+ r + p_color.r,
+ g + p_color.g,
+ b + p_color.b,
+ a + p_color.a);
}
void Color::operator+=(const Color &p_color) {
- r = CLAMP(r + p_color.r, 0.0, 1.0);
- g = CLAMP(g + p_color.g, 0.0, 1.0);
- b = CLAMP(b + p_color.b, 0.0, 1.0);
- a = CLAMP(a + p_color.a, 0.0, 1.0);
+ r = r + p_color.r;
+ g = g + p_color.g;
+ b = b + p_color.b;
+ a = a + p_color.a;
}
Color Color::operator-(const Color &p_color) const {
return Color(
- CLAMP(r - p_color.r, 0.0, 1.0),
- CLAMP(g - p_color.g, 0.0, 1.0),
- CLAMP(b - p_color.b, 0.0, 1.0),
- CLAMP(a - p_color.a, 0.0, 1.0));
+ r - p_color.r,
+ g - p_color.g,
+ b - p_color.b,
+ a - p_color.a);
}
void Color::operator-=(const Color &p_color) {
- r = CLAMP(r - p_color.r, 0.0, 1.0);
- g = CLAMP(g - p_color.g, 0.0, 1.0);
- b = CLAMP(b - p_color.b, 0.0, 1.0);
- a = CLAMP(a - p_color.a, 0.0, 1.0);
+ r = r - p_color.r;
+ g = g - p_color.g;
+ b = b - p_color.b;
+ a = a - p_color.a;
}
Color Color::operator*(const Color &p_color) const {
return Color(
- CLAMP(r * p_color.r, 0.0, 1.0),
- CLAMP(g * p_color.g, 0.0, 1.0),
- CLAMP(b * p_color.b, 0.0, 1.0),
- CLAMP(a * p_color.a, 0.0, 1.0));
+ r * p_color.r,
+ g * p_color.g,
+ b * p_color.b,
+ a * p_color.a);
}
Color Color::operator*(const real_t &rvalue) const {
return Color(
- CLAMP(r * rvalue, 0.0, 1.0),
- CLAMP(g * rvalue, 0.0, 1.0),
- CLAMP(b * rvalue, 0.0, 1.0),
- CLAMP(a * rvalue, 0.0, 1.0));
+ r * rvalue,
+ g * rvalue,
+ b * rvalue,
+ a * rvalue);
}
void Color::operator*=(const Color &p_color) {
- r = CLAMP(r * p_color.r, 0.0, 1.0);
- g = CLAMP(g * p_color.g, 0.0, 1.0);
- b = CLAMP(b * p_color.b, 0.0, 1.0);
- a = CLAMP(a * p_color.a, 0.0, 1.0);
+ r = r * p_color.r;
+ g = g * p_color.g;
+ b = b * p_color.b;
+ a = a * p_color.a;
}
void Color::operator*=(const real_t &rvalue) {
- r = CLAMP(r * rvalue, 0.0, 1.0);
- g = CLAMP(g * rvalue, 0.0, 1.0);
- b = CLAMP(b * rvalue, 0.0, 1.0);
- a = CLAMP(a * rvalue, 0.0, 1.0);
-};
+ r = r * rvalue;
+ g = g * rvalue;
+ b = b * rvalue;
+ a = a * rvalue;
+}
Color Color::operator/(const Color &p_color) const {
return Color(
- p_color.r == 0 ? 1 : CLAMP(r / p_color.r, 0.0, 1.0),
- p_color.g == 0 ? 1 : CLAMP(g / p_color.g, 0.0, 1.0),
- p_color.b == 0 ? 1 : CLAMP(b / p_color.b, 0.0, 1.0),
- p_color.a == 0 ? 1 : CLAMP(a / p_color.a, 0.0, 1.0));
+ r / p_color.r,
+ g / p_color.g,
+ b / p_color.b,
+ a / p_color.a);
}
Color Color::operator/(const real_t &rvalue) const {
- if (rvalue == 0) return Color(1.0, 1.0, 1.0, 1.0);
return Color(
- CLAMP(r / rvalue, 0.0, 1.0),
- CLAMP(g / rvalue, 0.0, 1.0),
- CLAMP(b / rvalue, 0.0, 1.0),
- CLAMP(a / rvalue, 0.0, 1.0));
+ r / rvalue,
+ g / rvalue,
+ b / rvalue,
+ a / rvalue);
}
void Color::operator/=(const Color &p_color) {
- r = p_color.r == 0 ? 1 : CLAMP(r / p_color.r, 0.0, 1.0);
- g = p_color.g == 0 ? 1 : CLAMP(g / p_color.g, 0.0, 1.0);
- b = p_color.b == 0 ? 1 : CLAMP(b / p_color.b, 0.0, 1.0);
- a = p_color.a == 0 ? 1 : CLAMP(a / p_color.a, 0.0, 1.0);
+ r = r / p_color.r;
+ g = g / p_color.g;
+ b = b / p_color.b;
+ a = a / p_color.a;
}
void Color::operator/=(const real_t &rvalue) {
@@ -512,18 +512,18 @@ void Color::operator/=(const real_t &rvalue) {
b = 1.0;
a = 1.0;
} else {
- r = CLAMP(r / rvalue, 0.0, 1.0);
- g = CLAMP(g / rvalue, 0.0, 1.0);
- b = CLAMP(b / rvalue, 0.0, 1.0);
- a = CLAMP(a / rvalue, 0.0, 1.0);
+ r = r / rvalue;
+ g = g / rvalue;
+ b = b / rvalue;
+ a = a / rvalue;
}
};
Color Color::operator-() const {
return Color(
- CLAMP(1.0 - r, 0.0, 1.0),
- CLAMP(1.0 - g, 0.0, 1.0),
- CLAMP(1.0 - b, 0.0, 1.0),
- CLAMP(1.0 - a, 0.0, 1.0));
+ 1.0 - r,
+ 1.0 - g,
+ 1.0 - b,
+ 1.0 - a);
}
diff --git a/core/color.h b/core/color.h
index 70b0e1fea2..9af8fb0a78 100644
--- a/core/color.h
+++ b/core/color.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLOR_H
#define COLOR_H
@@ -104,18 +105,18 @@ struct Color {
_FORCE_INLINE_ Color darkened(float p_amount) const {
Color res = *this;
- res.r = CLAMP(res.r * (1.0f - p_amount), 0.0, 1.0);
- res.g = CLAMP(res.g * (1.0f - p_amount), 0.0, 1.0);
- res.b = CLAMP(res.b * (1.0f - p_amount), 0.0, 1.0);
+ res.r = res.r * (1.0f - p_amount);
+ res.g = res.g * (1.0f - p_amount);
+ res.b = res.b * (1.0f - p_amount);
return res;
}
_FORCE_INLINE_ Color lightened(float p_amount) const {
Color res = *this;
- res.r = CLAMP(res.r + (1.0f - res.r) * p_amount, 0.0, 1.0);
- res.g = CLAMP(res.g + (1.0f - res.g) * p_amount, 0.0, 1.0);
- res.b = CLAMP(res.b + (1.0f - res.b) * p_amount, 0.0, 1.0);
+ res.r = res.r + (1.0f - res.r) * p_amount;
+ res.g = res.g + (1.0f - res.g) * p_amount;
+ res.b = res.b + (1.0f - res.b) * p_amount;
return res;
}
diff --git a/core/command_queue_mt.cpp b/core/command_queue_mt.cpp
index 8ce0ba7810..6bb3135757 100644
--- a/core/command_queue_mt.cpp
+++ b/core/command_queue_mt.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "command_queue_mt.h"
#include "os/os.h"
diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h
index e53ded6755..cecc9e405d 100644
--- a/core/command_queue_mt.h
+++ b/core/command_queue_mt.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COMMAND_QUEUE_MT_H
#define COMMAND_QUEUE_MT_H
diff --git a/core/compressed_translation.cpp b/core/compressed_translation.cpp
index b393b67d50..266d793af7 100644
--- a/core/compressed_translation.cpp
+++ b/core/compressed_translation.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "compressed_translation.h"
#include "pair.h"
diff --git a/core/compressed_translation.h b/core/compressed_translation.h
index bedd38d1bc..400fa4491b 100644
--- a/core/compressed_translation.h
+++ b/core/compressed_translation.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COMPRESSED_TRANSLATION_H
#define COMPRESSED_TRANSLATION_H
diff --git a/core/core_string_names.cpp b/core/core_string_names.cpp
index 7a9edcad46..ba596f7f16 100644
--- a/core/core_string_names.cpp
+++ b/core/core_string_names.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "core_string_names.h"
CoreStringNames *CoreStringNames::singleton = NULL;
diff --git a/core/core_string_names.h b/core/core_string_names.h
index f48692f470..dcbce14aac 100644
--- a/core/core_string_names.h
+++ b/core/core_string_names.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CORE_STRING_NAMES_H
#define CORE_STRING_NAMES_H
diff --git a/core/dictionary.cpp b/core/dictionary.cpp
index 72893c41f6..e3f4aa5f28 100644
--- a/core/dictionary.cpp
+++ b/core/dictionary.cpp
@@ -27,21 +27,17 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dictionary.h"
#include "ordered_hash_map.h"
#include "safe_refcount.h"
#include "variant.h"
-struct _DictionaryVariantHash {
-
- static _FORCE_INLINE_ uint32_t hash(const Variant &p_variant) { return p_variant.hash(); }
-};
-
struct DictionaryPrivate {
SafeRefCount refcount;
- OrderedHashMap<Variant, Variant, _DictionaryVariantHash> variant_map;
+ OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> variant_map;
};
void Dictionary::get_key_list(List<Variant> *p_keys) const {
@@ -49,7 +45,7 @@ void Dictionary::get_key_list(List<Variant> *p_keys) const {
if (_p->variant_map.empty())
return;
- for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) {
+ for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) {
p_keys->push_back(E.key());
}
}
@@ -65,7 +61,7 @@ const Variant &Dictionary::operator[](const Variant &p_key) const {
}
const Variant *Dictionary::getptr(const Variant &p_key) const {
- OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::ConstElement E = ((const OrderedHashMap<Variant, Variant, _DictionaryVariantHash> *)&_p->variant_map)->find(p_key);
+ OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::ConstElement E = ((const OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> *)&_p->variant_map)->find(p_key);
if (!E)
return NULL;
@@ -74,7 +70,7 @@ const Variant *Dictionary::getptr(const Variant &p_key) const {
Variant *Dictionary::getptr(const Variant &p_key) {
- OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.find(p_key);
+ OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.find(p_key);
if (!E)
return NULL;
@@ -83,7 +79,7 @@ Variant *Dictionary::getptr(const Variant &p_key) {
Variant Dictionary::get_valid(const Variant &p_key) const {
- OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::ConstElement E = ((const OrderedHashMap<Variant, Variant, _DictionaryVariantHash> *)&_p->variant_map)->find(p_key);
+ OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::ConstElement E = ((const OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator> *)&_p->variant_map)->find(p_key);
if (!E)
return Variant();
@@ -176,7 +172,7 @@ Array Dictionary::keys() const {
return varr;
int i = 0;
- for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) {
+ for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) {
varr[i] = E.key();
i++;
}
@@ -192,7 +188,7 @@ Array Dictionary::values() const {
return varr;
int i = 0;
- for (OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.front(); E; E = E.next()) {
+ for (OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.front(); E; E = E.next()) {
varr[i] = E.get();
i++;
}
@@ -208,7 +204,7 @@ const Variant *Dictionary::next(const Variant *p_key) const {
return &_p->variant_map.front().key();
return NULL;
}
- OrderedHashMap<Variant, Variant, _DictionaryVariantHash>::Element E = _p->variant_map.find(*p_key);
+ OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator>::Element E = _p->variant_map.find(*p_key);
if (E && E.next())
return &E.next().key();
diff --git a/core/dictionary.h b/core/dictionary.h
index 86f676fc38..f001f2d5e1 100644
--- a/core/dictionary.h
+++ b/core/dictionary.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DICTIONARY_H
#define DICTIONARY_H
diff --git a/core/dvector.cpp b/core/dvector.cpp
index 653c04b498..b679df55ad 100644
--- a/core/dvector.cpp
+++ b/core/dvector.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dvector.h"
Mutex *dvector_lock = NULL;
diff --git a/core/dvector.h b/core/dvector.h
index 492a4e0ed9..c0190fb9e3 100644
--- a/core/dvector.h
+++ b/core/dvector.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DVECTOR_H
#define DVECTOR_H
diff --git a/core/engine.cpp b/core/engine.cpp
index 4cadad1f6e..af9052110f 100644
--- a/core/engine.cpp
+++ b/core/engine.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "engine.h"
#include "version.h"
diff --git a/core/engine.h b/core/engine.h
index 2741d09b52..54b30ab81f 100644
--- a/core/engine.h
+++ b/core/engine.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ENGINE_H
#define ENGINE_H
diff --git a/core/error_list.h b/core/error_list.h
index 47233e39fe..6b9cd0016b 100644
--- a/core/error_list.h
+++ b/core/error_list.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ERROR_LIST_H
#define ERROR_LIST_H
diff --git a/core/error_macros.cpp b/core/error_macros.cpp
index 76be0756b8..5786802930 100644
--- a/core/error_macros.cpp
+++ b/core/error_macros.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "error_macros.h"
#include "io/logger.h"
diff --git a/core/error_macros.h b/core/error_macros.h
index 2bfa94b99e..1f9164a99b 100644
--- a/core/error_macros.h
+++ b/core/error_macros.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ERROR_MACROS_H
#define ERROR_MACROS_H
diff --git a/core/func_ref.cpp b/core/func_ref.cpp
index 98053808b4..c707f1c4cb 100644
--- a/core/func_ref.cpp
+++ b/core/func_ref.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "func_ref.h"
Variant FuncRef::call_func(const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
diff --git a/core/func_ref.h b/core/func_ref.h
index 9f2df8cb5d..681fe747d6 100644
--- a/core/func_ref.h
+++ b/core/func_ref.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FUNC_REF_H
#define FUNC_REF_H
diff --git a/core/global_constants.cpp b/core/global_constants.cpp
index abe829420a..a24bf03c9a 100644
--- a/core/global_constants.cpp
+++ b/core/global_constants.cpp
@@ -10,7 +10,7 @@
/* */
/* 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 */
+/* "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 */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "global_constants.h"
#include "object.h"
diff --git a/core/global_constants.h b/core/global_constants.h
index 09f93e34a2..76f618989c 100644
--- a/core/global_constants.h
+++ b/core/global_constants.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GLOBAL_CONSTANTS_H
#define GLOBAL_CONSTANTS_H
diff --git a/core/hash_map.h b/core/hash_map.h
index 1a4f879fea..2df743ba7d 100644
--- a/core/hash_map.h
+++ b/core/hash_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HASH_MAP_H
#define HASH_MAP_H
diff --git a/core/hashfuncs.h b/core/hashfuncs.h
index 0725a7ebf6..ae99fa39c8 100644
--- a/core/hashfuncs.h
+++ b/core/hashfuncs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HASHFUNCS_H
#define HASHFUNCS_H
diff --git a/core/helper/math_fieldwise.h b/core/helper/math_fieldwise.h
index c883c44f84..0e7cc3ea4a 100644
--- a/core/helper/math_fieldwise.h
+++ b/core/helper/math_fieldwise.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATH_FIELDWISE_H
#define MATH_FIELDWISE_H
diff --git a/core/helper/value_evaluator.h b/core/helper/value_evaluator.h
index 954d229517..39177a7820 100644
--- a/core/helper/value_evaluator.h
+++ b/core/helper/value_evaluator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VALUE_EVALUATOR_H
#define VALUE_EVALUATOR_H
diff --git a/core/image.cpp b/core/image.cpp
index 11429b8782..07e705265d 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image.h"
#include "core/io/image_loader.h"
@@ -446,8 +447,6 @@ void Image::convert(Format p_new_format) {
Image new_img(width, height, 0, p_new_format);
- //int len=data.size();
-
PoolVector<uint8_t>::Read r = data.read();
PoolVector<uint8_t>::Write w = new_img.data.write();
@@ -695,6 +694,11 @@ void Image::resize_to_po2(bool p_square) {
void Image::resize(int p_width, int p_height, Interpolation p_interpolation) {
+ if (data.size() == 0) {
+ ERR_EXPLAIN("Cannot resize image before creating it, use create() or create_from_data() first.");
+ ERR_FAIL();
+ }
+
if (!_can_modify(format)) {
ERR_EXPLAIN("Cannot resize in indexed, compressed or custom image formats.");
ERR_FAIL();
@@ -771,7 +775,7 @@ void Image::crop_from_point(int p_x, int p_y, int p_width, int p_height) {
ERR_FAIL_COND(p_y + p_height > MAX_HEIGHT);
/* to save memory, cropping should be done in-place, however, since this function
- will most likely either not be used much, or in critical areas, for now it wont, because
+ will most likely either not be used much, or in critical areas, for now it won't, because
it's a waste of time. */
if (p_width == width && p_height == height && p_x == 0 && p_y == 0)
diff --git a/core/image.h b/core/image.h
index 767f3c6ac5..e962787ae9 100644
--- a/core/image.h
+++ b/core/image.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_H
#define IMAGE_H
diff --git a/core/input_map.cpp b/core/input_map.cpp
index 7833aab3f3..a9ea1d9545 100644
--- a/core/input_map.cpp
+++ b/core/input_map.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "input_map.h"
#include "os/keyboard.h"
diff --git a/core/input_map.h b/core/input_map.h
index 12ac1b339b..84d90f6f2a 100644
--- a/core/input_map.h
+++ b/core/input_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INPUT_MAP_H
#define INPUT_MAP_H
diff --git a/core/io/compression.cpp b/core/io/compression.cpp
index a4dbebe9f7..bc3bfcf356 100644
--- a/core/io/compression.cpp
+++ b/core/io/compression.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "compression.h"
#include "os/copymem.h"
#include "project_settings.h"
diff --git a/core/io/compression.h b/core/io/compression.h
index 034c5ab708..a0ccd539cb 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COMPRESSION_H
#define COMPRESSION_H
diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp
index 9a013cb775..aa06ae5cc0 100644
--- a/core/io/config_file.cpp
+++ b/core/io/config_file.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "config_file.h"
#include "os/file_access.h"
#include "os/keyboard.h"
diff --git a/core/io/config_file.h b/core/io/config_file.h
index 2168e654dd..ac749bed76 100644
--- a/core/io/config_file.h
+++ b/core/io/config_file.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONFIG_FILE_H
#define CONFIG_FILE_H
diff --git a/core/io/file_access_buffered.cpp b/core/io/file_access_buffered.cpp
index 442ab2c6e4..dcaf99e24a 100644
--- a/core/io/file_access_buffered.cpp
+++ b/core/io/file_access_buffered.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_buffered.h"
#include <string.h>
diff --git a/core/io/file_access_buffered.h b/core/io/file_access_buffered.h
index 2d6df5d48a..f4ed47d6bc 100644
--- a/core/io/file_access_buffered.h
+++ b/core/io/file_access_buffered.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_BUFFERED_H
#define FILE_ACCESS_BUFFERED_H
diff --git a/core/io/file_access_buffered_fa.h b/core/io/file_access_buffered_fa.h
index bb3d3f33f6..493fa1c243 100644
--- a/core/io/file_access_buffered_fa.h
+++ b/core/io/file_access_buffered_fa.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_BUFFERED_FA_H
#define FILE_ACCESS_BUFFERED_FA_H
diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp
index aabd70cc7b..d6547ba19f 100644
--- a/core/io/file_access_compressed.cpp
+++ b/core/io/file_access_compressed.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_compressed.h"
#include "print_string.h"
void FileAccessCompressed::configure(const String &p_magic, Compression::Mode p_mode, int p_block_size) {
diff --git a/core/io/file_access_compressed.h b/core/io/file_access_compressed.h
index 65eefbcd97..587f58a7c6 100644
--- a/core/io/file_access_compressed.h
+++ b/core/io/file_access_compressed.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_COMPRESSED_H
#define FILE_ACCESS_COMPRESSED_H
diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp
index 67151f6934..221f457b78 100644
--- a/core/io/file_access_encrypted.cpp
+++ b/core/io/file_access_encrypted.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_encrypted.h"
#include "core/variant.h"
diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h
index 002a124e86..b9365a9fd0 100644
--- a/core/io/file_access_encrypted.h
+++ b/core/io/file_access_encrypted.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_ENCRYPTED_H
#define FILE_ACCESS_ENCRYPTED_H
diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp
index 8812aa847e..1aa1e4a595 100644
--- a/core/io/file_access_memory.cpp
+++ b/core/io/file_access_memory.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_memory.h"
#include "map.h"
diff --git a/core/io/file_access_memory.h b/core/io/file_access_memory.h
index 1d438409cc..2136f4cc0c 100644
--- a/core/io/file_access_memory.h
+++ b/core/io/file_access_memory.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_MEMORY_H
#define FILE_ACCESS_MEMORY_H
diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp
index 1aa431dcae..ef886cdb3c 100644
--- a/core/io/file_access_network.cpp
+++ b/core/io/file_access_network.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_network.h"
#include "io/ip.h"
#include "marshalls.h"
@@ -82,7 +83,7 @@ int64_t FileAccessNetworkClient::get_64() {
void FileAccessNetworkClient::_thread_func() {
- client->set_nodelay(true);
+ client->set_no_delay(true);
while (!quit) {
DEBUG_PRINT("SEM WAIT - " + itos(sem->get()));
diff --git a/core/io/file_access_network.h b/core/io/file_access_network.h
index 4d8e8f1a9a..be9bdb1af6 100644
--- a/core/io/file_access_network.h
+++ b/core/io/file_access_network.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_NETWORK_H
#define FILE_ACCESS_NETWORK_H
diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp
index 318e3ad759..1a16d0f61c 100644
--- a/core/io/file_access_pack.cpp
+++ b/core/io/file_access_pack.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_pack.h"
#include "version.h"
diff --git a/core/io/file_access_pack.h b/core/io/file_access_pack.h
index 6c5fec1498..8a40e6d78c 100644
--- a/core/io/file_access_pack.h
+++ b/core/io/file_access_pack.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_PACK_H
#define FILE_ACCESS_PACK_H
diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp
index c439ac7fa5..7b6385c3ff 100644
--- a/core/io/file_access_zip.cpp
+++ b/core/io/file_access_zip.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef MINIZIP_ENABLED
#include "file_access_zip.h"
diff --git a/core/io/file_access_zip.h b/core/io/file_access_zip.h
index b8f4a93e2a..df83575f6a 100644
--- a/core/io/file_access_zip.h
+++ b/core/io/file_access_zip.h
@@ -27,10 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef MINIZIP_ENABLED
-#ifndef FILE_ACCESS_Zip_H
-#define FILE_ACCESS_Zip_H
+#ifndef FILE_ACCESS_ZIP_H
+#define FILE_ACCESS_ZIP_H
#include "core/io/file_access_pack.h"
#include "map.h"
@@ -120,4 +121,4 @@ public:
#endif // FILE_ACCESS_ZIP_H
-#endif
+#endif // MINIZIP_ENABLED
diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp
index 088c05dfae..a9eb9466b7 100644
--- a/core/io/http_client.cpp
+++ b/core/io/http_client.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "http_client.h"
#include "io/stream_peer_ssl.h"
@@ -681,6 +682,9 @@ void HTTPClient::_bind_methods() {
ClassDB::bind_method(D_METHOD("query_string_from_dict", "fields"), &HTTPClient::query_string_from_dict);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "blocking_mode_enabled"), "set_blocking_mode", "is_blocking_mode_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "connection", PROPERTY_HINT_RESOURCE_TYPE, "StreamPeer", 0), "set_connection", "get_connection");
+
BIND_ENUM_CONSTANT(METHOD_GET);
BIND_ENUM_CONSTANT(METHOD_HEAD);
BIND_ENUM_CONSTANT(METHOD_POST);
diff --git a/core/io/http_client.h b/core/io/http_client.h
index 0fcaf26fdb..839012e701 100644
--- a/core/io/http_client.h
+++ b/core/io/http_client.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HTTP_CLIENT_H
#define HTTP_CLIENT_H
diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp
index c4cdb86c85..999c9a8ca2 100644
--- a/core/io/image_loader.cpp
+++ b/core/io/image_loader.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader.h"
#include "print_string.h"
diff --git a/core/io/image_loader.h b/core/io/image_loader.h
index b147566aed..052a8b8a40 100644
--- a/core/io/image_loader.h
+++ b/core/io/image_loader.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_H
#define IMAGE_LOADER_H
diff --git a/core/io/ip.cpp b/core/io/ip.cpp
index 9d55c5258f..66bd96df4f 100644
--- a/core/io/ip.cpp
+++ b/core/io/ip.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ip.h"
#include "hash_map.h"
#include "os/semaphore.h"
diff --git a/core/io/ip.h b/core/io/ip.h
index 69a9b7fd67..d55b05b6fe 100644
--- a/core/io/ip.h
+++ b/core/io/ip.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IP_H
#define IP_H
diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp
index 6495e0503d..7261363ad6 100644
--- a/core/io/ip_address.cpp
+++ b/core/io/ip_address.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ip_address.h"
/*
IP_Address::operator Variant() const {
diff --git a/core/io/ip_address.h b/core/io/ip_address.h
index 7a1c1a17e6..d7b031b960 100644
--- a/core/io/ip_address.h
+++ b/core/io/ip_address.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IP_ADDRESS_H
#define IP_ADDRESS_H
diff --git a/core/io/json.cpp b/core/io/json.cpp
index 1cc44f8558..7b2c5a62df 100644
--- a/core/io/json.cpp
+++ b/core/io/json.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "json.h"
#include "print_string.h"
diff --git a/core/io/json.h b/core/io/json.h
index f47e0c42c4..9c12423798 100644
--- a/core/io/json.h
+++ b/core/io/json.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JSON_H
#define JSON_H
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp
index 3bdd4454e1..9e21287780 100644
--- a/core/io/marshalls.cpp
+++ b/core/io/marshalls.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "marshalls.h"
#include "os/keyboard.h"
#include "print_string.h"
@@ -332,7 +333,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
len -= 12;
buf += 12;
- if (flags & 2) // Obsolete format with property seperate from subpath
+ if (flags & 2) // Obsolete format with property separate from subpath
subnamecount++;
uint32_t total = namecount + subnamecount;
diff --git a/core/io/marshalls.h b/core/io/marshalls.h
index b7ce1d39e2..381e4e3d20 100644
--- a/core/io/marshalls.h
+++ b/core/io/marshalls.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MARSHALLS_H
#define MARSHALLS_H
diff --git a/core/io/networked_multiplayer_peer.cpp b/core/io/networked_multiplayer_peer.cpp
index 95a2048b09..6354eef8b5 100644
--- a/core/io/networked_multiplayer_peer.cpp
+++ b/core/io/networked_multiplayer_peer.cpp
@@ -27,11 +27,13 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "networked_multiplayer_peer.h"
void NetworkedMultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_transfer_mode", "mode"), &NetworkedMultiplayerPeer::set_transfer_mode);
+ ClassDB::bind_method(D_METHOD("get_transfer_mode"), &NetworkedMultiplayerPeer::get_transfer_mode);
ClassDB::bind_method(D_METHOD("set_target_peer", "id"), &NetworkedMultiplayerPeer::set_target_peer);
ClassDB::bind_method(D_METHOD("get_packet_peer"), &NetworkedMultiplayerPeer::get_packet_peer);
@@ -44,6 +46,9 @@ void NetworkedMultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_refuse_new_connections", "enable"), &NetworkedMultiplayerPeer::set_refuse_new_connections);
ClassDB::bind_method(D_METHOD("is_refusing_new_connections"), &NetworkedMultiplayerPeer::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");
+
BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE);
BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE_ORDERED);
BIND_ENUM_CONSTANT(TRANSFER_MODE_RELIABLE);
diff --git a/core/io/networked_multiplayer_peer.h b/core/io/networked_multiplayer_peer.h
index 3094aa8b99..66089c27b9 100644
--- a/core/io/networked_multiplayer_peer.h
+++ b/core/io/networked_multiplayer_peer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NETWORKED_MULTIPLAYER_PEER_H
#define NETWORKED_MULTIPLAYER_PEER_H
@@ -57,6 +58,7 @@ public:
};
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;
virtual int get_packet_peer() const = 0;
diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp
index 472f6296d2..bd851ebb6d 100644
--- a/core/io/packet_peer.cpp
+++ b/core/io/packet_peer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "packet_peer.h"
#include "io/marshalls.h"
@@ -140,6 +141,8 @@ void PacketPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_allow_object_decoding", "enable"), &PacketPeer::set_allow_object_decoding);
ClassDB::bind_method(D_METHOD("is_object_decoding_allowed"), &PacketPeer::is_object_decoding_allowed);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_object_decoding"), "set_allow_object_decoding", "is_object_decoding_allowed");
};
/***************/
@@ -152,11 +155,16 @@ void PacketPeerStream::_set_stream_peer(REF p_peer) {
void PacketPeerStream::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_stream_peer", "peer"), &PacketPeerStream::_set_stream_peer);
+ ClassDB::bind_method(D_METHOD("set_stream_peer", "peer"), &PacketPeerStream::set_stream_peer);
+ ClassDB::bind_method(D_METHOD("get_stream_peer"), &PacketPeerStream::get_stream_peer);
ClassDB::bind_method(D_METHOD("set_input_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_input_buffer_max_size);
ClassDB::bind_method(D_METHOD("set_output_buffer_max_size", "max_size_bytes"), &PacketPeerStream::set_output_buffer_max_size);
ClassDB::bind_method(D_METHOD("get_input_buffer_max_size"), &PacketPeerStream::get_input_buffer_max_size);
ClassDB::bind_method(D_METHOD("get_output_buffer_max_size"), &PacketPeerStream::get_output_buffer_max_size);
+
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "input_buffer_max_size"), "set_input_buffer_max_size", "get_input_buffer_max_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "output_buffer_max_size"), "set_output_buffer_max_size", "get_output_buffer_max_size");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream_peer", PROPERTY_HINT_RESOURCE_TYPE, "StreamPeer", 0), "set_stream_peer", "get_stream_peer");
}
Error PacketPeerStream::_poll_buffer() const {
@@ -261,6 +269,11 @@ void PacketPeerStream::set_stream_peer(const Ref<StreamPeer> &p_peer) {
peer = p_peer;
}
+Ref<StreamPeer> PacketPeerStream::get_stream_peer() const {
+
+ return peer;
+}
+
void PacketPeerStream::set_input_buffer_max_size(int p_max_size) {
//warning may lose packets
diff --git a/core/io/packet_peer.h b/core/io/packet_peer.h
index 3e9373a18d..b10152e96b 100644
--- a/core/io/packet_peer.h
+++ b/core/io/packet_peer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PACKET_PEER_H
#define PACKET_PEER_H
@@ -97,6 +98,7 @@ public:
virtual int get_max_packet_size() const;
void set_stream_peer(const Ref<StreamPeer> &p_peer);
+ Ref<StreamPeer> get_stream_peer() const;
void set_input_buffer_max_size(int p_max_size);
int get_input_buffer_max_size() const;
void set_output_buffer_max_size(int p_max_size);
diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp
index 708c7d456c..bfbea15582 100644
--- a/core/io/packet_peer_udp.cpp
+++ b/core/io/packet_peer_udp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "packet_peer_udp.h"
#include "io/ip.h"
diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h
index d0a1bcf195..035f4ad1c9 100644
--- a/core/io/packet_peer_udp.h
+++ b/core/io/packet_peer_udp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PACKET_PEER_UDP_H
#define PACKET_PEER_UDP_H
diff --git a/core/io/pck_packer.cpp b/core/io/pck_packer.cpp
index 13a36813ca..596060221e 100644
--- a/core/io/pck_packer.cpp
+++ b/core/io/pck_packer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "pck_packer.h"
#include "core/os/file_access.h"
diff --git a/core/io/pck_packer.h b/core/io/pck_packer.h
index e725155ed2..4fcf9a8822 100644
--- a/core/io/pck_packer.h
+++ b/core/io/pck_packer.h
@@ -27,6 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#ifndef PCK_PACKER_H
+#define PCK_PACKER_H
+
#include "core/reference.h"
class FileAccess;
@@ -57,3 +61,5 @@ public:
PCKPacker();
~PCKPacker();
};
+
+#endif // PCK_PACKER_H
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index d652720ad0..15c4835dc6 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_format_binary.h"
#include "core/image.h"
diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h
index 0329d02981..021f7f6a2f 100644
--- a/core/io/resource_format_binary.h
+++ b/core/io/resource_format_binary.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_FORMAT_BINARY_H
#define RESOURCE_FORMAT_BINARY_H
diff --git a/core/io/resource_import.cpp b/core/io/resource_import.cpp
index 8d21f41eab..cfe6655504 100644
--- a/core/io/resource_import.cpp
+++ b/core/io/resource_import.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_import.h"
#include "os/os.h"
@@ -137,9 +138,9 @@ void ResourceFormatImporter::get_recognized_extensions(List<String> *p_extension
Set<String> found;
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
+ for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
- E->get()->get_recognized_extensions(&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());
@@ -157,8 +158,8 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_
Set<String> found;
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
- String res_type = E->get()->get_resource_type();
+ for (int i = 0; i < importers.size(); i++) {
+ String res_type = importers[i]->get_resource_type();
if (res_type == String())
continue;
@@ -166,7 +167,7 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_
continue;
List<String> local_exts;
- E->get()->get_recognized_extensions(&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());
@@ -211,9 +212,9 @@ int ResourceFormatImporter::get_import_order(const String &p_path) const {
bool ResourceFormatImporter::handles_type(const String &p_type) const {
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
+ for (int i = 0; i < importers.size(); i++) {
- String res_type = E->get()->get_resource_type();
+ String res_type = importers[i]->get_resource_type();
if (res_type == String())
continue;
if (ClassDB::is_parent_class(res_type, p_type))
@@ -318,9 +319,9 @@ void ResourceFormatImporter::get_dependencies(const String &p_path, List<String>
Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String &p_name) const {
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
- if (E->get()->get_importer_name() == p_name) {
- return E->get();
+ for (int i = 0; i < importers.size(); i++) {
+ if (importers[i]->get_importer_name() == p_name) {
+ return importers[i];
}
}
@@ -329,12 +330,12 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String
void ResourceFormatImporter::get_importers_for_extension(const String &p_extension, List<Ref<ResourceImporter> > *r_importers) {
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
+ for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
- E->get()->get_recognized_extensions(&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()) {
- r_importers->push_back(E->get());
+ r_importers->push_back(importers[i]);
}
}
}
@@ -345,14 +346,14 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const St
Ref<ResourceImporter> importer;
float priority = 0;
- for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
+ for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
- E->get()->get_recognized_extensions(&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() && E->get()->get_priority() > priority) {
- importer = E->get();
- priority = E->get()->get_priority();
+ if (p_extension.to_lower() == F->get() && importers[i]->get_priority() > priority) {
+ importer = importers[i];
+ priority = importers[i]->get_priority();
}
}
}
diff --git a/core/io/resource_import.h b/core/io/resource_import.h
index 3583584092..80e0743eda 100644
--- a/core/io/resource_import.h
+++ b/core/io/resource_import.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_IMPORT_H
#define RESOURCE_IMPORT_H
@@ -45,7 +46,7 @@ class ResourceFormatImporter : public ResourceFormatLoader {
static ResourceFormatImporter *singleton;
- Set<Ref<ResourceImporter> > importers;
+ Vector<Ref<ResourceImporter> > importers;
public:
static ResourceFormatImporter *get_singleton() { return singleton; }
@@ -64,7 +65,7 @@ public:
String get_internal_resource_path(const String &p_path) const;
void get_internal_resource_path_list(const String &p_path, List<String> *r_paths);
- void add_importer(const Ref<ResourceImporter> &p_importer) { importers.insert(p_importer); }
+ void add_importer(const Ref<ResourceImporter> &p_importer) { importers.push_back(p_importer); }
void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); }
Ref<ResourceImporter> get_importer_by_name(const String &p_name) const;
Ref<ResourceImporter> get_importer_by_extension(const String &p_extension) const;
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index 527e6997e1..1351030d1e 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_loader.h"
#include "io/resource_import.h"
#include "os/file_access.h"
@@ -201,7 +202,8 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p
if (OS::get_singleton()->is_stdout_verbose())
print_line("load resource: " + local_path + " (cached)");
-
+ if (r_error)
+ *r_error = OK;
return RES(ResourceCache::get(local_path));
}
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h
index fad768778b..9be82abb42 100644
--- a/core/io/resource_loader.h
+++ b/core/io/resource_loader.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_LOADER_H
#define RESOURCE_LOADER_H
diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp
index 8a0ccd90ce..609dd7e93c 100644
--- a/core/io/resource_saver.cpp
+++ b/core/io/resource_saver.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_saver.h"
#include "os/file_access.h"
#include "project_settings.h"
diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h
index fd4d563e4a..396f37d414 100644
--- a/core/io/resource_saver.h
+++ b/core/io/resource_saver.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_SAVER_H
#define RESOURCE_SAVER_H
diff --git a/core/io/stream_peer.cpp b/core/io/stream_peer.cpp
index b0fd229ac0..f6c4948fc3 100644
--- a/core/io/stream_peer.cpp
+++ b/core/io/stream_peer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "stream_peer.h"
#include "io/marshalls.h"
@@ -374,18 +375,18 @@ void StreamPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_big_endian", "enable"), &StreamPeer::set_big_endian);
ClassDB::bind_method(D_METHOD("is_big_endian_enabled"), &StreamPeer::is_big_endian_enabled);
- ClassDB::bind_method(D_METHOD("put_8", "val"), &StreamPeer::put_8);
- ClassDB::bind_method(D_METHOD("put_u8", "val"), &StreamPeer::put_u8);
- ClassDB::bind_method(D_METHOD("put_16", "val"), &StreamPeer::put_16);
- ClassDB::bind_method(D_METHOD("put_u16", "val"), &StreamPeer::put_u16);
- ClassDB::bind_method(D_METHOD("put_32", "val"), &StreamPeer::put_32);
- ClassDB::bind_method(D_METHOD("put_u32", "val"), &StreamPeer::put_u32);
- ClassDB::bind_method(D_METHOD("put_64", "val"), &StreamPeer::put_64);
- ClassDB::bind_method(D_METHOD("put_u64", "val"), &StreamPeer::put_u64);
- ClassDB::bind_method(D_METHOD("put_float", "val"), &StreamPeer::put_float);
- ClassDB::bind_method(D_METHOD("put_double", "val"), &StreamPeer::put_double);
- ClassDB::bind_method(D_METHOD("put_utf8_string", "val"), &StreamPeer::put_utf8_string);
- ClassDB::bind_method(D_METHOD("put_var", "val"), &StreamPeer::put_var);
+ ClassDB::bind_method(D_METHOD("put_8", "value"), &StreamPeer::put_8);
+ ClassDB::bind_method(D_METHOD("put_u8", "value"), &StreamPeer::put_u8);
+ ClassDB::bind_method(D_METHOD("put_16", "value"), &StreamPeer::put_16);
+ ClassDB::bind_method(D_METHOD("put_u16", "value"), &StreamPeer::put_u16);
+ ClassDB::bind_method(D_METHOD("put_32", "value"), &StreamPeer::put_32);
+ ClassDB::bind_method(D_METHOD("put_u32", "value"), &StreamPeer::put_u32);
+ ClassDB::bind_method(D_METHOD("put_64", "value"), &StreamPeer::put_64);
+ ClassDB::bind_method(D_METHOD("put_u64", "value"), &StreamPeer::put_u64);
+ ClassDB::bind_method(D_METHOD("put_float", "value"), &StreamPeer::put_float);
+ ClassDB::bind_method(D_METHOD("put_double", "value"), &StreamPeer::put_double);
+ ClassDB::bind_method(D_METHOD("put_utf8_string", "value"), &StreamPeer::put_utf8_string);
+ ClassDB::bind_method(D_METHOD("put_var", "value"), &StreamPeer::put_var);
ClassDB::bind_method(D_METHOD("get_8"), &StreamPeer::get_8);
ClassDB::bind_method(D_METHOD("get_u8"), &StreamPeer::get_u8);
@@ -400,6 +401,8 @@ void StreamPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_string", "bytes"), &StreamPeer::get_string);
ClassDB::bind_method(D_METHOD("get_utf8_string", "bytes"), &StreamPeer::get_utf8_string);
ClassDB::bind_method(D_METHOD("get_var"), &StreamPeer::get_var);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "big_endian"), "set_big_endian", "is_big_endian_enabled");
}
////////////////////////////////
@@ -413,6 +416,8 @@ void StreamPeerBuffer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_data_array"), &StreamPeerBuffer::get_data_array);
ClassDB::bind_method(D_METHOD("clear"), &StreamPeerBuffer::clear);
ClassDB::bind_method(D_METHOD("duplicate"), &StreamPeerBuffer::duplicate);
+
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data_array"), "set_data_array", "get_data_array");
}
Error StreamPeerBuffer::put_data(const uint8_t *p_data, int p_bytes) {
diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h
index 212bff0e3e..ff9ae788ec 100644
--- a/core/io/stream_peer.h
+++ b/core/io/stream_peer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STREAM_PEER_H
#define STREAM_PEER_H
diff --git a/core/io/stream_peer_ssl.cpp b/core/io/stream_peer_ssl.cpp
index f92b57a044..633b353102 100644
--- a/core/io/stream_peer_ssl.cpp
+++ b/core/io/stream_peer_ssl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "stream_peer_ssl.h"
StreamPeerSSL *(*StreamPeerSSL::_create)() = NULL;
diff --git a/core/io/stream_peer_ssl.h b/core/io/stream_peer_ssl.h
index bb4d2edced..e4d14ebdfd 100644
--- a/core/io/stream_peer_ssl.h
+++ b/core/io/stream_peer_ssl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STREAM_PEER_SSL_H
#define STREAM_PEER_SSL_H
diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp
index 0524a35908..5d008904ff 100644
--- a/core/io/stream_peer_tcp.cpp
+++ b/core/io/stream_peer_tcp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "stream_peer_tcp.h"
StreamPeerTCP *(*StreamPeerTCP::_create)() = NULL;
@@ -54,6 +55,7 @@ void StreamPeerTCP::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connected_host"), &StreamPeerTCP::get_connected_host);
ClassDB::bind_method(D_METHOD("get_connected_port"), &StreamPeerTCP::get_connected_port);
ClassDB::bind_method(D_METHOD("disconnect_from_host"), &StreamPeerTCP::disconnect_from_host);
+ ClassDB::bind_method(D_METHOD("set_no_delay", "enabled"), &StreamPeerTCP::set_no_delay);
BIND_ENUM_CONSTANT(STATUS_NONE);
BIND_ENUM_CONSTANT(STATUS_CONNECTING);
diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h
index 9a14f57c28..8a16d820f2 100644
--- a/core/io/stream_peer_tcp.h
+++ b/core/io/stream_peer_tcp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STREAM_PEER_TCP_H
#define STREAM_PEER_TCP_H
@@ -64,7 +65,7 @@ public:
virtual void disconnect_from_host() = 0;
virtual IP_Address get_connected_host() const = 0;
virtual uint16_t get_connected_port() const = 0;
- virtual void set_nodelay(bool p_enabled) = 0;
+ virtual void set_no_delay(bool p_enabled) = 0;
static Ref<StreamPeerTCP> create_ref();
static StreamPeerTCP *create();
diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp
index 5d33cd6f15..5916d58390 100644
--- a/core/io/tcp_server.cpp
+++ b/core/io/tcp_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tcp_server.h"
TCP_Server *(*TCP_Server::_create)() = NULL;
diff --git a/core/io/tcp_server.h b/core/io/tcp_server.h
index 28c80f76f7..a250e8b249 100644
--- a/core/io/tcp_server.h
+++ b/core/io/tcp_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TCP_SERVER_H
#define TCP_SERVER_H
diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp
index 0f62dbeb94..e01e2a84c5 100644
--- a/core/io/translation_loader_po.cpp
+++ b/core/io/translation_loader_po.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "translation_loader_po.h"
#include "os/file_access.h"
#include "translation.h"
diff --git a/core/io/translation_loader_po.h b/core/io/translation_loader_po.h
index 82a2da103f..33cf9bd8b4 100644
--- a/core/io/translation_loader_po.h
+++ b/core/io/translation_loader_po.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TRANSLATION_LOADER_PO_H
#define TRANSLATION_LOADER_PO_H
diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp
index a88150fa36..33c9b56d5a 100644
--- a/core/io/xml_parser.cpp
+++ b/core/io/xml_parser.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "xml_parser.h"
#include "print_string.h"
//#define DEBUG_XML
diff --git a/core/io/xml_parser.h b/core/io/xml_parser.h
index 62d2d2bc94..297b57ffdc 100644
--- a/core/io/xml_parser.h
+++ b/core/io/xml_parser.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef XML_PARSER_H
#define XML_PARSER_H
diff --git a/core/io/zip_io.h b/core/io/zip_io.h
index d3c1d1fc57..3a7fdb0302 100644
--- a/core/io/zip_io.h
+++ b/core/io/zip_io.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ZIP_IO_H
#define ZIP_IO_H
diff --git a/core/list.h b/core/list.h
index 0c748aeb85..f977df4634 100644
--- a/core/list.h
+++ b/core/list.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GLOBALS_LIST_H
#define GLOBALS_LIST_H
@@ -387,7 +388,7 @@ public:
};
/**
- * return wether the list is empty
+ * return whether the list is empty
*/
_FORCE_INLINE_ bool empty() const {
diff --git a/core/map.h b/core/map.h
index 1e47b42625..5ff269c26b 100644
--- a/core/map.h
+++ b/core/map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MAP_H
#define MAP_H
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index cb90116d63..6908d7831d 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "a_star.h"
#include "geometry.h"
#include "scene/scene_string_names.h"
diff --git a/core/math/a_star.h b/core/math/a_star.h
index 563f82826d..f89e17c7bb 100644
--- a/core/math/a_star.h
+++ b/core/math/a_star.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ASTAR_H
#define ASTAR_H
diff --git a/core/math/aabb.cpp b/core/math/aabb.cpp
index a6e5ced296..cff19f990c 100644
--- a/core/math/aabb.cpp
+++ b/core/math/aabb.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "aabb.h"
#include "print_string.h"
diff --git a/core/math/aabb.h b/core/math/aabb.h
index ff49337204..39b8f403e7 100644
--- a/core/math/aabb.h
+++ b/core/math/aabb.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AABB_H
#define AABB_H
diff --git a/core/math/audio_frame.cpp b/core/math/audio_frame.cpp
index d22b0f05f4..eff817bbaa 100644
--- a/core/math/audio_frame.cpp
+++ b/core/math/audio_frame.cpp
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_frame.h"
diff --git a/core/math/audio_frame.h b/core/math/audio_frame.h
index fd58848c0b..67ba025e1c 100644
--- a/core/math/audio_frame.h
+++ b/core/math/audio_frame.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOFRAME_H
#define AUDIOFRAME_H
diff --git a/core/math/bsp_tree.cpp b/core/math/bsp_tree.cpp
index 5d8ac000ad..b1424e1d78 100644
--- a/core/math/bsp_tree.cpp
+++ b/core/math/bsp_tree.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "bsp_tree.h"
#include "error_macros.h"
#include "print_string.h"
diff --git a/core/math/bsp_tree.h b/core/math/bsp_tree.h
index 6a7b577fd0..fb16818ae7 100644
--- a/core/math/bsp_tree.h
+++ b/core/math/bsp_tree.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BSP_TREE_H
#define BSP_TREE_H
diff --git a/core/math/camera_matrix.cpp b/core/math/camera_matrix.cpp
index 8714a07336..1ab9b3532e 100644
--- a/core/math/camera_matrix.cpp
+++ b/core/math/camera_matrix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "camera_matrix.h"
#include "math_funcs.h"
#include "print_string.h"
diff --git a/core/math/camera_matrix.h b/core/math/camera_matrix.h
index 9dde244e58..226b4d572b 100644
--- a/core/math/camera_matrix.h
+++ b/core/math/camera_matrix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAMERA_MATRIX_H
#define CAMERA_MATRIX_H
diff --git a/core/math/face3.cpp b/core/math/face3.cpp
index e76719f736..801f2a3b4d 100644
--- a/core/math/face3.cpp
+++ b/core/math/face3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "face3.h"
#include "geometry.h"
diff --git a/core/math/face3.h b/core/math/face3.h
index dd4cb25c82..faed0fa8d4 100644
--- a/core/math/face3.h
+++ b/core/math/face3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FACE3_H
#define FACE3_H
diff --git a/core/math/geometry.cpp b/core/math/geometry.cpp
index b2145eca85..24f077a4ca 100644
--- a/core/math/geometry.cpp
+++ b/core/math/geometry.cpp
@@ -27,9 +27,21 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "geometry.h"
#include "print_string.h"
+bool Geometry::is_point_in_polygon(const Vector2 &p_point, const Vector<Vector2> &p_polygon) {
+
+ Vector<int> indices = Geometry::triangulate_polygon(p_polygon);
+ for (int j = 0; j + 3 <= indices.size(); j += 3) {
+ int i1 = indices[j], i2 = indices[j + 1], i3 = indices[j + 2];
+ if (Geometry::is_point_in_triangle(p_point, p_polygon[i1], p_polygon[i2], p_polygon[i3]))
+ return true;
+ }
+ return false;
+}
+
void Geometry::MeshData::optimize_vertices() {
Map<int, int> vtx_remap;
diff --git a/core/math/geometry.h b/core/math/geometry.h
index ac1a22289c..ca4363e129 100644
--- a/core/math/geometry.h
+++ b/core/math/geometry.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GEOMETRY_H
#define GEOMETRY_H
@@ -512,6 +513,9 @@ public:
return true;
}
+
+ static bool is_point_in_polygon(const Vector2 &p_point, const Vector<Vector2> &p_polygon);
+
static Vector2 get_closest_point_to_segment_uncapped_2d(const Vector2 &p_point, const Vector2 *p_segment) {
Vector2 p = p_point - p_segment[0];
diff --git a/core/math/math_2d.cpp b/core/math/math_2d.cpp
index 2c83bc1976..d2e4101999 100644
--- a/core/math/math_2d.cpp
+++ b/core/math/math_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "math_2d.h"
real_t Vector2::angle() const {
diff --git a/core/math/math_2d.h b/core/math/math_2d.h
index 32e1bb9152..8928349a44 100644
--- a/core/math/math_2d.h
+++ b/core/math/math_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATH_2D_H
#define MATH_2D_H
diff --git a/core/math/math_defs.h b/core/math/math_defs.h
index e260bcd54f..d3484d8d02 100644
--- a/core/math/math_defs.h
+++ b/core/math/math_defs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATH_DEFS_H
#define MATH_DEFS_H
diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp
index 1025e8be75..f060a8e4ab 100644
--- a/core/math/math_funcs.cpp
+++ b/core/math/math_funcs.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "math_funcs.h"
#include "core/os/os.h"
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index d2d49d85d6..e15abc6b50 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATH_FUNCS_H
#define MATH_FUNCS_H
diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp
index e1708a44b0..189b1ef9b3 100644
--- a/core/math/matrix3.cpp
+++ b/core/math/matrix3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "matrix3.h"
#include "math_funcs.h"
#include "os/copymem.h"
@@ -228,12 +229,24 @@ void Basis::scale(const Vector3 &p_scale) {
}
Basis Basis::scaled(const Vector3 &p_scale) const {
-
Basis m = *this;
m.scale(p_scale);
return m;
}
+void Basis::scale_local(const Vector3 &p_scale) {
+ // performs a scaling in object-local coordinate system:
+ // M -> (M.S.Minv).M = M.S.
+ *this = scaled_local(p_scale);
+}
+
+Basis Basis::scaled_local(const Vector3 &p_scale) const {
+ Basis b;
+ b.set_scale(p_scale);
+
+ return (*this) * b;
+}
+
void Basis::set_scale(const Vector3 &p_scale) {
set_axis(0, get_axis(0).normalized() * p_scale.x);
@@ -312,7 +325,8 @@ void Basis::rotate(const Vector3 &p_axis, real_t p_phi) {
}
void Basis::rotate_local(const Vector3 &p_axis, real_t p_phi) {
-
+ // performs a rotation in object-local coordinate system:
+ // M -> (M.R.Minv).M = M.R.
*this = rotated_local(p_axis, p_phi);
}
Basis Basis::rotated_local(const Vector3 &p_axis, real_t p_phi) const {
diff --git a/core/math/matrix3.h b/core/math/matrix3.h
index 71971bdea8..c426435729 100644
--- a/core/math/matrix3.h
+++ b/core/math/matrix3.h
@@ -103,6 +103,9 @@ public:
void scale(const Vector3 &p_scale);
Basis scaled(const Vector3 &p_scale) const;
+ void scale_local(const Vector3 &p_scale);
+ Basis scaled_local(const Vector3 &p_scale) const;
+
void set_scale(const Vector3 &p_scale);
Vector3 get_scale() const;
Vector3 get_signed_scale() const;
diff --git a/core/math/octree.h b/core/math/octree.h
index c874d60894..4e3d6257f0 100644
--- a/core/math/octree.h
+++ b/core/math/octree.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OCTREE_H
#define OCTREE_H
@@ -611,7 +612,7 @@ bool Octree<T, use_pairs, AL>::_remove_element_from_octant(Element *p_element, O
bool unpaired = false;
if (use_pairs && p_octant->last_pass != pass) {
- // check wether we should unpair stuff
+ // check whether we should unpair stuff
// always test pairable
typename List<Element *, AL>::Element *E = p_octant->pairable_elements.front();
while (E) {
diff --git a/core/math/plane.cpp b/core/math/plane.cpp
index c4e2f04fa6..78bb1771a4 100644
--- a/core/math/plane.cpp
+++ b/core/math/plane.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "plane.h"
#include "math_funcs.h"
diff --git a/core/math/plane.h b/core/math/plane.h
index 5497fde592..e567422dd0 100644
--- a/core/math/plane.h
+++ b/core/math/plane.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PLANE_H
#define PLANE_H
diff --git a/core/math/quat.cpp b/core/math/quat.cpp
index 5706848b35..9aa8b537d2 100644
--- a/core/math/quat.cpp
+++ b/core/math/quat.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "quat.h"
#include "matrix3.h"
#include "print_string.h"
diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp
index e13f2e9c18..102e454e02 100644
--- a/core/math/quick_hull.cpp
+++ b/core/math/quick_hull.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "quick_hull.h"
#include "map.h"
diff --git a/core/math/quick_hull.h b/core/math/quick_hull.h
index 40f601536f..eef4a9adff 100644
--- a/core/math/quick_hull.h
+++ b/core/math/quick_hull.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef QUICK_HULL_H
#define QUICK_HULL_H
diff --git a/core/math/transform.cpp b/core/math/transform.cpp
index ffad8cfc41..f727d00e30 100644
--- a/core/math/transform.cpp
+++ b/core/math/transform.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "transform.h"
#include "math_funcs.h"
#include "os/copymem.h"
diff --git a/core/math/transform.h b/core/math/transform.h
index e5bc7832a0..c06eaec604 100644
--- a/core/math/transform.h
+++ b/core/math/transform.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TRANSFORM_H
#define TRANSFORM_H
diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp
index 6138abc6b9..edd4ad3441 100644
--- a/core/math/triangle_mesh.cpp
+++ b/core/math/triangle_mesh.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "triangle_mesh.h"
#include "sort.h"
diff --git a/core/math/triangle_mesh.h b/core/math/triangle_mesh.h
index 4687b0e91b..9f145f2afb 100644
--- a/core/math/triangle_mesh.h
+++ b/core/math/triangle_mesh.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TRIANGLE_MESH_H
#define TRIANGLE_MESH_H
diff --git a/core/math/triangulate.cpp b/core/math/triangulate.cpp
index ff65142341..957e16f92c 100644
--- a/core/math/triangulate.cpp
+++ b/core/math/triangulate.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "triangulate.h"
real_t Triangulate::get_area(const Vector<Vector2> &contour) {
diff --git a/core/math/triangulate.h b/core/math/triangulate.h
index 01b4a50a3e..e336dc5756 100644
--- a/core/math/triangulate.h
+++ b/core/math/triangulate.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TRIANGULATE_H
#define TRIANGULATE_H
diff --git a/core/math/vector3.cpp b/core/math/vector3.cpp
index 02140bc337..78d52d5cd1 100644
--- a/core/math/vector3.cpp
+++ b/core/math/vector3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "vector3.h"
#include "matrix3.h"
diff --git a/core/math/vector3.h b/core/math/vector3.h
index 17dbdafbd4..10ec4f5641 100644
--- a/core/math/vector3.h
+++ b/core/math/vector3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VECTOR3_H
#define VECTOR3_H
diff --git a/core/message_queue.cpp b/core/message_queue.cpp
index b7b8827f4a..3ceafe1a30 100644
--- a/core/message_queue.cpp
+++ b/core/message_queue.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "message_queue.h"
#include "project_settings.h"
diff --git a/core/message_queue.h b/core/message_queue.h
index 7312f0e1e4..be5ffe4fae 100644
--- a/core/message_queue.h
+++ b/core/message_queue.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESSAGE_QUEUE_H
#define MESSAGE_QUEUE_H
diff --git a/core/method_bind.cpp b/core/method_bind.cpp
index 4022b22ffe..52ee9e0848 100644
--- a/core/method_bind.cpp
+++ b/core/method_bind.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
// object.h needs to be the first include *before* method_bind.h
// FIXME: Find out why and fix potential cyclical dependencies.
#include "object.h"
diff --git a/core/method_bind.h b/core/method_bind.h
index aaf3640ce9..e02d64c935 100644
--- a/core/method_bind.h
+++ b/core/method_bind.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef METHOD_BIND_H
#define METHOD_BIND_H
@@ -242,7 +243,7 @@ public:
PropertyInfo get_argument_info(int p_argument) const;
PropertyInfo get_return_info() const;
- void set_argument_names(const Vector<StringName> &p_names); //set by class, db, cant be inferred otherwise
+ void set_argument_names(const Vector<StringName> &p_names); //set by class, db, can't be inferred otherwise
Vector<StringName> get_argument_names() const;
#endif
diff --git a/core/method_ptrcall.h b/core/method_ptrcall.h
index 1fe0cf0bc0..2007c3def5 100644
--- a/core/method_ptrcall.h
+++ b/core/method_ptrcall.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef METHOD_PTRCALL_H
#define METHOD_PTRCALL_H
diff --git a/core/node_path.cpp b/core/node_path.cpp
index abde887b35..cd7ad77534 100644
--- a/core/node_path.cpp
+++ b/core/node_path.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "node_path.h"
#include "print_string.h"
diff --git a/core/node_path.h b/core/node_path.h
index af134e8409..288f39721f 100644
--- a/core/node_path.h
+++ b/core/node_path.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NODE_PATH_H
#define NODE_PATH_H
diff --git a/core/oa_hash_map.h b/core/oa_hash_map.h
index 308624dcc3..280aea6a14 100644
--- a/core/oa_hash_map.h
+++ b/core/oa_hash_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OA_HASH_MAP_H
#define OA_HASH_MAP_H
@@ -35,7 +36,7 @@
#include "os/copymem.h"
#include "os/memory.h"
-// uncomment this to disable intial local storage.
+// uncomment this to disable initial local storage.
#define OA_HASH_MAP_INITIAL_LOCAL_STORAGE
/**
diff --git a/core/object.cpp b/core/object.cpp
index 2e3196dc47..aaa37e6cf2 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "object.h"
#include "class_db.h"
@@ -604,11 +605,11 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons
p_list->push_back(PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_STORE_IF_NONZERO));
#ifdef TOOLS_ENABLED
if (editor_section_folding.size()) {
- p_list->push_back(PropertyInfo(Variant::ARRAY, CoreStringNames::get_singleton()->_sections_unfolded, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, CoreStringNames::get_singleton()->_sections_unfolded, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
#endif
if (!metadata.empty())
- p_list->push_back(PropertyInfo(Variant::DICTIONARY, "__meta__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_STORE_IF_NONZERO));
+ p_list->push_back(PropertyInfo(Variant::DICTIONARY, "__meta__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_STORE_IF_NONZERO));
if (script_instance && !p_reversed) {
p_list->push_back(PropertyInfo(Variant::NIL, "Script Variables", PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
script_instance->get_property_list(p_list);
diff --git a/core/object.h b/core/object.h
index 635c599154..8306b5a356 100644
--- a/core/object.h
+++ b/core/object.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OBJECT_H
#define OBJECT_H
@@ -85,6 +86,7 @@ enum PropertyHint {
PROPERTY_HINT_PROPERTY_OF_SCRIPT, ///< a property of a script & base
PROPERTY_HINT_OBJECT_TOO_BIG, ///< object is too big to send
PROPERTY_HINT_MAX,
+ // When updating PropertyHint, also sync the hardcoded list in VisualScriptEditorVariableEdit
};
enum PropertyUsageFlags {
@@ -110,10 +112,11 @@ enum PropertyUsageFlags {
PROPERTY_USAGE_CLASS_IS_ENUM = 1 << 18,
PROPERTY_USAGE_NIL_IS_VARIANT = 1 << 19,
PROPERTY_USAGE_INTERNAL = 1 << 20,
+ PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE = 1 << 21, // If the object is duplicated also this property will be duplicated
PROPERTY_USAGE_DEFAULT = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK,
PROPERTY_USAGE_DEFAULT_INTL = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_NETWORK | PROPERTY_USAGE_INTERNATIONALIZED,
- PROPERTY_USAGE_NOEDITOR = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK | PROPERTY_USAGE_INTERNAL,
+ PROPERTY_USAGE_NOEDITOR = PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_NETWORK,
};
#define ADD_SIGNAL(m_signal) ClassDB::add_signal(get_class_static(), m_signal)
diff --git a/core/ordered_hash_map.h b/core/ordered_hash_map.h
index 5954952b6c..93ce9a90a7 100644
--- a/core/ordered_hash_map.h
+++ b/core/ordered_hash_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ORDERED_HASH_MAP_H
#define ORDERED_HASH_MAP_H
diff --git a/core/os/copymem.h b/core/os/copymem.h
index 998c0a8b9b..87d77bd426 100644
--- a/core/os/copymem.h
+++ b/core/os/copymem.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COPYMEM_H
#define COPYMEM_H
diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp
index c906fa7333..1941b82602 100644
--- a/core/os/dir_access.cpp
+++ b/core/os/dir_access.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dir_access.h"
#include "os/file_access.h"
#include "os/memory.h"
@@ -293,7 +294,7 @@ String DirAccess::get_full_path(const String &p_path, AccessType p_access) {
return full;
}
-Error DirAccess::copy(String p_from, String p_to, int chmod_flags) {
+Error DirAccess::copy(String p_from, String p_to, int p_chmod_flags) {
//printf("copy %s -> %s\n",p_from.ascii().get_data(),p_to.ascii().get_data());
Error err;
@@ -330,9 +331,9 @@ Error DirAccess::copy(String p_from, String p_to, int chmod_flags) {
fdst->store_8(fsrc->get_8());
}
- if (err == OK && chmod_flags != -1) {
+ if (err == OK && p_chmod_flags != -1) {
fdst->close();
- err = fdst->_chmod(p_to, chmod_flags);
+ err = fdst->_chmod(p_to, p_chmod_flags);
// If running on a platform with no chmod support (i.e., Windows), don't fail
if (err == ERR_UNAVAILABLE)
err = OK;
diff --git a/core/os/dir_access.h b/core/os/dir_access.h
index f29f61e838..4df0618021 100644
--- a/core/os/dir_access.h
+++ b/core/os/dir_access.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_H
#define DIR_ACCESS_H
@@ -92,8 +93,8 @@ public:
static bool exists(String p_dir);
virtual size_t get_space_left() = 0;
- Error copy_dir(String p_from, String p_to, int chmod_flags = -1);
- virtual Error copy(String p_from, String p_to, int chmod_flags = -1);
+ Error copy_dir(String p_from, String p_to, int p_chmod_flags = -1);
+ virtual Error copy(String p_from, String p_to, int p_chmod_flags = -1);
virtual Error rename(String p_from, String p_to) = 0;
virtual Error remove(String p_name) = 0;
diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp
index 989230b162..368b4ad09d 100644
--- a/core/os/file_access.cpp
+++ b/core/os/file_access.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access.h"
#include "core/io/file_access_pack.h"
diff --git a/core/os/file_access.h b/core/os/file_access.h
index 61edc9a5db..5d10c1a9aa 100644
--- a/core/os/file_access.h
+++ b/core/os/file_access.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_H
#define FILE_ACCESS_H
diff --git a/core/os/input.cpp b/core/os/input.cpp
index 2795b11243..3089ab2ce3 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "input.h"
#include "input_map.h"
#include "os/os.h"
@@ -84,7 +85,7 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("warp_mouse_position", "to"), &Input::warp_mouse_position);
ClassDB::bind_method(D_METHOD("action_press", "action"), &Input::action_press);
ClassDB::bind_method(D_METHOD("action_release", "action"), &Input::action_release);
- ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(Vector2()));
+ ClassDB::bind_method(D_METHOD("set_custom_mouse_cursor", "image", "shape", "hotspot"), &Input::set_custom_mouse_cursor, DEFVAL(CURSOR_ARROW), DEFVAL(Vector2()));
ClassDB::bind_method(D_METHOD("parse_input_event", "event"), &Input::parse_input_event);
BIND_ENUM_CONSTANT(MOUSE_MODE_VISIBLE);
@@ -92,6 +93,24 @@ void Input::_bind_methods() {
BIND_ENUM_CONSTANT(MOUSE_MODE_CAPTURED);
BIND_ENUM_CONSTANT(MOUSE_MODE_CONFINED);
+ BIND_ENUM_CONSTANT(CURSOR_ARROW);
+ BIND_ENUM_CONSTANT(CURSOR_IBEAM);
+ BIND_ENUM_CONSTANT(CURSOR_POINTING_HAND);
+ BIND_ENUM_CONSTANT(CURSOR_CROSS);
+ BIND_ENUM_CONSTANT(CURSOR_WAIT);
+ BIND_ENUM_CONSTANT(CURSOR_BUSY);
+ BIND_ENUM_CONSTANT(CURSOR_DRAG);
+ BIND_ENUM_CONSTANT(CURSOR_CAN_DROP);
+ BIND_ENUM_CONSTANT(CURSOR_FORBIDDEN);
+ BIND_ENUM_CONSTANT(CURSOR_VSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_HSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_BDIAGSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_FDIAGSIZE);
+ BIND_ENUM_CONSTANT(CURSOR_MOVE);
+ BIND_ENUM_CONSTANT(CURSOR_VSPLIT);
+ BIND_ENUM_CONSTANT(CURSOR_HSPLIT);
+ BIND_ENUM_CONSTANT(CURSOR_HELP);
+
ADD_SIGNAL(MethodInfo("joy_connection_changed", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "connected")));
}
diff --git a/core/os/input.h b/core/os/input.h
index 608484ccd0..9c7595ff7f 100644
--- a/core/os/input.h
+++ b/core/os/input.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INPUT_H
#define INPUT_H
@@ -51,6 +52,28 @@ public:
MOUSE_MODE_CONFINED
};
+#undef CursorShape
+ enum CursorShape {
+ CURSOR_ARROW,
+ CURSOR_IBEAM,
+ CURSOR_POINTING_HAND,
+ CURSOR_CROSS,
+ CURSOR_WAIT,
+ CURSOR_BUSY,
+ CURSOR_DRAG,
+ CURSOR_CAN_DROP,
+ CURSOR_FORBIDDEN,
+ CURSOR_VSIZE,
+ CURSOR_HSIZE,
+ CURSOR_BDIAGSIZE,
+ CURSOR_FDIAGSIZE,
+ CURSOR_MOVE,
+ CURSOR_VSPLIT,
+ CURSOR_HSPLIT,
+ CURSOR_HELP,
+ CURSOR_MAX
+ };
+
void set_mouse_mode(MouseMode p_mode);
MouseMode get_mouse_mode() const;
@@ -96,7 +119,7 @@ public:
virtual bool is_emulating_touchscreen() const = 0;
- virtual void set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot = Vector2()) = 0;
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = CURSOR_ARROW, const Vector2 &p_hotspot = Vector2()) = 0;
virtual void set_mouse_in_window(bool p_in_window) = 0;
virtual String get_joy_button_string(int p_button) = 0;
@@ -110,5 +133,6 @@ public:
};
VARIANT_ENUM_CAST(Input::MouseMode);
+VARIANT_ENUM_CAST(Input::CursorShape);
#endif // INPUT_H
diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp
index 67590517fb..12060f31df 100644
--- a/core/os/input_event.cpp
+++ b/core/os/input_event.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "input_event.h"
#include "input_map.h"
diff --git a/core/os/input_event.h b/core/os/input_event.h
index 53da79f59f..ad754d0d1f 100644
--- a/core/os/input_event.h
+++ b/core/os/input_event.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INPUT_EVENT_H
#define INPUT_EVENT_H
@@ -109,8 +110,8 @@ enum JoystickList {
JOY_WII_C = JOY_BUTTON_5,
JOY_WII_Z = JOY_BUTTON_6,
- JOY_WII_MINUS = JOY_BUTTON_9,
- JOY_WII_PLUS = JOY_BUTTON_10,
+ JOY_WII_MINUS = JOY_BUTTON_10,
+ JOY_WII_PLUS = JOY_BUTTON_11,
// end of history
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 00d78d71f7..fa53cc85c8 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "keyboard.h"
#include "os/os.h"
diff --git a/core/os/keyboard.h b/core/os/keyboard.h
index f910f07f99..4c253fa4ce 100644
--- a/core/os/keyboard.h
+++ b/core/os/keyboard.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef KEYBOARD_H
#define KEYBOARD_H
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index 186acb0342..916c86613e 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main_loop.h"
#include "script_language.h"
diff --git a/core/os/main_loop.h b/core/os/main_loop.h
index e5d917ec6b..546e4e280c 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MAIN_LOOP_H
#define MAIN_LOOP_H
diff --git a/core/os/memory.cpp b/core/os/memory.cpp
index a8b49a0852..3eab4343a9 100644
--- a/core/os/memory.cpp
+++ b/core/os/memory.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "memory.h"
#include "copymem.h"
#include "core/safe_refcount.h"
diff --git a/core/os/memory.h b/core/os/memory.h
index 27eb57c873..f5c6c0b38a 100644
--- a/core/os/memory.h
+++ b/core/os/memory.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MEMORY_H
#define MEMORY_H
diff --git a/core/os/mutex.cpp b/core/os/mutex.cpp
index 21480fecee..7c4ea2323c 100644
--- a/core/os/mutex.cpp
+++ b/core/os/mutex.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mutex.h"
#include "error_macros.h"
#include <stddef.h>
diff --git a/core/os/mutex.h b/core/os/mutex.h
index ecd1f59151..9debe7f41b 100644
--- a/core/os/mutex.h
+++ b/core/os/mutex.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MUTEX_H
#define MUTEX_H
diff --git a/core/os/os.cpp b/core/os/os.cpp
index bdcdfed060..c6e5de703c 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os.h"
#include "dir_access.h"
diff --git a/core/os/os.h b/core/os/os.h
index 5dc39b52d6..248e1dbefa 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_H
#define OS_H
@@ -121,7 +122,7 @@ protected:
void add_logger(Logger *p_logger);
virtual void initialize_core() = 0;
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) = 0;
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) = 0;
virtual void set_main_loop(MainLoop *p_main_loop) = 0;
virtual void delete_main_loop() = 0;
@@ -325,6 +326,7 @@ public:
virtual int get_virtual_keyboard_height() const;
virtual void set_cursor_shape(CursorShape p_shape) = 0;
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) = 0;
virtual bool get_swap_ok_cancel() { return false; }
virtual void dump_memory_to_file(const char *p_file);
diff --git a/core/os/rw_lock.cpp b/core/os/rw_lock.cpp
index 9603ccf0bb..35489490ed 100644
--- a/core/os/rw_lock.cpp
+++ b/core/os/rw_lock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rw_lock.h"
#include "error_macros.h"
diff --git a/core/os/rw_lock.h b/core/os/rw_lock.h
index d0ce38f453..9053794c83 100644
--- a/core/os/rw_lock.h
+++ b/core/os/rw_lock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RWLOCK_H
#define RWLOCK_H
diff --git a/core/os/semaphore.cpp b/core/os/semaphore.cpp
index 9455124e48..0377aeeb29 100644
--- a/core/os/semaphore.cpp
+++ b/core/os/semaphore.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "semaphore.h"
#include "error_macros.h"
diff --git a/core/os/semaphore.h b/core/os/semaphore.h
index 8bad64ace3..f3021bf74c 100644
--- a/core/os/semaphore.h
+++ b/core/os/semaphore.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEMAPHORE_H
#define SEMAPHORE_H
diff --git a/core/os/shell.cpp b/core/os/shell.cpp
index 781d922d4b..32649a0667 100644
--- a/core/os/shell.cpp
+++ b/core/os/shell.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shell.h"
Shell *Shell::singleton = NULL;
diff --git a/core/os/shell.h b/core/os/shell.h
index 84ac7eae42..d3d92028ea 100644
--- a/core/os/shell.h
+++ b/core/os/shell.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHELL_H
#define SHELL_H
diff --git a/core/os/thread.cpp b/core/os/thread.cpp
index 13bf147caf..250cf80a37 100644
--- a/core/os/thread.cpp
+++ b/core/os/thread.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread.h"
Thread *(*Thread::create_func)(ThreadCreateCallback, void *, const Settings &) = NULL;
diff --git a/core/os/thread.h b/core/os/thread.h
index 92dd00cf0d..c2947bccab 100644
--- a/core/os/thread.h
+++ b/core/os/thread.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_H
#define THREAD_H
diff --git a/core/os/thread_dummy.cpp b/core/os/thread_dummy.cpp
index 2f8f3d4940..fa0bb3dafd 100644
--- a/core/os/thread_dummy.cpp
+++ b/core/os/thread_dummy.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_dummy.h"
#include "memory.h"
diff --git a/core/os/thread_dummy.h b/core/os/thread_dummy.h
index 5681f45092..b67b52a726 100644
--- a/core/os/thread_dummy.h
+++ b/core/os/thread_dummy.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_DUMMY_H
#define THREAD_DUMMY_H
diff --git a/core/os/thread_safe.cpp b/core/os/thread_safe.cpp
index 394876ae16..acb37df02b 100644
--- a/core/os/thread_safe.cpp
+++ b/core/os/thread_safe.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_safe.h"
#include "error_macros.h"
#include "os/memory.h"
diff --git a/core/os/thread_safe.h b/core/os/thread_safe.h
index 05510bcbb9..f0876f38a1 100644
--- a/core/os/thread_safe.h
+++ b/core/os/thread_safe.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_SAFE_H
#define THREAD_SAFE_H
diff --git a/core/os/threaded_array_processor.cpp b/core/os/threaded_array_processor.cpp
deleted file mode 100644
index 8e92508ea5..0000000000
--- a/core/os/threaded_array_processor.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "threaded_array_processor.h"
-
diff --git a/core/os/threaded_array_processor.h b/core/os/threaded_array_processor.h
index e584fbb193..e0fb589767 100644
--- a/core/os/threaded_array_processor.h
+++ b/core/os/threaded_array_processor.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* threaded_array_processor.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 THREADED_ARRAY_PROCESSOR_H
#define THREADED_ARRAY_PROCESSOR_H
diff --git a/core/packed_data_container.cpp b/core/packed_data_container.cpp
index 4d5890685b..eaccdba9bf 100644
--- a/core/packed_data_container.cpp
+++ b/core/packed_data_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "packed_data_container.h"
#include "core_string_names.h"
diff --git a/core/packed_data_container.h b/core/packed_data_container.h
index b711d795de..fe36417000 100644
--- a/core/packed_data_container.h
+++ b/core/packed_data_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PACKED_DATA_CONTAINER_H
#define PACKED_DATA_CONTAINER_H
diff --git a/core/pair.h b/core/pair.h
index 349c034ab7..1d35ae1b6c 100644
--- a/core/pair.h
+++ b/core/pair.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PAIR_H
#define PAIR_H
diff --git a/core/path_remap.cpp b/core/path_remap.cpp
index d92d034f1a..80308d72c0 100644
--- a/core/path_remap.cpp
+++ b/core/path_remap.cpp
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_remap.h"
diff --git a/core/path_remap.h b/core/path_remap.h
index 1b40c9cace..5e25628aeb 100644
--- a/core/path_remap.h
+++ b/core/path_remap.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_REMAP_H
#define PATH_REMAP_H
diff --git a/core/pool_allocator.cpp b/core/pool_allocator.cpp
index 13d5c5082f..d81e1912bf 100644
--- a/core/pool_allocator.cpp
+++ b/core/pool_allocator.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "pool_allocator.h"
#include "core/os/os.h"
diff --git a/core/pool_allocator.h b/core/pool_allocator.h
index a1cc65f1fd..d9731aa3eb 100644
--- a/core/pool_allocator.h
+++ b/core/pool_allocator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POOL_ALLOCATOR_H
#define POOL_ALLOCATOR_H
diff --git a/core/print_string.cpp b/core/print_string.cpp
index 2b366f8145..0355154488 100644
--- a/core/print_string.cpp
+++ b/core/print_string.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "print_string.h"
#include "os/os.h"
diff --git a/core/print_string.h b/core/print_string.h
index c3eaf3f336..3465888d4c 100644
--- a/core/print_string.h
+++ b/core/print_string.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PRINT_STRING_H
#define PRINT_STRING_H
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index bb2408fb1f..0991c0df68 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "project_settings.h"
#include "bind/core_bind.h"
@@ -166,7 +167,7 @@ bool ProjectSettings::_set(const StringName &p_name, const Variant &p_value) {
}
if (props.has(p_name)) {
- if (!props[p_name].overrided)
+ if (!props[p_name].overridden)
props[p_name].variant = p_value;
} else {
diff --git a/core/project_settings.h b/core/project_settings.h
index e60efea222..eba53441cf 100644
--- a/core/project_settings.h
+++ b/core/project_settings.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GLOBAL_CONFIG_H
#define GLOBAL_CONFIG_H
@@ -57,19 +58,19 @@ protected:
Variant variant;
Variant initial;
bool hide_from_editor;
- bool overrided;
+ bool overridden;
VariantContainer() :
order(0),
persist(false),
hide_from_editor(false),
- overrided(false) {
+ overridden(false) {
}
VariantContainer(const Variant &p_variant, int p_order, bool p_persist = false) :
order(p_order),
persist(p_persist),
variant(p_variant),
hide_from_editor(false),
- overrided(false) {
+ overridden(false) {
}
};
diff --git a/core/ref_ptr.cpp b/core/ref_ptr.cpp
index 0f5abdd455..e3ef817df1 100644
--- a/core/ref_ptr.cpp
+++ b/core/ref_ptr.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ref_ptr.h"
#include "reference.h"
diff --git a/core/ref_ptr.h b/core/ref_ptr.h
index 27acfb7982..a074718d22 100644
--- a/core/ref_ptr.h
+++ b/core/ref_ptr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REF_PTR_H
#define REF_PTR_H
/**
diff --git a/core/reference.cpp b/core/reference.cpp
index 3b5a9bc7cc..c33a7c683c 100644
--- a/core/reference.cpp
+++ b/core/reference.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "reference.h"
#include "script_language.h"
diff --git a/core/reference.h b/core/reference.h
index 16b912a402..a0bdb62258 100644
--- a/core/reference.h
+++ b/core/reference.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REFERENCE_H
#define REFERENCE_H
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index 29c7cf4606..006459c5f6 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_core_types.h"
#include "bind/core_bind.h"
diff --git a/core/register_core_types.h b/core/register_core_types.h
index 4f5b7e03af..201da5cd07 100644
--- a/core/register_core_types.h
+++ b/core/register_core_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_CORE_TYPES_H
#define REGISTER_CORE_TYPES_H
diff --git a/core/resource.cpp b/core/resource.cpp
index 3e411a8753..2eeed50d9d 100644
--- a/core/resource.cpp
+++ b/core/resource.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource.h"
#include "core_string_names.h"
@@ -73,7 +74,7 @@ void Resource::set_path(const String &p_path, bool p_take_over) {
bool exists = ResourceCache::resources.has(p_path);
ResourceCache::lock->read_unlock();
- ERR_EXPLAIN("Another resource is loaded from path: " + p_path);
+ ERR_EXPLAIN("Another resource is loaded from path: " + p_path + " (possible cyclic resource inclusion)");
ERR_FAIL_COND(exists);
}
}
diff --git a/core/resource.h b/core/resource.h
index 4c5a44d7fd..60c63bfe7f 100644
--- a/core/resource.h
+++ b/core/resource.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_H
#define RESOURCE_H
diff --git a/core/rid.cpp b/core/rid.cpp
index 3cfb28c044..9661af9271 100644
--- a/core/rid.cpp
+++ b/core/rid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rid.h"
RID_Data::~RID_Data() {
diff --git a/core/rid.h b/core/rid.h
index 3768083fe3..42306aea36 100644
--- a/core/rid.h
+++ b/core/rid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RID_H
#define RID_H
diff --git a/core/ring_buffer.h b/core/ring_buffer.h
index 4b4a7fe9cf..de4757612a 100644
--- a/core/ring_buffer.h
+++ b/core/ring_buffer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RINGBUFFER_H
#define RINGBUFFER_H
@@ -40,7 +41,7 @@ class RingBuffer {
int write_pos;
int size_mask;
- inline int inc(int &p_var, int p_size) {
+ inline int inc(int &p_var, int p_size) const {
int ret = p_var;
p_var += p_size;
p_var = p_var & size_mask;
@@ -50,7 +51,7 @@ class RingBuffer {
public:
T read() {
ERR_FAIL_COND_V(space_left() < 1, T());
- return data[inc(read_pos, 1)];
+ return data.ptr()[inc(read_pos, 1)];
};
int read(T *p_buf, int p_size, bool p_advance = true) {
@@ -63,8 +64,9 @@ public:
int end = pos + to_read;
end = MIN(end, size());
int total = end - pos;
+ const T *read = data.ptr();
for (int i = 0; i < total; i++) {
- p_buf[dst++] = data[pos + i];
+ p_buf[dst++] = read[pos + i];
};
to_read -= total;
pos = 0;
@@ -75,7 +77,7 @@ public:
return p_size;
};
- int copy(T *p_buf, int p_offset, int p_size) {
+ int copy(T *p_buf, int p_offset, int p_size) const {
int left = data_left();
if ((p_offset + p_size) > left) {
@@ -101,7 +103,7 @@ public:
return p_size;
};
- int find(const T &t, int p_offset, int p_max_size) {
+ int find(const T &t, int p_offset, int p_max_size) const {
int left = data_left();
if ((p_offset + p_max_size) > left) {
@@ -164,7 +166,7 @@ public:
return p_size;
};
- inline int space_left() {
+ inline int space_left() const {
int left = read_pos - write_pos;
if (left < 0) {
return size() + left - 1;
@@ -174,11 +176,11 @@ public:
};
return left - 1;
};
- inline int data_left() {
+ inline int data_left() const {
return size() - space_left() - 1;
};
- inline int size() {
+ inline int size() const {
return data.size();
};
diff --git a/core/safe_refcount.h b/core/safe_refcount.h
index 217cf69145..eff209c2db 100644
--- a/core/safe_refcount.h
+++ b/core/safe_refcount.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SAFE_REFCOUNT_H
#define SAFE_REFCOUNT_H
diff --git a/core/script_debugger_local.cpp b/core/script_debugger_local.cpp
index 83cdb348bd..0da377453e 100644
--- a/core/script_debugger_local.cpp
+++ b/core/script_debugger_local.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_debugger_local.h"
#include "os/os.h"
@@ -293,6 +294,11 @@ void ScriptDebuggerLocal::send_message(const String &p_message, const Array &p_a
print_line("MESSAGE: '" + p_message + "' - " + String(Variant(p_args)));
}
+void ScriptDebuggerLocal::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) {
+
+ print_line("ERROR: '" + (p_descr.empty() ? p_err : p_descr) + "'");
+}
+
ScriptDebuggerLocal::ScriptDebuggerLocal() {
profiling = false;
diff --git a/core/script_debugger_local.h b/core/script_debugger_local.h
index f1111612b3..c87bc90bb4 100644
--- a/core/script_debugger_local.h
+++ b/core/script_debugger_local.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_DEBUGGER_LOCAL_H
#define SCRIPT_DEBUGGER_LOCAL_H
@@ -43,6 +44,7 @@ class ScriptDebuggerLocal : public ScriptDebugger {
public:
void debug(ScriptLanguage *p_script, bool p_can_continue);
virtual void send_message(const String &p_message, const Array &p_args);
+ virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info);
virtual bool is_profiling() const { return profiling; }
virtual void add_profiling_frame_data(const StringName &p_name, const Array &p_data) {}
diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp
index 27633ec553..41071ace5d 100644
--- a/core/script_debugger_remote.cpp
+++ b/core/script_debugger_remote.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_debugger_remote.h"
#include "engine.h"
@@ -67,17 +68,20 @@ Error ScriptDebuggerRemote::connect_to_host(const String &p_host, uint16_t p_por
int port = p_port;
- int tries = 3;
+ const int tries = 6;
+ int waits[tries] = { 1, 10, 100, 1000, 1000, 1000 };
+
tcp_client->connect_to_host(ip, port);
- while (tries--) {
+ for (int i = 0; i < tries; i++) {
if (tcp_client->get_status() == StreamPeerTCP::STATUS_CONNECTED) {
break;
} else {
- OS::get_singleton()->delay_usec(1000000);
- print_line("Remote Debugger: Connection failed with status: '" + String::num(tcp_client->get_status()) + "', retrying in 1 sec.");
+ const int ms = waits[i];
+ OS::get_singleton()->delay_usec(ms * 1000);
+ print_line("Remote Debugger: Connection failed with status: '" + String::num(tcp_client->get_status()) + "', retrying in " + String::num(ms) + " msec.");
};
};
@@ -126,15 +130,21 @@ static ObjectID safe_get_instance_id(const Variant &p_v) {
void ScriptDebuggerRemote::_put_variable(const String &p_name, const Variant &p_variable) {
packet_peer_stream->put_var(p_name);
+
+ Variant var = p_variable;
+ if (p_variable.get_type() == Variant::OBJECT && !ObjectDB::instance_validate(p_variable)) {
+ var = Variant();
+ }
+
int len = 0;
- Error err = encode_variant(p_variable, NULL, len);
+ Error err = encode_variant(var, NULL, len);
if (err != OK)
ERR_PRINT("Failed to encode variant");
if (len > packet_peer_stream->get_output_buffer_max_size()) { //limit to max size
packet_peer_stream->put_var(Variant());
} else {
- packet_peer_stream->put_var(p_variable);
+ packet_peer_stream->put_var(var);
}
}
@@ -345,6 +355,13 @@ void ScriptDebuggerRemote::_get_output() {
locking = false;
}
+ if (n_messages_dropped > 0) {
+ Message msg;
+ msg.message = "Too many messages! " + String::num_int64(n_messages_dropped) + " messages were dropped.";
+ messages.push_back(msg);
+ n_messages_dropped = 0;
+ }
+
while (messages.size()) {
locking = true;
packet_peer_stream->put_var("message:" + messages.front()->get().message);
@@ -356,6 +373,20 @@ void ScriptDebuggerRemote::_get_output() {
locking = false;
}
+ if (n_errors_dropped > 0) {
+ OutputError oe;
+ oe.error = "TOO_MANY_ERRORS";
+ oe.error_descr = "Too many errors! " + String::num_int64(n_errors_dropped) + " errors were dropped.";
+ oe.warning = false;
+ uint64_t time = OS::get_singleton()->get_ticks_msec();
+ oe.hr = time / 3600000;
+ oe.min = (time / 60000) % 60;
+ oe.sec = (time / 1000) % 60;
+ oe.msec = time % 1000;
+ errors.push_back(oe);
+ n_errors_dropped = 0;
+ }
+
while (errors.size()) {
locking = true;
packet_peer_stream->put_var("error");
@@ -401,22 +432,6 @@ void ScriptDebuggerRemote::_err_handler(void *ud, const char *p_func, const char
if (p_type == ERR_HANDLER_SCRIPT)
return; //ignore script errors, those go through debugger
- ScriptDebuggerRemote *sdr = (ScriptDebuggerRemote *)ud;
-
- OutputError oe;
- oe.error = p_err;
- oe.error_descr = p_descr;
- oe.source_file = p_file;
- oe.source_line = p_line;
- oe.source_func = p_func;
- oe.warning = p_type == ERR_HANDLER_WARNING;
- uint64_t time = OS::get_singleton()->get_ticks_msec();
- oe.hr = time / 3600000;
- oe.min = (time / 60000) % 60;
- oe.sec = (time / 1000) % 60;
- oe.msec = time % 1000;
- Array cstack;
-
Vector<ScriptLanguage::StackInfo> si;
for (int i = 0; i < ScriptServer::get_language_count(); i++) {
@@ -425,28 +440,8 @@ void ScriptDebuggerRemote::_err_handler(void *ud, const char *p_func, const char
break;
}
- cstack.resize(si.size() * 2);
- for (int i = 0; i < si.size(); i++) {
- String path;
- int line = 0;
- if (si[i].script.is_valid()) {
- path = si[i].script->get_path();
- line = si[i].line;
- }
- cstack[i * 2 + 0] = path;
- cstack[i * 2 + 1] = line;
- }
-
- oe.callstack = cstack;
-
- sdr->mutex->lock();
-
- if (!sdr->locking && sdr->tcp_client->is_connected_to_host()) {
-
- sdr->errors.push_back(oe);
- }
-
- sdr->mutex->unlock();
+ ScriptDebuggerRemote *sdr = (ScriptDebuggerRemote *)ud;
+ sdr->send_error(p_func, p_file, p_line, p_err, p_descr, p_type, si);
}
bool ScriptDebuggerRemote::_parse_live_edit(const Array &p_command) {
@@ -603,7 +598,13 @@ void ScriptDebuggerRemote::_send_object_id(ObjectID p_id) {
Array send_props;
for (int i = 0; i < properties.size(); i++) {
const PropertyInfo &pi = properties[i].first;
- const Variant &var = properties[i].second;
+ Variant &var = properties[i].second;
+
+ WeakRef *ref = Object::cast_to<WeakRef>(var);
+ if (ref) {
+ var = ref->get_ref();
+ }
+
RES res = var;
Array prop;
@@ -881,11 +882,54 @@ void ScriptDebuggerRemote::send_message(const String &p_message, const Array &p_
mutex->lock();
if (!locking && tcp_client->is_connected_to_host()) {
- Message msg;
- msg.message = p_message;
- msg.data = p_args;
- messages.push_back(msg);
+ if (messages.size() >= max_messages_per_frame) {
+ n_messages_dropped++;
+ } else {
+ Message msg;
+ msg.message = p_message;
+ msg.data = p_args;
+ messages.push_back(msg);
+ }
+ }
+ mutex->unlock();
+}
+
+void ScriptDebuggerRemote::send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) {
+
+ OutputError oe;
+ oe.error = p_err;
+ oe.error_descr = p_descr;
+ oe.source_file = p_file;
+ oe.source_line = p_line;
+ oe.source_func = p_func;
+ oe.warning = p_type == ERR_HANDLER_WARNING;
+ uint64_t time = OS::get_singleton()->get_ticks_msec();
+ oe.hr = time / 3600000;
+ oe.min = (time / 60000) % 60;
+ oe.sec = (time / 1000) % 60;
+ oe.msec = time % 1000;
+ Array cstack;
+
+ cstack.resize(p_stack_info.size() * 3);
+ for (int i = 0; i < p_stack_info.size(); i++) {
+ cstack[i * 3 + 0] = p_stack_info[i].file;
+ cstack[i * 3 + 1] = p_stack_info[i].func;
+ cstack[i * 3 + 2] = p_stack_info[i].line;
}
+
+ oe.callstack = cstack;
+
+ mutex->lock();
+
+ if (!locking && tcp_client->is_connected_to_host()) {
+
+ if (errors.size() >= max_errors_per_frame) {
+ n_errors_dropped++;
+ } else {
+ errors.push_back(oe);
+ }
+ }
+
mutex->unlock();
}
@@ -1001,7 +1045,11 @@ ScriptDebuggerRemote::ScriptDebuggerRemote() :
requested_quit(false),
mutex(Mutex::create()),
max_cps(GLOBAL_GET("network/limits/debugger_stdout/max_chars_per_second")),
+ max_messages_per_frame(GLOBAL_GET("network/limits/debugger_stdout/max_messages_per_frame")),
+ max_errors_per_frame(GLOBAL_GET("network/limits/debugger_stdout/max_errors_per_frame")),
char_count(0),
+ n_messages_dropped(0),
+ n_errors_dropped(0),
last_msec(0),
msec_count(0),
locking(false),
diff --git a/core/script_debugger_remote.h b/core/script_debugger_remote.h
index 15afc866e3..2c4e29f172 100644
--- a/core/script_debugger_remote.h
+++ b/core/script_debugger_remote.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_DEBUGGER_REMOTE_H
#define SCRIPT_DEBUGGER_REMOTE_H
@@ -86,7 +87,11 @@ class ScriptDebuggerRemote : public ScriptDebugger {
List<String> output_strings;
List<Message> messages;
+ int max_messages_per_frame;
+ int n_messages_dropped;
List<OutputError> errors;
+ int max_errors_per_frame;
+ int n_errors_dropped;
int max_cps;
int char_count;
@@ -152,6 +157,7 @@ public:
virtual void request_quit();
virtual void send_message(const String &p_message, const Array &p_args);
+ virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info);
virtual void set_request_scene_tree_message_func(RequestSceneTreeMessageFunc p_func, void *p_udata);
virtual void set_live_edit_funcs(LiveEditFuncs *p_funcs);
diff --git a/core/script_language.cpp b/core/script_language.cpp
index 773eb29036..1dab58e29e 100644
--- a/core/script_language.cpp
+++ b/core/script_language.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_language.h"
ScriptLanguage *ScriptServer::_languages[MAX_LANGUAGES];
@@ -60,6 +61,8 @@ void Script::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_script_signal", "signal_name"), &Script::has_script_signal);
ClassDB::bind_method(D_METHOD("is_tool"), &Script::is_tool);
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "source_code", PROPERTY_HINT_NONE, "", 0), "set_source_code", "get_source_code");
}
void ScriptServer::set_scripting_enabled(bool p_enabled) {
diff --git a/core/script_language.h b/core/script_language.h
index 1a9d101ddd..d1da0a3b72 100644
--- a/core/script_language.h
+++ b/core/script_language.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_LANGUAGE_H
#define SCRIPT_LANGUAGE_H
@@ -178,7 +179,7 @@ class ScriptCodeCompletionCache {
public:
virtual RES get_cached_resource(const String &p_path) = 0;
- static ScriptCodeCompletionCache *get_sigleton() { return singleton; }
+ static ScriptCodeCompletionCache *get_singleton() { return singleton; }
ScriptCodeCompletionCache();
};
@@ -253,7 +254,8 @@ public:
virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1) = 0;
struct StackInfo {
- Ref<Script> script;
+ String file;
+ String func;
int line;
};
@@ -390,6 +392,7 @@ public:
ScriptLanguage *get_break_language() const;
virtual void send_message(const String &p_message, const Array &p_args) = 0;
+ virtual void send_error(const String &p_func, const String &p_file, int p_line, const String &p_err, const String &p_descr, ErrorHandlerType p_type, const Vector<ScriptLanguage::StackInfo> &p_stack_info) = 0;
virtual bool is_remote() const { return false; }
virtual void request_quit() {}
diff --git a/core/self_list.h b/core/self_list.h
index bb7f1a8a5b..e83afb66ef 100644
--- a/core/self_list.h
+++ b/core/self_list.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SELF_LIST_H
#define SELF_LIST_H
diff --git a/core/set.h b/core/set.h
index b2a8ee1636..4f17c953b1 100644
--- a/core/set.h
+++ b/core/set.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SET_H
#define SET_H
diff --git a/core/simple_type.h b/core/simple_type.h
index 5429719f02..a645d03181 100644
--- a/core/simple_type.h
+++ b/core/simple_type.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SIMPLE_TYPE_H
#define SIMPLE_TYPE_H
diff --git a/core/sort.h b/core/sort.h
index 94c2c1ecdf..a6780309d8 100644
--- a/core/sort.h
+++ b/core/sort.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SORT_H
#define SORT_H
diff --git a/core/string_buffer.cpp b/core/string_buffer.cpp
index 970477b90b..aac2090378 100644
--- a/core/string_buffer.cpp
+++ b/core/string_buffer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "string_buffer.h"
#include <string.h>
diff --git a/core/string_buffer.h b/core/string_buffer.h
index 4b502f3d92..f0ead66bb8 100644
--- a/core/string_buffer.h
+++ b/core/string_buffer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STRING_BUFFER_H
#define STRING_BUFFER_H
diff --git a/core/string_builder.cpp b/core/string_builder.cpp
index f24e23c986..8ab7e0ea8f 100644
--- a/core/string_builder.cpp
+++ b/core/string_builder.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "string_builder.h"
#include <string.h>
@@ -55,6 +56,9 @@ StringBuilder &StringBuilder::append(const char *p_cstring) {
String StringBuilder::as_string() const {
+ if (string_length == 0)
+ return "";
+
CharType *buffer = memnew_arr(CharType, string_length);
int current_position = 0;
diff --git a/core/string_builder.h b/core/string_builder.h
index 48e3fd663f..9e2599ac32 100644
--- a/core/string_builder.h
+++ b/core/string_builder.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STRING_BUILDER_H
#define STRING_BUILDER_H
diff --git a/core/string_db.cpp b/core/string_db.cpp
index 3d77aee0a1..6e1f887754 100644
--- a/core/string_db.cpp
+++ b/core/string_db.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "string_db.h"
#include "os/os.h"
diff --git a/core/string_db.h b/core/string_db.h
index 5e3086d4ec..28ca812a45 100644
--- a/core/string_db.h
+++ b/core/string_db.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STRING_DB_H
#define STRING_DB_H
diff --git a/core/translation.cpp b/core/translation.cpp
index 0c9af4e624..32096d2eab 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "translation.h"
#include "io/resource_loader.h"
@@ -872,7 +873,7 @@ void Translation::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_messages"), &Translation::_set_messages);
ClassDB::bind_method(D_METHOD("_get_messages"), &Translation::_get_messages);
- ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "messages", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_messages", "_get_messages");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "messages", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_messages", "_get_messages");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "locale"), "set_locale", "get_locale");
}
diff --git a/core/translation.h b/core/translation.h
index b8ff1722f5..e7c0dcbc07 100644
--- a/core/translation.h
+++ b/core/translation.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TRANSLATION_H
#define TRANSLATION_H
diff --git a/core/type_info.h b/core/type_info.h
index 24d96c51e8..c1af4fac69 100644
--- a/core/type_info.h
+++ b/core/type_info.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* type_info.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 GET_TYPE_INFO_H
#define GET_TYPE_INFO_H
diff --git a/core/typedefs.h b/core/typedefs.h
index 9508fe28db..4758a5408d 100644
--- a/core/typedefs.h
+++ b/core/typedefs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TYPEDEFS_H
#define TYPEDEFS_H
diff --git a/core/ucaps.h b/core/ucaps.h
index 764350504a..95bac1aac6 100644
--- a/core/ucaps.h
+++ b/core/ucaps.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef UCAPS_H
#define UCAPS_H
diff --git a/core/undo_redo.cpp b/core/undo_redo.cpp
index 46d38b3abc..b3f9dd818d 100644
--- a/core/undo_redo.cpp
+++ b/core/undo_redo.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "undo_redo.h"
#include "os/os.h"
@@ -107,6 +108,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode) {
void UndoRedo::add_do_method(Object *p_object, const String &p_method, VARIANT_ARG_DECLARE) {
VARIANT_ARGPTRS
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
@@ -126,6 +128,7 @@ void UndoRedo::add_do_method(Object *p_object, const String &p_method, VARIANT_A
void UndoRedo::add_undo_method(Object *p_object, const String &p_method, VARIANT_ARG_DECLARE) {
VARIANT_ARGPTRS
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
@@ -148,6 +151,7 @@ void UndoRedo::add_undo_method(Object *p_object, const String &p_method, VARIANT
}
void UndoRedo::add_do_property(Object *p_object, const String &p_property, const Variant &p_value) {
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
@@ -162,6 +166,7 @@ void UndoRedo::add_do_property(Object *p_object, const String &p_property, const
}
void UndoRedo::add_undo_property(Object *p_object, const String &p_property, const Variant &p_value) {
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
@@ -181,6 +186,7 @@ void UndoRedo::add_undo_property(Object *p_object, const String &p_property, con
}
void UndoRedo::add_do_reference(Object *p_object) {
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
Operation do_op;
@@ -193,6 +199,7 @@ void UndoRedo::add_do_reference(Object *p_object) {
}
void UndoRedo::add_undo_reference(Object *p_object) {
+ ERR_FAIL_COND(p_object == NULL);
ERR_FAIL_COND(action_level <= 0);
ERR_FAIL_COND((current_action + 1) >= actions.size());
@@ -239,13 +246,6 @@ void UndoRedo::commit_action() {
redo(); // perform action
- if (max_steps > 0 && actions.size() > max_steps) {
- //clear early steps
-
- while (actions.size() > max_steps)
- _pop_history_tail();
- }
-
if (callback && actions.size() > 0) {
callback(callback_ud, actions[actions.size() - 1].name);
}
@@ -340,16 +340,6 @@ String UndoRedo::get_current_action_name() const {
return actions[current_action].name;
}
-void UndoRedo::set_max_steps(int p_max_steps) {
-
- max_steps = p_max_steps;
-}
-
-int UndoRedo::get_max_steps() const {
-
- return max_steps;
-}
-
uint64_t UndoRedo::get_version() const {
return version;
@@ -378,7 +368,6 @@ UndoRedo::UndoRedo() {
version = 1;
action_level = 0;
current_action = -1;
- max_steps = -1;
merge_mode = MERGE_DISABLE;
callback = NULL;
callback_ud = NULL;
@@ -503,8 +492,6 @@ void UndoRedo::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_history"), &UndoRedo::clear_history);
ClassDB::bind_method(D_METHOD("get_current_action_name"), &UndoRedo::get_current_action_name);
ClassDB::bind_method(D_METHOD("get_version"), &UndoRedo::get_version);
- ClassDB::bind_method(D_METHOD("set_max_steps", "max_steps"), &UndoRedo::set_max_steps);
- ClassDB::bind_method(D_METHOD("get_max_steps"), &UndoRedo::get_max_steps);
ClassDB::bind_method(D_METHOD("redo"), &UndoRedo::redo);
ClassDB::bind_method(D_METHOD("undo"), &UndoRedo::undo);
diff --git a/core/undo_redo.h b/core/undo_redo.h
index 27bd7c2fd0..a373296b73 100644
--- a/core/undo_redo.h
+++ b/core/undo_redo.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef UNDO_REDO_H
#define UNDO_REDO_H
@@ -78,7 +79,6 @@ private:
Vector<Action> actions;
int current_action;
int action_level;
- int max_steps;
MergeMode merge_mode;
uint64_t version;
@@ -114,9 +114,6 @@ public:
String get_current_action_name() const;
void clear_history();
- void set_max_steps(int p_max_steps);
- int get_max_steps() const;
-
uint64_t get_version() const;
void set_commit_notify_callback(CommitNotifyCallback p_callback, void *p_ud);
diff --git a/core/ustring.cpp b/core/ustring.cpp
index 11d83a5733..d445e4ed47 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ustring.h"
#include "color.h"
@@ -685,6 +686,9 @@ Vector<String> String::split_spaces() const {
int from = 0;
int i = 0;
int len = length();
+ if (len == 0)
+ return ret;
+
bool inside = false;
while (true) {
@@ -1097,9 +1101,8 @@ String String::num(double p_num, int p_decimals) {
String String::num_int64(int64_t p_num, int base, bool capitalize_hex) {
bool sign = p_num < 0;
- int64_t num = ABS(p_num);
- int64_t n = num;
+ int64_t n = p_num;
int chars = 0;
do {
@@ -1113,9 +1116,9 @@ String String::num_int64(int64_t p_num, int base, bool capitalize_hex) {
s.resize(chars + 1);
CharType *c = s.ptrw();
c[chars] = 0;
- n = num;
+ n = p_num;
do {
- int mod = n % base;
+ int mod = ABS(n % base);
if (mod >= 10) {
char a = (capitalize_hex ? 'A' : 'a');
c[--chars] = a + (mod - 10);
@@ -2214,7 +2217,7 @@ int String::find(const String &p_str, int p_from) const {
const int len = length();
if (src_len == 0 || len == 0)
- return -1; //wont find anything!
+ return -1; // won't find anything!
const CharType *src = c_str();
const CharType *str = p_str.c_str();
@@ -2253,7 +2256,7 @@ int String::find(const char *p_str, int p_from) const {
const int len = length();
if (len == 0)
- return -1; //wont find anything!
+ return -1; // won't find anything!
const CharType *src = c_str();
@@ -2314,7 +2317,7 @@ int String::findmk(const Vector<String> &p_keys, int p_from, int *r_key) const {
int len = length();
if (len == 0)
- return -1; //wont find anything!
+ return -1; // won't find anything!
const CharType *src = c_str();
@@ -2363,7 +2366,7 @@ int String::findn(const String &p_str, int p_from) const {
int src_len = p_str.length();
if (src_len == 0 || length() == 0)
- return -1; //wont find anything!
+ return -1; // won't find anything!
const CharType *srcd = c_str();
@@ -2459,7 +2462,7 @@ int String::rfindn(const String &p_str, int p_from) const {
int len = length();
if (src_len == 0 || len == 0)
- return -1; //wont find anything!
+ return -1; // won't find anything!
const CharType *src = c_str();
@@ -3164,7 +3167,7 @@ String String::http_unescape() const {
if ((ord1 >= '0' && ord1 <= '9') || (ord1 >= 'A' && ord1 <= 'Z')) {
CharType ord2 = ord_at(i + 2);
if ((ord2 >= '0' && ord2 <= '9') || (ord2 >= 'A' && ord2 <= 'Z')) {
- char bytes[2] = { ord1, ord2 };
+ char bytes[2] = { (char)ord1, (char)ord2 };
res += (char)strtol(bytes, NULL, 16);
i += 2;
}
diff --git a/core/ustring.h b/core/ustring.h
index 8dd8b0fed3..90496b71b6 100644
--- a/core/ustring.h
+++ b/core/ustring.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RSTRING_H
#define RSTRING_H
diff --git a/core/variant.cpp b/core/variant.cpp
index 5d4879dba7..2e26169bfe 100644
--- a/core/variant.cpp
+++ b/core/variant.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "variant.h"
#include "core_string_names.h"
diff --git a/core/variant.h b/core/variant.h
index 6c9204a18e..51ee8ea9d1 100644
--- a/core/variant.h
+++ b/core/variant.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VARIANT_H
#define VARIANT_H
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index a2794e7052..2ca435611b 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "variant.h"
#include "core_string_names.h"
@@ -101,9 +102,10 @@ struct _VariantCall {
const Variant *newargs[VARIANT_ARG_MAX];
for (int i = 0; i < p_argcount; i++)
newargs[i] = p_args[i];
- int defargcount = def_argcount;
+ // fill in any remaining parameters with defaults
+ int first_default_arg = arg_count - def_argcount;
for (int i = p_argcount; i < arg_count; i++)
- newargs[i] = &default_args[defargcount - (i - p_argcount) - 1]; //default arguments
+ newargs[i] = &default_args[i - first_default_arg];
#ifdef DEBUG_ENABLED
if (!verify_arguments(newargs, r_error))
return;
@@ -1746,10 +1748,10 @@ void register_variant_methods() {
ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, rotated, REAL, "phi", varray());
ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, scaled, VECTOR2, "scale", varray());
ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, translated, VECTOR2, "offset", varray());
- ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform, NIL, "v", varray());
- ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform_inv, NIL, "v", varray());
- ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform, NIL, "v", varray());
- ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform_inv, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, NIL, Transform2D, xform_inv, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, VECTOR2, Transform2D, basis_xform, VECTOR2, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, VECTOR2, Transform2D, basis_xform_inv, VECTOR2, "v", varray());
ADDFUNC2R(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "transform", REAL, "weight", varray());
ADDFUNC0R(BASIS, BASIS, Basis, inverse, varray());
diff --git a/core/variant_construct_string.cpp b/core/variant_construct_string.cpp
index 408e54bc99..2250c03f3d 100644
--- a/core/variant_construct_string.cpp
+++ b/core/variant_construct_string.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "variant.h"
class VariantConstruct {
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index 96b09c904d..e46fac77ee 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "variant.h"
#include "core_string_names.h"
@@ -338,7 +339,7 @@ bool Variant::booleanize() const {
CASE_TYPE(m_prefix, m_op_name, m_name) { \
if (p_b.type == NIL) \
_RETURN(true) \
- DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, ==, true, true, false) \
+ DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, !=, false, true, true) \
}
#define DEFAULT_OP_ARRAY_LT(m_prefix, m_op_name, m_name, m_type) \
@@ -538,12 +539,12 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
if (arr_b->size() != l)
_RETURN(true);
for (int i = 0; i < l; i++) {
- if (((*arr_a)[i] == (*arr_b)[i])) {
- _RETURN(false);
+ if (((*arr_a)[i] != (*arr_b)[i])) {
+ _RETURN(true);
}
}
- _RETURN(true);
+ _RETURN(false);
}
DEFAULT_OP_NUM_NULL(math, OP_NOT_EQUAL, INT, !=, _int);
diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp
index a78e18112d..54edb02347 100644
--- a/core/variant_parser.cpp
+++ b/core/variant_parser.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "variant_parser.h"
#include "core/string_buffer.h"
diff --git a/core/variant_parser.h b/core/variant_parser.h
index 18b6998f55..8d95595234 100644
--- a/core/variant_parser.h
+++ b/core/variant_parser.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VARIANT_PARSER_H
#define VARIANT_PARSER_H
diff --git a/core/vector.h b/core/vector.h
index 456d446a4b..f586471e27 100644
--- a/core/vector.h
+++ b/core/vector.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VECTOR_H
#define VECTOR_H
diff --git a/core/version.h b/core/version.h
index bf2f2c9d99..7a55d69ad7 100644
--- a/core/version.h
+++ b/core/version.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "version_generated.gen.h"
#ifdef VERSION_PATCH
diff --git a/core/vmap.h b/core/vmap.h
index 341fc273d4..8636c02997 100644
--- a/core/vmap.h
+++ b/core/vmap.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VMAP_H
#define VMAP_H
diff --git a/core/vset.h b/core/vset.h
index f4036c7c7e..449943b4a1 100644
--- a/core/vset.h
+++ b/core/vset.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VSET_H
#define VSET_H
diff --git a/doc/classes/@GDScript.xml b/doc/classes/@GDScript.xml
index bee2cdf387..d4bd937f49 100644
--- a/doc/classes/@GDScript.xml
+++ b/doc/classes/@GDScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="@GDScript" category="Core" version="3.0-beta">
+<class name="@GDScript" category="Core" version="3.0-stable">
<brief_description>
Built-in GDScript functions.
</brief_description>
@@ -41,10 +41,12 @@
<argument index="1" name="alpha" type="float">
</argument>
<description>
- Returns color [code]name[/code] with [code]alpha[/code] ranging from 0 to 1. Note: [code]name[/code] is defined in color_names.inc.
+ Returns a color according to the standardised [code]name[/code] with [code]alpha[/code] ranging from 0 to 1.
[codeblock]
- red = ColorN('red')
+ red = ColorN("red", 1)
[/codeblock]
+ Supported color names:
+ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflower", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "webgray", "green", "webgreen", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrod", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "webmaroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navyblue", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "webpurple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen".
</description>
</method>
<method name="abs">
@@ -180,14 +182,14 @@
<method name="clamp">
<return type="float">
</return>
- <argument index="0" name="val" type="float">
+ <argument index="0" name="value" type="float">
</argument>
<argument index="1" name="min" type="float">
</argument>
<argument index="2" name="max" type="float">
</argument>
<description>
- Clamps [code]val[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code].
+ Clamps [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code].
[codeblock]
speed = 1000
# a is 20
@@ -464,7 +466,7 @@
</argument>
<argument index="1" name="to" type="float">
</argument>
- <argument index="2" name="value" type="float">
+ <argument index="2" name="weight" type="float">
</argument>
<description>
Returns a normalized value considering the given range.
@@ -535,7 +537,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Loads a resource from the filesystem located at 'path'. Note: resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path".
+ Loads a resource from the filesystem located at [code]path[/code]. Note: resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path".
[codeblock]
# load a scene called main located in the root of the project directory
var main = load("res://main.tscn")
@@ -587,10 +589,10 @@
<method name="nearest_po2">
<return type="int">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
- Returns the nearest larger power of 2 for integer [code]val[/code].
+ Returns the nearest larger power of 2 for integer [code]value[/code].
[codeblock]
nearest_po2(3) # returns 4
nearest_po2(4) # returns 4
@@ -866,9 +868,10 @@
<argument index="0" name="s" type="float">
</argument>
<description>
- Returns sign of [code]s[/code] -1 or 1.
+ Returns the sign of [code]s[/code]: -1 or 1. Returns 0 if [code]s[/code] is 0.
[codeblock]
sign(-6) # returns -1
+ sign(0) # returns 0
sign(6) # returns 1
[/codeblock]
</description>
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index de5dc18702..1f6256f8c9 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="@GlobalScope" category="Core" version="3.0-beta">
+<class name="@GlobalScope" category="Core" version="3.0-stable">
<brief_description>
Global scope constants and variables.
</brief_description>
@@ -45,6 +45,7 @@
[JSON] singleton
</member>
<member name="JavaScript" type="JavaScript" setter="" getter="">
+ [JavaScript] singleton
</member>
<member name="Marshalls" type="Reference" setter="" getter="">
[Marshalls] singleton
@@ -93,6 +94,14 @@
<constant name="MARGIN_BOTTOM" value="3" enum="Margin">
Bottom margin, used usually for [Control] or [StyleBox] derived classes.
</constant>
+ <constant name="CORNER_TOP_LEFT" value="0" enum="Corner">
+ </constant>
+ <constant name="CORNER_TOP_RIGHT" value="1" enum="Corner">
+ </constant>
+ <constant name="CORNER_BOTTOM_RIGHT" value="2" enum="Corner">
+ </constant>
+ <constant name="CORNER_BOTTOM_LEFT" value="3" enum="Corner">
+ </constant>
<constant name="VERTICAL" value="1" enum="Orientation">
General vertical alignment, used usually for [Separator], [ScrollBar], [Slider], etc.
</constant>
@@ -1068,7 +1077,7 @@
Joypad Right Analog Trigger
</constant>
<constant name="OK" value="0" enum="Error">
- Functions that return Error return OK when no error occured. Most functions don't return errors and/or just print errors to STDOUT.
+ Functions that return Error return OK when no error occurred. Most functions don't return errors and/or just print errors to STDOUT.
</constant>
<constant name="FAILED" value="1" enum="Error">
Generic error.
@@ -1277,7 +1286,7 @@
</constant>
<constant name="PROPERTY_USAGE_DEFAULT_INTL" value="71" enum="PropertyUsageFlags">
</constant>
- <constant name="PROPERTY_USAGE_NOEDITOR" value="1048581" enum="PropertyUsageFlags">
+ <constant name="PROPERTY_USAGE_NOEDITOR" value="5" enum="PropertyUsageFlags">
</constant>
<constant name="METHOD_FLAG_NORMAL" value="1" enum="MethodFlags">
Flag for normal method
@@ -1385,5 +1394,57 @@
<constant name="TYPE_MAX" value="27" enum="Variant.Type">
Marker for end of type constants.
</constant>
+ <constant name="OP_EQUAL" value="0" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_NOT_EQUAL" value="1" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_LESS" value="2" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_LESS_EQUAL" value="3" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_GREATER" value="4" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_GREATER_EQUAL" value="5" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_ADD" value="6" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_SUBTRACT" value="7" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_MULTIPLY" value="8" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_DIVIDE" value="9" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_NEGATE" value="10" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_POSITIVE" value="11" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_MODULE" value="12" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_STRING_CONCAT" value="13" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_SHIFT_LEFT" value="14" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_SHIFT_RIGHT" value="15" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_BIT_AND" value="16" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_BIT_OR" value="17" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_BIT_XOR" value="18" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_BIT_NEGATE" value="19" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_AND" value="20" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_OR" value="21" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_XOR" value="22" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_NOT" value="23" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_IN" value="24" enum="Variant.Operator">
+ </constant>
+ <constant name="OP_MAX" value="25" enum="Variant.Operator">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/@NativeScript.xml b/doc/classes/@NativeScript.xml
index 898c30431f..8fde9e3dc3 100644
--- a/doc/classes/@NativeScript.xml
+++ b/doc/classes/@NativeScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="@NativeScript" category="Core" version="3.0-beta">
+<class name="@NativeScript" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/@VisualScript.xml b/doc/classes/@VisualScript.xml
index 0d105b4274..4867a5a22b 100644
--- a/doc/classes/@VisualScript.xml
+++ b/doc/classes/@VisualScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="@VisualScript" category="Core" version="3.0-beta">
+<class name="@VisualScript" category="Core" version="3.0-stable">
<brief_description>
Built-in visual script functions.
</brief_description>
diff --git a/doc/classes/AABB.xml b/doc/classes/AABB.xml
index 4aef151fbd..f253d49dc0 100644
--- a/doc/classes/AABB.xml
+++ b/doc/classes/AABB.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AABB" category="Built-In Types" version="3.0-beta">
+<class name="AABB" category="Built-In Types" version="3.0-stable">
<brief_description>
Axis-Aligned Bounding Box.
</brief_description>
@@ -7,6 +7,7 @@
AABB consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/ARVRAnchor.xml b/doc/classes/ARVRAnchor.xml
index 88862ec5f1..cc9370e8fe 100644
--- a/doc/classes/ARVRAnchor.xml
+++ b/doc/classes/ARVRAnchor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Anchor point in AR Space
</brief_description>
diff --git a/doc/classes/ARVRCamera.xml b/doc/classes/ARVRCamera.xml
index 5195568e67..b603a69337 100644
--- a/doc/classes/ARVRCamera.xml
+++ b/doc/classes/ARVRCamera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0-beta">
+<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0-stable">
<brief_description>
A camera node with a few overrules for AR/VR applied such as location tracking.
</brief_description>
diff --git a/doc/classes/ARVRController.xml b/doc/classes/ARVRController.xml
index 2adc073ebe..07692f5ab2 100644
--- a/doc/classes/ARVRController.xml
+++ b/doc/classes/ARVRController.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRController" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="ARVRController" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
A spatial node representing a spatially tracked controller.
</brief_description>
diff --git a/doc/classes/ARVRInterface.xml b/doc/classes/ARVRInterface.xml
index d00b5eeaf4..bf9dde7706 100644
--- a/doc/classes/ARVRInterface.xml
+++ b/doc/classes/ARVRInterface.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0-beta">
+<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Base class for ARVR interface implementation.
</brief_description>
@@ -91,7 +91,7 @@
This interface support AR (video background and real world tracking).
</constant>
<constant name="ARVR_EXTERNAL" value="8" enum="Capabilities">
- This interface outputs to an external device, if the main viewport is used the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of get_render_targetsize. Using a seperate viewport node frees up the main viewport for other purposes.
+ This interface outputs to an external device, if the main viewport is used the on screen output is an unmodified buffer of either the left or right eye (stretched if the viewport size is not changed to the same aspect ratio of get_render_targetsize. Using a separate viewport node frees up the main viewport for other purposes.
</constant>
<constant name="EYE_MONO" value="0" enum="Eyes">
Mono output, this is mostly used internally when retrieving positioning information for our camera node or when stereo scopic rendering is not supported.
diff --git a/doc/classes/ARVROrigin.xml b/doc/classes/ARVROrigin.xml
index 6e0999a1f9..ec9b79bf84 100644
--- a/doc/classes/ARVROrigin.xml
+++ b/doc/classes/ARVROrigin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Our origin point in AR/VR.
</brief_description>
diff --git a/doc/classes/ARVRPositionalTracker.xml b/doc/classes/ARVRPositionalTracker.xml
index 88740f5dc1..ea2139406b 100644
--- a/doc/classes/ARVRPositionalTracker.xml
+++ b/doc/classes/ARVRPositionalTracker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0-beta">
+<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
A tracked object
</brief_description>
diff --git a/doc/classes/ARVRServer.xml b/doc/classes/ARVRServer.xml
index ffe6c35240..29d217d1d3 100644
--- a/doc/classes/ARVRServer.xml
+++ b/doc/classes/ARVRServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="ARVRServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
This is our AR/VR Server.
</brief_description>
@@ -14,7 +14,7 @@
<method name="center_on_hmd">
<return type="void">
</return>
- <argument index="0" name="rotation_mode" type="bool">
+ <argument index="0" name="rotation_mode" type="int" enum="ARVRServer.RotationMode">
</argument>
<argument index="1" name="keep_height" type="bool">
</argument>
@@ -49,7 +49,7 @@
<return type="int">
</return>
<description>
- Get the number of interfaces currently registered with the AR/VR server. If you're game supports multiple AR/VR platforms you can look throught the available interface and either present the user with a selection or simply try an initialize each interface and use the first one that returns true.
+ Get the number of interfaces currently registered with the AR/VR server. If you're game supports multiple AR/VR platforms you can look through the available interface and either present the user with a selection or simply try an initialize each interface and use the first one that returns true.
</description>
</method>
<method name="get_interfaces" qualifiers="const">
@@ -99,21 +99,21 @@
</members>
<signals>
<signal name="interface_added">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="interface_name" type="String">
</argument>
<description>
Signal send when a new interface has been added.
</description>
</signal>
<signal name="interface_removed">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="interface_name" type="String">
</argument>
<description>
Signal send when an interface is removed.
</description>
</signal>
<signal name="tracker_added">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="tracker_name" type="String">
</argument>
<argument index="1" name="type" type="int">
</argument>
@@ -124,7 +124,7 @@
</description>
</signal>
<signal name="tracker_removed">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="tracker_name" type="String">
</argument>
<argument index="1" name="type" type="int">
</argument>
diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml
index e0e3261edf..0573e4edf0 100644
--- a/doc/classes/AStar.xml
+++ b/doc/classes/AStar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AStar" inherits="Reference" category="Core" version="3.0-beta">
+<class name="AStar" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
AStar class representation that uses vectors as edges.
</brief_description>
@@ -171,7 +171,7 @@
<method name="get_point_connections">
<return type="PoolIntArray">
</return>
- <argument index="0" name="arg0" type="int">
+ <argument index="0" name="id" type="int">
</argument>
<description>
Returns an array with the ids of the points that form the connect with the given point.
diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml
index 219995023e..a6cc40238b 100644
--- a/doc/classes/AcceptDialog.xml
+++ b/doc/classes/AcceptDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0-beta">
+<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0-stable">
<brief_description>
Base dialog for user notification.
</brief_description>
diff --git a/doc/classes/AnimatedSprite.xml b/doc/classes/AnimatedSprite.xml
index 9645758ea0..3e67fd6840 100644
--- a/doc/classes/AnimatedSprite.xml
+++ b/doc/classes/AnimatedSprite.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Sprite node that can use multiple textures for animation.
</brief_description>
diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml
index beb65d4d28..f72211776e 100644
--- a/doc/classes/AnimatedSprite3D.xml
+++ b/doc/classes/AnimatedSprite3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0-beta">
+<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0-stable">
<brief_description>
2D sprite node in 3D world, that can use multiple 2D textures for animation.
</brief_description>
diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml
index f78b39eadb..f8c94dd12d 100644
--- a/doc/classes/Animation.xml
+++ b/doc/classes/Animation.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Animation" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Animation" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Contains data used to animate everything in the engine.
</brief_description>
@@ -8,6 +8,7 @@
Animations are just data containers, and must be added to odes such as an [AnimationPlayer] or [AnimationTreePlayer] to be played back.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/animation/index.html
</tutorials>
<demos>
</demos>
@@ -50,20 +51,6 @@
Return the index of the specified track. If the track is not found, return -1.
</description>
</method>
- <method name="get_length" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the total length of the animation (in seconds).
- </description>
- </method>
- <method name="get_step" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Get the animation step value.
- </description>
- </method>
<method name="get_track_count" qualifiers="const">
<return type="int">
</return>
@@ -71,13 +58,6 @@
Return the amount of tracks in the animation.
</description>
</method>
- <method name="has_loop" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Return whether the animation has the loop flag set.
- </description>
- </method>
<method name="method_track_get_key_indices" qualifiers="const">
<return type="PoolIntArray">
</return>
@@ -122,33 +102,6 @@
Remove a track by specifying the track index.
</description>
</method>
- <method name="set_length">
- <return type="void">
- </return>
- <argument index="0" name="time_sec" type="float">
- </argument>
- <description>
- Set the total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping.
- </description>
- </method>
- <method name="set_loop">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Set a flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation.
- </description>
- </method>
- <method name="set_step">
- <return type="void">
- </return>
- <argument index="0" name="size_sec" type="float">
- </argument>
- <description>
- Set the animation step value.
- </description>
- </method>
<method name="track_find_key" qualifiers="const">
<return type="int">
</return>
@@ -456,6 +409,17 @@
</description>
</method>
</methods>
+ <members>
+ <member name="length" type="float" setter="set_length" getter="get_length">
+ The total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping.
+ </member>
+ <member name="loop" type="bool" setter="set_loop" getter="has_loop">
+ A flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation.
+ </member>
+ <member name="step" type="float" setter="set_step" getter="get_step">
+ The animation step value.
+ </member>
+ </members>
<constants>
<constant name="TYPE_VALUE" value="0" enum="TrackType">
Value tracks set values in node properties, but only those which can be Interpolated.
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index a244788020..b15f0ec732 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0-beta">
+<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Container and player of [Animation] resources.
</brief_description>
@@ -7,6 +7,8 @@
An animation player is used for general purpose playback of [Animation] resources. It contains a dictionary of animations (referenced by name) and custom blend times between their transitions. Additionally, animations can be played and blended in different channels.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/animations.html
+ http://docs.godotengine.org/en/3.0/tutorials/animation/index.html
</tutorials>
<demos>
</demos>
@@ -90,13 +92,6 @@
Returns the list of stored animation names.
</description>
</method>
- <method name="get_autoplay" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the name of the animation that will be automatically played when the scene is loaded.
- </description>
- </method>
<method name="get_blend_time" qualifiers="const">
<return type="float">
</return>
@@ -108,34 +103,6 @@
Get the blend time (in seconds) between two animations, referenced by their names.
</description>
</method>
- <method name="get_current_animation" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the name of the animation being played.
- </description>
- </method>
- <method name="get_current_animation_length" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Get the length (in seconds) of the currently being played animation.
- </description>
- </method>
- <method name="get_current_animation_position" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Get the position (in seconds) of the currently playing animation.
- </description>
- </method>
- <method name="get_speed_scale" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the speed scaling ratio of the current animation channel. For instance, if this value is 1 then the animation plays at normal speed. If it's 0.5 then it plays at half speed. If it's 2 then it plays at double speed.
- </description>
- </method>
<method name="has_animation" qualifiers="const">
<return type="bool">
</return>
@@ -145,13 +112,6 @@
Returns [code]true[/code] if the [code]AnimationPlayer[/code] stores an [Animation] with key [code]name[/code].
</description>
</method>
- <method name="is_active" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the player is active.
- </description>
- </method>
<method name="is_playing" qualifiers="const">
<return type="bool">
</return>
@@ -226,24 +186,6 @@
Seek 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.
</description>
</method>
- <method name="set_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
- <description>
- Sets the player as active (playing). If [code]true[/code], updates animations in response to process-related notifications. Default value: [code]true[/code].
- </description>
- </method>
- <method name="set_autoplay">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <description>
- Defines the name of the animation to play when the scene loads. Default value: [code]""[/code].
- </description>
- </method>
<method name="set_blend_time">
<return type="void">
</return>
@@ -257,24 +199,6 @@
Specify a blend time (in seconds) between two animations, referenced by their names.
</description>
</method>
- <method name="set_current_animation">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="String">
- </argument>
- <description>
- Sets the name of the current animation. If already playing, restarts the animation. Ensure [member active] is [code]true[/code] to simulate [method play]. Default value: [code]""[/code].
- </description>
- </method>
- <method name="set_speed_scale">
- <return type="void">
- </return>
- <argument index="0" name="speed" type="float">
- </argument>
- <description>
- Sets the speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default value: [code]1[/code].
- </description>
- </method>
<method name="stop">
<return type="void">
</return>
@@ -286,12 +210,33 @@
</method>
</methods>
<members>
+ <member name="assigned_animation" type="String" setter="set_assigned_animation" getter="get_assigned_animation">
+ If playing, the current animation; otherwise, the animation last played. When set, would change the animation, but would not play it unless currently playing. See also [member current_animation].
+ </member>
+ <member name="autoplay" type="String" setter="set_autoplay" getter="get_autoplay">
+ The name of the animation to play when the scene loads. Default value: [code]""[/code].
+ </member>
+ <member name="current_animation" type="String" setter="set_current_animation" getter="get_current_animation">
+ The name of the current animation, "" if not playing anything. When being set, does not restart the animation. See also [method play]. Default value: [code]""[/code].
+ </member>
+ <member name="current_animation_length" type="float" setter="" getter="get_current_animation_length">
+ The length (in seconds) of the currently being played animation.
+ </member>
+ <member name="current_animation_position" type="float" setter="" getter="get_current_animation_position">
+ The position (in seconds) of the currently playing animation.
+ </member>
+ <member name="playback_active" type="bool" setter="set_active" getter="is_active">
+ If [code]true[/code], updates animations in response to process-related notifications. Default value: [code]true[/code].
+ </member>
<member name="playback_default_blend_time" type="float" setter="set_default_blend_time" getter="get_default_blend_time">
The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 precision. Default value: [code]0[/code].
</member>
<member name="playback_process_mode" type="int" setter="set_animation_process_mode" getter="get_animation_process_mode" enum="AnimationPlayer.AnimationProcessMode">
The process notification in which to update animations. Default value: [enum ANIMATION_PROCESS_IDLE].
</member>
+ <member name="playback_speed" type="float" setter="set_speed_scale" getter="get_speed_scale">
+ The speed scaling ratio. For instance, if this value is 1 then the animation plays at normal speed. If it's 0.5 then it plays at half speed. If it's 2 then it plays at double speed. Default value: [code]1[/code].
+ </member>
<member name="root_node" type="NodePath" setter="set_root" getter="get_root">
The node from which node path references will travel. Default value: [code]".."[/code].
</member>
@@ -307,14 +252,14 @@
</description>
</signal>
<signal name="animation_finished">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="anim_name" type="String">
</argument>
<description>
Notifies when an animation finished playing.
</description>
</signal>
<signal name="animation_started">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="anim_name" type="String">
</argument>
<description>
Notifies when an animation starts playing.
diff --git a/doc/classes/AnimationTreePlayer.xml b/doc/classes/AnimationTreePlayer.xml
index ecd1f81951..c09121857e 100644
--- a/doc/classes/AnimationTreePlayer.xml
+++ b/doc/classes/AnimationTreePlayer.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0-beta">
+<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
- Animation Player that uses a node graph for the blending.
+ Animation Player that uses a node graph for blending Animations.
</brief_description>
<description>
A node graph tool for blending multiple animations bound to an [AnimationPlayer]. Especially useful for animating characters or other skeleton-based rigs. It can combine several animations to form a desired pose.
+ It takes [Animation]s from an [AnimationPlayer] node and mixes them depending on the graph.
</description>
<tutorials>
</tutorials>
@@ -37,7 +38,7 @@
<argument index="0" name="id" type="String">
</argument>
<description>
- Returns the [AnimationPlayer]'s animation bound to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
+ Returns the [AnimationPlayer]'s [Animation] bound to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
</description>
</method>
<method name="animation_node_get_master_animation" qualifiers="const">
@@ -46,7 +47,7 @@
<argument index="0" name="id" type="String">
</argument>
<description>
- Returns the name of the [member master_player]'s animation bound to this animation node.
+ Returns the name of the [member master_player]'s [Animation] bound to this animation node.
</description>
</method>
<method name="animation_node_set_animation">
@@ -57,7 +58,7 @@
<argument index="1" name="animation" type="Animation">
</argument>
<description>
- Binds a new animation from the [member master_player] to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
+ Binds a new [Animation] from the [member master_player] to the [code]AnimationTreePlayer[/code]'s animation node with name [code]id[/code].
</description>
</method>
<method name="animation_node_set_filter_path">
@@ -81,7 +82,7 @@
<argument index="1" name="source" type="String">
</argument>
<description>
- Binds the animation named [code]source[/code] from [member master_player] to the animation node [code]id[/code]. Recalculates caches.
+ Binds the [Animation] named [code]source[/code] from [member master_player] to the animation node [code]id[/code]. Recalculates caches.
</description>
</method>
<method name="are_nodes_connected" qualifiers="const">
@@ -115,6 +116,10 @@
</argument>
<description>
Sets the blend amount of a Blend2 node given its name and value.
+ A Blend2 Node blends two animations with the amount between 0 and 1.
+ At 0, Output is input a.
+ Towards 1, the influence of a gets lessened, the influence of b gets raised.
+ At 1, Output is input b.
</description>
</method>
<method name="blend2_node_set_filter_path">
@@ -148,6 +153,12 @@
</argument>
<description>
Sets the blend amount of a Blend3 node given its name and value.
+ A Blend3 Node blends three animations with the amount between -1 and 1.
+ At -1, Output is input b-.
+ From -1 to 0, the influence of b- gets lessened, the influence of a gets raised and the influence of b+ is 0.
+ At 0, Output is input a.
+ From 0 to 1, the influence of a gets lessened, the influence of b+ gets raised and the influence of b+ is 0.
+ At 1, Output is input b+.
</description>
</method>
<method name="blend4_node_get_amount" qualifiers="const">
@@ -168,6 +179,8 @@
</argument>
<description>
Sets the blend amount of a Blend4 node given its name and value.
+ A Blend4 Node blends two pairs of animations.
+ The two pairs are blended like blend2 and then added together.
</description>
</method>
<method name="connect_nodes">
@@ -198,7 +211,7 @@
<return type="PoolStringArray">
</return>
<description>
- Returns a PoolStringArray containing the name of all nodes.
+ Returns a [PoolStringArray] containing the name of all nodes.
</description>
</method>
<method name="mix_node_get_amount" qualifiers="const">
@@ -219,6 +232,7 @@
</argument>
<description>
Sets mix amount of a Mix node given its name and value.
+ A Mix node adds input b to input a by a the amount given by ratio.
</description>
</method>
<method name="node_exists" qualifiers="const">
@@ -450,7 +464,7 @@
<return type="void">
</return>
<description>
- Resets this AnimationTreePlayer.
+ Resets this [code]AnimationTreePlayer[/code].
</description>
</method>
<method name="timescale_node_get_scale" qualifiers="const">
@@ -471,6 +485,8 @@
</argument>
<description>
Sets the time scale of the TimeScale node with name [code]id[/code] to [code]scale[/code].
+ The timescale node is used to speed [Animation]s up if the scale is above 1 or slow them down if it is below 1.
+ If applied after a blend or mix, affects all input animations to that blend or mix.
</description>
</method>
<method name="timeseek_node_seek">
@@ -482,6 +498,7 @@
</argument>
<description>
Sets the time seek value of the TimeSeek node with name [code]id[/code] to [code]seconds[/code]
+ This functions as a seek in the [Animation] or the blend or mix of [Animation]s input in it.
</description>
</method>
<method name="transition_node_delete_input">
@@ -510,7 +527,7 @@
<argument index="0" name="id" type="String">
</argument>
<description>
- Returns the number of inputs for the transition node with name [code]id[/code].
+ Returns the number of inputs for the transition node with name [code]id[/code]. You can add inputs by rightclicking on the transition node.
</description>
</method>
<method name="transition_node_get_xfade_time" qualifiers="const">
@@ -586,9 +603,11 @@
</member>
<member name="base_path" type="NodePath" setter="set_base_path" getter="get_base_path">
The node from which to relatively access other nodes. Default value: [code]".."[/code].
+ It accesses the Bones, so it should point to the same Node the AnimationPlayer would point its Root Node at.
</member>
<member name="master_player" type="NodePath" setter="set_master_player" getter="get_master_player">
The path to the [AnimationPlayer] from which this [code]AnimationTreePlayer[/code] binds animations to animation nodes.
+ Once set, Animation nodes can be added to the AnimationTreePlayer.
</member>
<member name="playback_process_mode" type="int" setter="set_animation_process_mode" getter="get_animation_process_mode" enum="AnimationTreePlayer.AnimationProcessMode">
The thread in which to update animations. Default value: [enum ANIMATION_PROCESS_IDLE].
diff --git a/doc/classes/Area.xml b/doc/classes/Area.xml
index b74e767fd2..2853159c0e 100644
--- a/doc/classes/Area.xml
+++ b/doc/classes/Area.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Area" inherits="CollisionObject" category="Core" version="3.0-beta">
+<class name="Area" inherits="CollisionObject" category="Core" version="3.0-stable">
<brief_description>
General purpose area node for detection and 3D physics influence.
</brief_description>
@@ -33,14 +33,14 @@
<return type="Array">
</return>
<description>
- Returns a list of intersecting [code]Area[/code]s.
+ Returns a list of intersecting [code]Area[/code]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="Array">
</return>
<description>
- Returns a list of intersecting [PhysicsBody]s.
+ Returns a list of intersecting [PhysicsBody]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">
@@ -49,7 +49,7 @@
<argument index="0" name="area" type="Node">
</argument>
<description>
- If [code]true[/code] the given area overlaps the Area.
+ If [code]true[/code] the given area overlaps the Area. Note that 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">
@@ -58,7 +58,7 @@
<argument index="0" name="body" type="Node">
</argument>
<description>
- If [code]true[/code] the given body overlaps the Area.
+ If [code]true[/code] the given body overlaps the Area. Note that 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="set_collision_layer_bit">
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index 6a3f0e7645..8e8382d5de 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0-beta">
+<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0-stable">
<brief_description>
2D area for detection and 2D physics influence.
</brief_description>
@@ -33,14 +33,14 @@
<return type="Array">
</return>
<description>
- Returns a list of intersecting [code]Area2D[/code]s.
+ Returns a list of intersecting [code]Area2D[/code]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="Array">
</return>
<description>
- Returns a list of intersecting [PhysicsBody2D]s.
+ 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">
@@ -49,7 +49,7 @@
<argument index="0" name="area" type="Node">
</argument>
<description>
- If [code]true[/code] the given area overlaps the Area2D.
+ If [code]true[/code] the given area overlaps the Area2D. Note that 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">
@@ -58,7 +58,7 @@
<argument index="0" name="body" type="Node">
</argument>
<description>
- If [code]true[/code] the given body overlaps the Area2D.
+ If [code]true[/code] the given body overlaps the Area2D. Note that 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="set_collision_layer_bit">
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index 9445a1732e..4d282761fe 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Array" category="Built-In Types" version="3.0-beta">
+<class name="Array" category="Built-In Types" version="3.0-stable">
<brief_description>
Generic array datatype.
</brief_description>
diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml
index 92c4fe2fe7..7b74b678bd 100644
--- a/doc/classes/ArrayMesh.xml
+++ b/doc/classes/ArrayMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0-beta">
+<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -51,12 +51,6 @@
<description>
</description>
</method>
- <method name="get_blend_shape_mode" qualifiers="const">
- <return type="int" enum="Mesh.BlendShapeMode">
- </return>
- <description>
- </description>
- </method>
<method name="get_blend_shape_name" qualifiers="const">
<return type="String">
</return>
@@ -65,12 +59,6 @@
<description>
</description>
</method>
- <method name="get_custom_aabb" qualifiers="const">
- <return type="AABB">
- </return>
- <description>
- </description>
- </method>
<method name="get_surface_count" qualifiers="const">
<return type="int">
</return>
@@ -84,22 +72,6 @@
<description>
</description>
</method>
- <method name="set_blend_shape_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Mesh.BlendShapeMode">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_custom_aabb">
- <return type="void">
- </return>
- <argument index="0" name="aabb" type="AABB">
- </argument>
- <description>
- </description>
- </method>
<method name="surface_get_array_index_len" qualifiers="const">
<return type="int">
</return>
@@ -212,6 +184,12 @@
</description>
</method>
</methods>
+ <members>
+ <member name="blend_shape_mode" type="int" setter="set_blend_shape_mode" getter="get_blend_shape_mode" enum="Mesh.BlendShapeMode">
+ </member>
+ <member name="custom_aabb" type="AABB" setter="set_custom_aabb" getter="get_custom_aabb">
+ </member>
+ </members>
<constants>
<constant name="NO_INDEX_ARRAY" value="-1">
Default value used for index_array_len when no indices are present.
diff --git a/doc/classes/AtlasTexture.xml b/doc/classes/AtlasTexture.xml
index f1a79bc312..87cd072d99 100644
--- a/doc/classes/AtlasTexture.xml
+++ b/doc/classes/AtlasTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls.
</brief_description>
diff --git a/doc/classes/AudioBusLayout.xml b/doc/classes/AudioBusLayout.xml
index a70a3e1702..d960093fc6 100644
--- a/doc/classes/AudioBusLayout.xml
+++ b/doc/classes/AudioBusLayout.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0-beta">
+<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Stores information about the audiobusses.
</brief_description>
diff --git a/doc/classes/AudioEffect.xml b/doc/classes/AudioEffect.xml
index 0122f727d0..81c72e34b2 100644
--- a/doc/classes/AudioEffect.xml
+++ b/doc/classes/AudioEffect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffect" inherits="Resource" category="Core" version="3.0-beta">
+<class name="AudioEffect" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Audio Effect For Audio.
</brief_description>
diff --git a/doc/classes/AudioEffectAmplify.xml b/doc/classes/AudioEffectAmplify.xml
index efdf6c3b9b..7a031f7f47 100644
--- a/doc/classes/AudioEffectAmplify.xml
+++ b/doc/classes/AudioEffectAmplify.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Amplify audio effect to an Audio bus.
Increases or decreases the volume of the selected audio bus.
diff --git a/doc/classes/AudioEffectBandLimitFilter.xml b/doc/classes/AudioEffectBandLimitFilter.xml
index 64542e8b92..592735e098 100644
--- a/doc/classes/AudioEffectBandLimitFilter.xml
+++ b/doc/classes/AudioEffectBandLimitFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
Adds a band limit filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectBandPassFilter.xml b/doc/classes/AudioEffectBandPassFilter.xml
index dbc8b2c85a..3705590c83 100644
--- a/doc/classes/AudioEffectBandPassFilter.xml
+++ b/doc/classes/AudioEffectBandPassFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
Adds a band pass filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectChorus.xml b/doc/classes/AudioEffectChorus.xml
index 465fda28da..4bcd0e2552 100644
--- a/doc/classes/AudioEffectChorus.xml
+++ b/doc/classes/AudioEffectChorus.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a chorus audio effect.
</brief_description>
diff --git a/doc/classes/AudioEffectCompressor.xml b/doc/classes/AudioEffectCompressor.xml
index dd9d6481e2..4fd28326a2 100644
--- a/doc/classes/AudioEffectCompressor.xml
+++ b/doc/classes/AudioEffectCompressor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Compressor audio effect to an Audio bus.
Reduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume.
diff --git a/doc/classes/AudioEffectDelay.xml b/doc/classes/AudioEffectDelay.xml
index c961f1f582..d253ffab96 100644
--- a/doc/classes/AudioEffectDelay.xml
+++ b/doc/classes/AudioEffectDelay.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Delay audio effect to an Audio bus. Plays input signal back after a period of time.
Two tap delay and feedback options.
diff --git a/doc/classes/AudioEffectDistortion.xml b/doc/classes/AudioEffectDistortion.xml
index fd77a91570..91a1961b30 100644
--- a/doc/classes/AudioEffectDistortion.xml
+++ b/doc/classes/AudioEffectDistortion.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Distortion audio effect to an Audio bus.
Modify the sound to make it dirty.
diff --git a/doc/classes/AudioEffectEQ.xml b/doc/classes/AudioEffectEQ.xml
index a78b9e4bb1..667982d529 100644
--- a/doc/classes/AudioEffectEQ.xml
+++ b/doc/classes/AudioEffectEQ.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Base class for audio equalizers. Gives you control over frequencies.
Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] or [AudioEffectEQ21] don't fit your needs.
diff --git a/doc/classes/AudioEffectEQ10.xml b/doc/classes/AudioEffectEQ10.xml
index 9a007f80b1..9e5303a266 100644
--- a/doc/classes/AudioEffectEQ10.xml
+++ b/doc/classes/AudioEffectEQ10.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0-beta">
+<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
<brief_description>
Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz.
Each frequency can be modulated between -60/+24 dB.
diff --git a/doc/classes/AudioEffectEQ21.xml b/doc/classes/AudioEffectEQ21.xml
index 6e13291895..ec0db8bbbe 100644
--- a/doc/classes/AudioEffectEQ21.xml
+++ b/doc/classes/AudioEffectEQ21.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0-beta">
+<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
<brief_description>
Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz.
Each frequency can be modulated between -60/+24 dB.
diff --git a/doc/classes/AudioEffectEQ6.xml b/doc/classes/AudioEffectEQ6.xml
index ecfc7afeed..f5748f0a36 100644
--- a/doc/classes/AudioEffectEQ6.xml
+++ b/doc/classes/AudioEffectEQ6.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0-beta">
+<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
<brief_description>
Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
Each frequency can be modulated between -60/+24 dB.
diff --git a/doc/classes/AudioEffectFilter.xml b/doc/classes/AudioEffectFilter.xml
index 3e1848f314..9c0eb38612 100644
--- a/doc/classes/AudioEffectFilter.xml
+++ b/doc/classes/AudioEffectFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectHighPassFilter.xml b/doc/classes/AudioEffectHighPassFilter.xml
index ac57ec0d2f..451c65a228 100644
--- a/doc/classes/AudioEffectHighPassFilter.xml
+++ b/doc/classes/AudioEffectHighPassFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
Adds a high pass filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectHighShelfFilter.xml b/doc/classes/AudioEffectHighShelfFilter.xml
index 9496fcbffe..a26d4a4e6b 100644
--- a/doc/classes/AudioEffectHighShelfFilter.xml
+++ b/doc/classes/AudioEffectHighShelfFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/AudioEffectLimiter.xml b/doc/classes/AudioEffectLimiter.xml
index e641be782d..b6fe7b74e5 100644
--- a/doc/classes/AudioEffectLimiter.xml
+++ b/doc/classes/AudioEffectLimiter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a soft clip Limiter audio effect to an Audio bus.
</brief_description>
diff --git a/doc/classes/AudioEffectLowPassFilter.xml b/doc/classes/AudioEffectLowPassFilter.xml
index 50d66e874e..25c80e2ea0 100644
--- a/doc/classes/AudioEffectLowPassFilter.xml
+++ b/doc/classes/AudioEffectLowPassFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
Adds a low pass filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectLowShelfFilter.xml b/doc/classes/AudioEffectLowShelfFilter.xml
index 689faba672..f60429ca15 100644
--- a/doc/classes/AudioEffectLowShelfFilter.xml
+++ b/doc/classes/AudioEffectLowShelfFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/AudioEffectNotchFilter.xml b/doc/classes/AudioEffectNotchFilter.xml
index dc160ae3e6..ac78d9c3e5 100644
--- a/doc/classes/AudioEffectNotchFilter.xml
+++ b/doc/classes/AudioEffectNotchFilter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0-beta">
+<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
<brief_description>
Adds a notch filter to the Audio Bus.
</brief_description>
diff --git a/doc/classes/AudioEffectPanner.xml b/doc/classes/AudioEffectPanner.xml
index 05a6444a1e..493e83393a 100644
--- a/doc/classes/AudioEffectPanner.xml
+++ b/doc/classes/AudioEffectPanner.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Panner audio effect to an Audio bus. Pans sound left or right.
</brief_description>
diff --git a/doc/classes/AudioEffectPhaser.xml b/doc/classes/AudioEffectPhaser.xml
index 6b82a4d32a..3cc89e73f8 100644
--- a/doc/classes/AudioEffectPhaser.xml
+++ b/doc/classes/AudioEffectPhaser.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Phaser audio effect to an Audio bus.
Combines the original signal with a copy that is slightly out of phase with the original.
diff --git a/doc/classes/AudioEffectPitchShift.xml b/doc/classes/AudioEffectPitchShift.xml
index a6d2bef9ff..b0e7dbc049 100644
--- a/doc/classes/AudioEffectPitchShift.xml
+++ b/doc/classes/AudioEffectPitchShift.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Pitch shift audio effect to an Audio bus.
Raises or lowers the pitch of original sound.
diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml
index 13bc66f6f3..46d1866ff0 100644
--- a/doc/classes/AudioEffectReverb.xml
+++ b/doc/classes/AudioEffectReverb.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
Adds a Reverb audio effect to an Audio bus.
Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
@@ -12,20 +12,6 @@
<demos>
</demos>
<methods>
- <method name="get_predelay_feedback" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="set_predelay_feedback">
- <return type="void">
- </return>
- <argument index="0" name="feedback" type="float">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
<member name="damping" type="float" setter="set_damping" getter="get_damping">
diff --git a/doc/classes/AudioEffectStereoEnhance.xml b/doc/classes/AudioEffectStereoEnhance.xml
index 006145c0f1..6e6e9af5c6 100644
--- a/doc/classes/AudioEffectStereoEnhance.xml
+++ b/doc/classes/AudioEffectStereoEnhance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0-beta">
+<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 1d861d5a4f..a6352bca1e 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="AudioServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Server interface for low level audio access.
</brief_description>
@@ -7,6 +7,7 @@
AudioServer is a low level server interface for audio access. It is in charge of creating sample data (playable audio) as well as its playback via a voice interface.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/audio/audio_buses.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/AudioStream.xml b/doc/classes/AudioStream.xml
index 342382ca05..f06ca0f901 100644
--- a/doc/classes/AudioStream.xml
+++ b/doc/classes/AudioStream.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStream" inherits="Resource" category="Core" version="3.0-beta">
+<class name="AudioStream" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Base class for audio streams.
</brief_description>
@@ -7,6 +7,7 @@
Base class for audio streams. Audio streams are used for music playback, or other types of streamed sounds that don't fit or require more flexibility than a [Sample].
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/AudioStreamPlayback.xml b/doc/classes/AudioStreamPlayback.xml
index 663b2b57a4..3babff52d1 100644
--- a/doc/classes/AudioStreamPlayback.xml
+++ b/doc/classes/AudioStreamPlayback.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0-beta">
+<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Meta class for playing back audio.
</brief_description>
diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml
index 032473113c..e2cb442c36 100644
--- a/doc/classes/AudioStreamPlayer.xml
+++ b/doc/classes/AudioStreamPlayer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0-beta">
+<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Plays back audio.
</brief_description>
@@ -8,6 +8,7 @@
</description>
<tutorials>
http://docs.godotengine.org/en/latest/learning/features/audio/index.html
+ http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/AudioStreamPlayer2D.xml b/doc/classes/AudioStreamPlayer2D.xml
index 63e569ee39..2abb86472b 100644
--- a/doc/classes/AudioStreamPlayer2D.xml
+++ b/doc/classes/AudioStreamPlayer2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Plays audio in 2D.
</brief_description>
@@ -8,6 +8,7 @@
</description>
<tutorials>
http://docs.godotengine.org/en/latest/learning/features/audio/index.html
+ http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index 21edfd12d5..a40a6b4f96 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Plays 3D sound in 3D space
</brief_description>
@@ -8,6 +8,7 @@
</description>
<tutorials>
http://docs.godotengine.org/en/latest/learning/features/audio/index.html
+ http://docs.godotengine.org/en/3.0/tutorials/audio/audio_streams.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/AudioStreamRandomPitch.xml b/doc/classes/AudioStreamRandomPitch.xml
index 24d6f8965a..a78c412f26 100644
--- a/doc/classes/AudioStreamRandomPitch.xml
+++ b/doc/classes/AudioStreamRandomPitch.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0-beta">
+<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0-stable">
<brief_description>
Plays audio with random pitch tweaking.
</brief_description>
diff --git a/doc/classes/AudioStreamSample.xml b/doc/classes/AudioStreamSample.xml
index 83e9729bc1..8e11a870ca 100644
--- a/doc/classes/AudioStreamSample.xml
+++ b/doc/classes/AudioStreamSample.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0-beta">
+<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0-stable">
<brief_description>
Plays audio.
</brief_description>
@@ -11,20 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_data" qualifiers="const">
- <return type="PoolByteArray">
- </return>
- <description>
- </description>
- </method>
- <method name="set_data">
- <return type="void">
- </return>
- <argument index="0" name="data" type="PoolByteArray">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
<member name="format" type="int" setter="set_format" getter="get_format" enum="AudioStreamSample.Format">
diff --git a/doc/classes/BackBufferCopy.xml b/doc/classes/BackBufferCopy.xml
index 122e0c7fae..e11b55a6a0 100644
--- a/doc/classes/BackBufferCopy.xml
+++ b/doc/classes/BackBufferCopy.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Copies a region of the screen (or the whole screen) to a buffer so it can be accessed with the texscreen() shader instruction.
</brief_description>
diff --git a/doc/classes/BakedLightmap.xml b/doc/classes/BakedLightmap.xml
index b351aeac05..a9033906dc 100644
--- a/doc/classes/BakedLightmap.xml
+++ b/doc/classes/BakedLightmap.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0-beta">
+<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/baked_lightmaps.html
</tutorials>
<demos>
</demos>
@@ -27,38 +28,28 @@
</method>
</methods>
<members>
- <member name="bake_mode" type="int" setter="set_bake_mode" getter="get_bake_mode" enum="BakedLightmap.BakeMode">
+ <member name="bake_cell_size" type="float" setter="set_bake_cell_size" getter="get_bake_cell_size">
</member>
- <member name="bake_quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="BakedLightmap.BakeQuality">
+ <member name="bake_energy" type="float" setter="set_energy" getter="get_energy">
+ </member>
+ <member name="bake_extents" type="Vector3" setter="set_extents" getter="get_extents">
</member>
- <member name="bake_subdiv" type="int" setter="set_bake_subdiv" getter="get_bake_subdiv" enum="BakedLightmap.Subdiv">
+ <member name="bake_hdr" type="bool" setter="set_hdr" getter="is_hdr">
</member>
- <member name="capture_subdiv" type="int" setter="set_capture_subdiv" getter="get_capture_subdiv" enum="BakedLightmap.Subdiv">
+ <member name="bake_mode" type="int" setter="set_bake_mode" getter="get_bake_mode" enum="BakedLightmap.BakeMode">
</member>
- <member name="energy" type="float" setter="set_energy" getter="get_energy">
+ <member name="bake_propagation" type="float" setter="set_propagation" getter="get_propagation">
</member>
- <member name="extents" type="Vector3" setter="set_extents" getter="get_extents">
+ <member name="bake_quality" type="int" setter="set_bake_quality" getter="get_bake_quality" enum="BakedLightmap.BakeQuality">
</member>
- <member name="hdr" type="bool" setter="set_hdr" getter="is_hdr">
+ <member name="capture_cell_size" type="float" setter="set_capture_cell_size" getter="get_capture_cell_size">
</member>
<member name="image_path" type="String" setter="set_image_path" getter="get_image_path">
</member>
<member name="light_data" type="BakedLightmapData" setter="set_light_data" getter="get_light_data">
</member>
- <member name="propagation" type="float" setter="set_propagation" getter="get_propagation">
- </member>
</members>
<constants>
- <constant name="SUBDIV_128" value="0" enum="Subdiv">
- </constant>
- <constant name="SUBDIV_256" value="1" enum="Subdiv">
- </constant>
- <constant name="SUBDIV_512" value="2" enum="Subdiv">
- </constant>
- <constant name="SUBDIV_1024" value="3" enum="Subdiv">
- </constant>
- <constant name="SUBDIV_MAX" value="4" enum="Subdiv">
- </constant>
<constant name="BAKE_QUALITY_LOW" value="0" enum="BakeQuality">
</constant>
<constant name="BAKE_QUALITY_MEDIUM" value="1" enum="BakeQuality">
diff --git a/doc/classes/BakedLightmapData.xml b/doc/classes/BakedLightmapData.xml
index 2b95cff136..0fcd984c5e 100644
--- a/doc/classes/BakedLightmapData.xml
+++ b/doc/classes/BakedLightmapData.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BakedLightmapData" inherits="Resource" category="Core" version="3.0-beta">
+<class name="BakedLightmapData" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -27,30 +27,6 @@
<description>
</description>
</method>
- <method name="get_bounds" qualifiers="const">
- <return type="AABB">
- </return>
- <description>
- </description>
- </method>
- <method name="get_cell_space_transform" qualifiers="const">
- <return type="Transform">
- </return>
- <description>
- </description>
- </method>
- <method name="get_cell_subdiv" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_octree" qualifiers="const">
- <return type="PoolByteArray">
- </return>
- <description>
- </description>
- </method>
<method name="get_user_count" qualifiers="const">
<return type="int">
</return>
@@ -73,42 +49,18 @@
<description>
</description>
</method>
- <method name="set_bounds">
- <return type="void">
- </return>
- <argument index="0" name="bounds" type="AABB">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_cell_space_transform">
- <return type="void">
- </return>
- <argument index="0" name="xform" type="Transform">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_cell_subdiv">
- <return type="void">
- </return>
- <argument index="0" name="cell_subdiv" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_octree">
- <return type="void">
- </return>
- <argument index="0" name="octree" type="PoolByteArray">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
+ <member name="bounds" type="AABB" setter="set_bounds" getter="get_bounds">
+ </member>
+ <member name="cell_space_transform" type="Transform" setter="set_cell_space_transform" getter="get_cell_space_transform">
+ </member>
+ <member name="cell_subdiv" type="int" setter="set_cell_subdiv" getter="get_cell_subdiv">
+ </member>
<member name="energy" type="float" setter="set_energy" getter="get_energy">
</member>
+ <member name="octree" type="PoolByteArray" setter="set_octree" getter="get_octree">
+ </member>
</members>
<constants>
</constants>
diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml
index 7f1aaa6822..6d7ee544e4 100644
--- a/doc/classes/BaseButton.xml
+++ b/doc/classes/BaseButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BaseButton" inherits="Control" category="Core" version="3.0-beta">
+<class name="BaseButton" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Base class for different kinds of buttons.
</brief_description>
@@ -21,7 +21,7 @@
<method name="_toggled" qualifiers="virtual">
<return type="void">
</return>
- <argument index="0" name="pressed" type="bool">
+ <argument index="0" name="button_pressed" type="bool">
</argument>
<description>
Called when button is toggled (only if toggle_mode is active).
@@ -82,7 +82,7 @@
</description>
</signal>
<signal name="toggled">
- <argument index="0" name="pressed" type="bool">
+ <argument index="0" name="button_pressed" type="bool">
</argument>
<description>
This signal is emitted when the button was just toggled between pressed and normal states (only if toggle_mode is active). The new state is contained in the [i]pressed[/i] argument.
diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml
index a873bd9a27..c90dfeea27 100644
--- a/doc/classes/Basis.xml
+++ b/doc/classes/Basis.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Basis" category="Built-In Types" version="3.0-beta">
+<class name="Basis" category="Built-In Types" version="3.0-stable">
<brief_description>
3x3 matrix datatype.
</brief_description>
@@ -38,7 +38,7 @@
<argument index="1" name="phi" type="float">
</argument>
<description>
- Create a rotation matrix which rotates around the given axis by the specified angle. The axis must be a normalized vector.
+ Create a rotation matrix which rotates around the given axis by the specified angle, in radians. The axis must be a normalized vector.
</description>
</method>
<method name="Basis">
diff --git a/doc/classes/BitMap.xml b/doc/classes/BitMap.xml
index 39bf46ac3d..f85c538456 100644
--- a/doc/classes/BitMap.xml
+++ b/doc/classes/BitMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BitMap" inherits="Resource" category="Core" version="3.0-beta">
+<class name="BitMap" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Boolean matrix.
</brief_description>
diff --git a/doc/classes/BitmapFont.xml b/doc/classes/BitmapFont.xml
index 2fb7d7d87a..77c1e0949c 100644
--- a/doc/classes/BitmapFont.xml
+++ b/doc/classes/BitmapFont.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BitmapFont" inherits="Font" category="Core" version="3.0-beta">
+<class name="BitmapFont" inherits="Font" category="Core" version="3.0-stable">
<brief_description>
Renders text using [code]*.fnt[/code] fonts.
</brief_description>
diff --git a/doc/classes/BoneAttachment.xml b/doc/classes/BoneAttachment.xml
index b7f21ebf0c..77c8bd603e 100644
--- a/doc/classes/BoneAttachment.xml
+++ b/doc/classes/BoneAttachment.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BoneAttachment" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="BoneAttachment" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
A node that will attach to a bone.
</brief_description>
@@ -11,23 +11,12 @@
<demos>
</demos>
<methods>
- <method name="get_bone_name" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the name of the bone node attached to.
- </description>
- </method>
- <method name="set_bone_name">
- <return type="void">
- </return>
- <argument index="0" name="bone_name" type="String">
- </argument>
- <description>
- Changes the name of the bone node
- </description>
- </method>
</methods>
+ <members>
+ <member name="bone_name" type="String" setter="set_bone_name" getter="get_bone_name">
+ The name of the attached bone.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/BoxContainer.xml b/doc/classes/BoxContainer.xml
index 7003158387..b509e83985 100644
--- a/doc/classes/BoxContainer.xml
+++ b/doc/classes/BoxContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BoxContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="BoxContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Base class for box containers.
</brief_description>
diff --git a/doc/classes/BoxShape.xml b/doc/classes/BoxShape.xml
index 4a4b528449..00b4b6bdbb 100644
--- a/doc/classes/BoxShape.xml
+++ b/doc/classes/BoxShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BoxShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="BoxShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Box shape resource.
</brief_description>
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml
index 854f1cc7c3..bc1608baf8 100644
--- a/doc/classes/Button.xml
+++ b/doc/classes/Button.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Button" inherits="BaseButton" category="Core" version="3.0-beta">
+<class name="Button" inherits="BaseButton" category="Core" version="3.0-stable">
<brief_description>
Standard themed Button.
</brief_description>
diff --git a/doc/classes/ButtonGroup.xml b/doc/classes/ButtonGroup.xml
index 2c857371f9..19a75843e1 100644
--- a/doc/classes/ButtonGroup.xml
+++ b/doc/classes/ButtonGroup.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ButtonGroup" inherits="Resource" category="Core" version="3.0-beta">
+<class name="ButtonGroup" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Group of Buttons.
</brief_description>
diff --git a/doc/classes/Camera.xml b/doc/classes/Camera.xml
index 91c9ecc774..e481799c5c 100644
--- a/doc/classes/Camera.xml
+++ b/doc/classes/Camera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Camera" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Camera" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Camera node, displays from a point of view.
</brief_description>
@@ -150,9 +150,6 @@
<member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset">
The horizontal (Y) offset of the Camear viewport.
</member>
- <member name="vaspect" type="bool" setter="set_vaspect" getter="get_vaspect">
- A boolean representation of [member keep_aspect] in which [code]true[/code] is equivalent to [code]KEEP_WIDTH[/code].
- </member>
</members>
<constants>
<constant name="PROJECTION_PERSPECTIVE" value="0" enum="Projection">
diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml
index c95691d07f..f3825019a2 100644
--- a/doc/classes/Camera2D.xml
+++ b/doc/classes/Camera2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Camera2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Camera2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Camera node for 2D scenes.
</brief_description>
@@ -47,27 +47,6 @@
Returns the location of the [code]Camera2D[/code]'s screen-center, relative to the origin.
</description>
</method>
- <method name="get_custom_viewport" qualifiers="const">
- <return type="Node">
- </return>
- <description>
- Returns the [Viewport] used by the camera if it is not using the default viewport.
- </description>
- </method>
- <method name="get_h_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the horizontal offset of the camera.
- </description>
- </method>
- <method name="get_v_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the vertical offset of the camera.
- </description>
- </method>
<method name="make_current">
<return type="void">
</return>
@@ -83,33 +62,6 @@
This has no effect if smoothing is disabled.
</description>
</method>
- <method name="set_custom_viewport">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="Node">
- </argument>
- <description>
- Assigns a custom [Viewport] node to the [code]Camera2D[/code]. If [code]viewport[/code] is not a [Viewport], it re-assigns the default viewport instead.
- </description>
- </method>
- <method name="set_h_offset">
- <return type="void">
- </return>
- <argument index="0" name="ofs" type="float">
- </argument>
- <description>
- The camera's horizontal offset is set to [code]ofs[/code].
- </description>
- </method>
- <method name="set_v_offset">
- <return type="void">
- </return>
- <argument index="0" name="ofs" type="float">
- </argument>
- <description>
- The camera's vertical offset is set to [code]ofs[/code].
- </description>
- </method>
</methods>
<members>
<member name="anchor_mode" type="int" setter="set_anchor_mode" getter="get_anchor_mode" enum="Camera2D.AnchorMode">
@@ -118,6 +70,9 @@
<member name="current" type="bool" setter="_set_current" getter="is_current">
If [code]true[/code] the camera is the active camera for the current scene. Only one camera can be current, so setting a different camera [code]current[/code] will disable this one.
</member>
+ <member name="custom_viewport" type="Node" setter="set_custom_viewport" getter="get_custom_viewport">
+ The custom [Viewport] node attached to the [code]Camera2D[/code]. If null or not a [Viewport], uses the default viewport instead.
+ </member>
<member name="drag_margin_bottom" type="float" setter="set_drag_margin" getter="get_drag_margin">
Bottom margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the edge of the screen.
</member>
@@ -163,6 +118,12 @@
<member name="offset" type="Vector2" setter="set_offset" getter="get_offset">
The camera's offset, useful for looking around or camera shake animations.
</member>
+ <member name="offset_h" type="float" setter="set_h_offset" getter="get_h_offset">
+ The horizontal offset of the camera, relative to the drag margins. Default value: [code]0[/code]
+ </member>
+ <member name="offset_v" type="float" setter="set_v_offset" getter="get_v_offset">
+ The vertical offset of the camera, relative to the drag margins. Default value: [code]0[/code]
+ </member>
<member name="rotating" type="bool" setter="set_rotating" getter="is_rotating">
If [code]true[/code] the camera rotates with the target. Default value: [code]false[/code]
</member>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index bd20cfcf5d..bb3d4938b8 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CanvasItem" inherits="Node" category="Core" version="3.0-beta">
+<class name="CanvasItem" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Base class of anything 2D.
</brief_description>
@@ -11,6 +11,8 @@
Ultimately, a transform notification can be requested, which will notify the node that its global position changed in case the parent tree changed.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html
+ http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html
</tutorials>
<demos>
</demos>
@@ -413,7 +415,7 @@
<return type="bool">
</return>
<description>
- Returns [code]true[/code] if the node is in the [SceneTree] and is visible on-screen.
+ Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and its inherited visibility is also [code]true[/code].
</description>
</method>
<method name="make_canvas_position_local" qualifiers="const">
diff --git a/doc/classes/CanvasItemMaterial.xml b/doc/classes/CanvasItemMaterial.xml
index 81709227ad..5ec32bc63d 100644
--- a/doc/classes/CanvasItemMaterial.xml
+++ b/doc/classes/CanvasItemMaterial.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CanvasItemMaterial" inherits="Material" category="Core" version="3.0-beta">
+<class name="CanvasItemMaterial" inherits="Material" category="Core" version="3.0-stable">
<brief_description>
A material for [CanvasItem]s.
</brief_description>
diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml
index 01c2dd6ba9..3b7ba5b1ad 100644
--- a/doc/classes/CanvasLayer.xml
+++ b/doc/classes/CanvasLayer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CanvasLayer" inherits="Node" category="Core" version="3.0-beta">
+<class name="CanvasLayer" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Canvas drawing layer.
</brief_description>
@@ -7,31 +7,12 @@
Canvas drawing layer. [CanvasItem] nodes that are direct or indirect children of a [code]CanvasLayer[/code] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [code]CanvasLayer[/code] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below).
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html
+ http://docs.godotengine.org/en/3.0/tutorials/2d/canvas_layers.html
</tutorials>
<demos>
</demos>
<methods>
- <method name="get_custom_viewport" qualifiers="const">
- <return type="Node">
- </return>
- <description>
- Returns the [Viewport] used by the camera if it is not using the default viewport.
- </description>
- </method>
- <method name="get_rotation" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the base rotation for this layer in radians (helper).
- </description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <description>
- Return the base transform for this layer.
- </description>
- </method>
<method name="get_world_2d" qualifiers="const">
<return type="World2D">
</return>
@@ -39,47 +20,29 @@
Return the [World2D] used by this layer.
</description>
</method>
- <method name="set_custom_viewport">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="Node">
- </argument>
- <description>
- Assigns a custom [Viewport] node to the [code]CanvasLayer[/code]. If [code]viewport[/code] is not a [Viewport], it re-assigns the default viewport instead.
- </description>
- </method>
- <method name="set_rotation">
- <return type="void">
- </return>
- <argument index="0" name="radians" type="float">
- </argument>
- <description>
- Set the base rotation for this layer in radians (helper).
- </description>
- </method>
- <method name="set_transform">
- <return type="void">
- </return>
- <argument index="0" name="transform" type="Transform2D">
- </argument>
- <description>
- Set the base transform for this layer.
- </description>
- </method>
</methods>
<members>
+ <member name="custom_viewport" type="Node" setter="set_custom_viewport" getter="get_custom_viewport">
+ The custom [Viewport] node assigned to the [code]CanvasLayer[/code]. If null, uses the default viewport instead.
+ </member>
<member name="layer" type="int" setter="set_layer" getter="get_layer">
Layer index for draw order. Lower values are drawn first. Default value: [code]1[/code].
</member>
<member name="offset" type="Vector2" setter="set_offset" getter="get_offset">
The layer's base offset.
</member>
- <member name="rotation" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees">
+ <member name="rotation" type="float" setter="set_rotation" getter="get_rotation">
+ The layer's rotation in radians.
+ </member>
+ <member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees">
The layer's rotation in degrees.
</member>
<member name="scale" type="Vector2" setter="set_scale" getter="get_scale">
The layer's scale.
</member>
+ <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform">
+ The layer's transform.
+ </member>
</members>
<constants>
</constants>
diff --git a/doc/classes/CanvasModulate.xml b/doc/classes/CanvasModulate.xml
index 117230db1c..827502d6c0 100644
--- a/doc/classes/CanvasModulate.xml
+++ b/doc/classes/CanvasModulate.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CanvasModulate" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="CanvasModulate" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Tint the entire canvas.
</brief_description>
diff --git a/doc/classes/CapsuleMesh.xml b/doc/classes/CapsuleMesh.xml
index 715bd7ac5a..3a291128c7 100644
--- a/doc/classes/CapsuleMesh.xml
+++ b/doc/classes/CapsuleMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CapsuleMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="CapsuleMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a capsule-shaped [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/CapsuleShape.xml b/doc/classes/CapsuleShape.xml
index 25f5b8eb35..1ff4f5aa00 100644
--- a/doc/classes/CapsuleShape.xml
+++ b/doc/classes/CapsuleShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CapsuleShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="CapsuleShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Capsule shape for collisions.
</brief_description>
diff --git a/doc/classes/CapsuleShape2D.xml b/doc/classes/CapsuleShape2D.xml
index 75a69546aa..0b306643b9 100644
--- a/doc/classes/CapsuleShape2D.xml
+++ b/doc/classes/CapsuleShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CapsuleShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="CapsuleShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Capsule shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/CenterContainer.xml b/doc/classes/CenterContainer.xml
index 6235a3fec4..a4e17bf0b6 100644
--- a/doc/classes/CenterContainer.xml
+++ b/doc/classes/CenterContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CenterContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="CenterContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Keeps children controls centered.
</brief_description>
diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml
index f38b43cf8c..25340ed284 100644
--- a/doc/classes/CheckBox.xml
+++ b/doc/classes/CheckBox.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CheckBox" inherits="Button" category="Core" version="3.0-beta">
+<class name="CheckBox" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Binary choice user interface widget
</brief_description>
diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml
index 77de3c17fc..ec214fc498 100644
--- a/doc/classes/CheckButton.xml
+++ b/doc/classes/CheckButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CheckButton" inherits="Button" category="Core" version="3.0-beta">
+<class name="CheckButton" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Checkable button.
</brief_description>
diff --git a/doc/classes/CircleShape2D.xml b/doc/classes/CircleShape2D.xml
index 1018790803..0c8b2088b3 100644
--- a/doc/classes/CircleShape2D.xml
+++ b/doc/classes/CircleShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CircleShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="CircleShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Circular shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml
index b4d4d0b448..e90a84f07c 100644
--- a/doc/classes/ClassDB.xml
+++ b/doc/classes/ClassDB.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ClassDB" inherits="Object" category="Core" version="3.0-beta">
+<class name="ClassDB" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Class information repository.
</brief_description>
diff --git a/doc/classes/CollisionObject.xml b/doc/classes/CollisionObject.xml
index 5d0984bcdf..8b397f3227 100644
--- a/doc/classes/CollisionObject.xml
+++ b/doc/classes/CollisionObject.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionObject" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="CollisionObject" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Base node for collision objects.
</brief_description>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index 086513cad5..5b4ab46fd9 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionObject2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="CollisionObject2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Base node for 2D collision objects.
</brief_description>
diff --git a/doc/classes/CollisionPolygon.xml b/doc/classes/CollisionPolygon.xml
index ff689e36f4..79c41e632e 100644
--- a/doc/classes/CollisionPolygon.xml
+++ b/doc/classes/CollisionPolygon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionPolygon" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="CollisionPolygon" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Editor-only class for defining a collision polygon in 3D space.
</brief_description>
diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml
index 995b868f89..0b17e6d26e 100644
--- a/doc/classes/CollisionPolygon2D.xml
+++ b/doc/classes/CollisionPolygon2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionPolygon2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="CollisionPolygon2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Defines a 2D collision polygon.
</brief_description>
diff --git a/doc/classes/CollisionShape.xml b/doc/classes/CollisionShape.xml
index b893ee79ad..36a015ce80 100644
--- a/doc/classes/CollisionShape.xml
+++ b/doc/classes/CollisionShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionShape" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="CollisionShape" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Node that represents collision shape data in 3D space.
</brief_description>
@@ -7,6 +7,7 @@
Editor facility for creating and editing collision shapes in 3D space. You can use this node to represent all sorts of collision shapes, for example, add this to an [Area] to give it a detection shape, or add it to a [PhysicsBody] to give create solid object. [b]IMPORTANT[/b]: this is an Editor-only helper to create shapes, use [method get_shape] to get the actual shape.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml
index 2ab9540196..ed5a094996 100644
--- a/doc/classes/CollisionShape2D.xml
+++ b/doc/classes/CollisionShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CollisionShape2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="CollisionShape2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Node that represents collision shape data in 2D space.
</brief_description>
@@ -7,6 +7,7 @@
Editor facility for creating and editing collision shapes in 2D space. You can use this node to represent all sorts of collision shapes, for example, add this to an [Area2D] to give it a detection shape, or add it to a [PhysicsBody2D] to give create solid object. [b]IMPORTANT[/b]: this is an Editor-only helper to create shapes, use [method get_shape] to get the actual shape.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 6fa7ed0a86..11c59531a8 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Color" category="Built-In Types" version="3.0-beta">
+<class name="Color" category="Built-In Types" version="3.0-stable">
<brief_description>
Color in RGBA format with some support for ARGB format.
</brief_description>
<description>
A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency. Values are in floating point and usually range from 0 to 1. Some methods (such as set_modulate(color)) may accept values &gt; 1.
+ You can also create a color from standardised color names with [method @GDScript.ColorN].
</description>
<tutorials>
</tutorials>
@@ -63,7 +64,7 @@
<argument index="0" name="from" type="String">
</argument>
<description>
- Constructs a color from an HTML hexadecimal color string in ARGB or RGB format.
+ Constructs a color from an HTML hexadecimal color string in ARGB or RGB format. See also [method @GDScript.ColorN].
The following string formats are supported:
[code]"#ff00ff00"[/code] - ARGB format with '#'
[code]"ff00ff00"[/code] - ARGB format
@@ -203,8 +204,7 @@
var c = Color(1, .5, .2)
print(str(c.to_32())) # prints 4294934323
[/codeblock]
-
- [i]This is same as [method to_ARGB32] but may be changed later to support RGBA format instead[/i].
+ [i]This is same as [method to_argb32] but may be changed later to support RGBA format instead[/i].
</description>
</method>
</methods>
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 192f139ba9..c69fc360a8 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ColorPicker" inherits="BoxContainer" category="Core" version="3.0-beta">
+<class name="ColorPicker" inherits="BoxContainer" category="Core" version="3.0-stable">
<brief_description>
Color picker control.
</brief_description>
@@ -20,55 +20,18 @@
Adds the current selected to color to a list of colors (presets), the presets will be displayed in the color picker and the user will be able to select them, notice that the presets list is only for this color picker.
</description>
</method>
- <method name="get_pick_color" qualifiers="const">
- <return type="Color">
- </return>
- <description>
- Gets the current color.
- </description>
- </method>
- <method name="is_editing_alpha" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether the color has transparency or not.
- </description>
- </method>
- <method name="is_raw_mode" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether this color picker is in raw mode or not, raw mode will allow the color R, G, B component values to go beyond 1, you have to consider that the max value for color components is 1, going beyond that value will not have effect in the color, but can be used for special operations that require it (like tinting without darkening or rendering sprites in HDR).
- </description>
- </method>
- <method name="set_edit_alpha">
- <return type="void">
- </return>
- <argument index="0" name="show" type="bool">
- </argument>
- <description>
- Set true if you want the color to have an alpha channel (transparency), or false if you want a solid color.
- </description>
- </method>
- <method name="set_pick_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
- <description>
- Select the current color.
- </description>
- </method>
- <method name="set_raw_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="bool">
- </argument>
- <description>
- Set whether this color picker is using raw mode or not, see [method is_raw_mode].
- </description>
- </method>
</methods>
+ <members>
+ <member name="color" type="Color" setter="set_pick_color" getter="get_pick_color">
+ The currently selected color.
+ </member>
+ <member name="edit_alpha" type="bool" setter="set_edit_alpha" getter="is_editing_alpha">
+ If [code]true[/code], shows an alpha channel slider (transparency).
+ </member>
+ <member name="raw_mode" type="bool" setter="set_raw_mode" getter="is_raw_mode">
+ If [code]true[/code], allows the color R, G, B component values to go beyond 1.0, which can be used for certain special operations that require it (like tinting without darkening or rendering sprites in HDR).
+ </member>
+ </members>
<signals>
<signal name="color_changed">
<argument index="0" name="color" type="Color">
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index 87d00b7600..47fc198638 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ColorPickerButton" inherits="Button" category="Core" version="3.0-beta">
+<class name="ColorPickerButton" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Button that pops out a [ColorPicker]
</brief_description>
diff --git a/doc/classes/ColorRect.xml b/doc/classes/ColorRect.xml
index af1b0f57e2..332d0f573f 100644
--- a/doc/classes/ColorRect.xml
+++ b/doc/classes/ColorRect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ColorRect" inherits="Control" category="Core" version="3.0-beta">
+<class name="ColorRect" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Colored rect for canvas.
</brief_description>
diff --git a/doc/classes/ConcavePolygonShape.xml b/doc/classes/ConcavePolygonShape.xml
index bae86d5b22..4700491921 100644
--- a/doc/classes/ConcavePolygonShape.xml
+++ b/doc/classes/ConcavePolygonShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConcavePolygonShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="ConcavePolygonShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Concave polygon shape.
</brief_description>
diff --git a/doc/classes/ConcavePolygonShape2D.xml b/doc/classes/ConcavePolygonShape2D.xml
index 1d2aabd6ea..c339ee65a0 100644
--- a/doc/classes/ConcavePolygonShape2D.xml
+++ b/doc/classes/ConcavePolygonShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConcavePolygonShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="ConcavePolygonShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Concave polygon 2D shape resource for physics.
</brief_description>
diff --git a/doc/classes/ConeTwistJoint.xml b/doc/classes/ConeTwistJoint.xml
index 4fcacb6d46..b7a4894ea7 100644
--- a/doc/classes/ConeTwistJoint.xml
+++ b/doc/classes/ConeTwistJoint.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.0-beta">
+<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.0-stable">
<brief_description>
A twist joint between two 3D bodies
</brief_description>
diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml
index fcd8834b0c..17243b2100 100644
--- a/doc/classes/ConfigFile.xml
+++ b/doc/classes/ConfigFile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConfigFile" inherits="Reference" category="Core" version="3.0-beta">
+<class name="ConfigFile" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Helper class to handle INI-style files.
</brief_description>
diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml
index 77eb1bfc2c..2759c1b883 100644
--- a/doc/classes/ConfirmationDialog.xml
+++ b/doc/classes/ConfirmationDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConfirmationDialog" inherits="AcceptDialog" category="Core" version="3.0-beta">
+<class name="ConfirmationDialog" inherits="AcceptDialog" category="Core" version="3.0-stable">
<brief_description>
Dialog for confirmation of actions.
</brief_description>
diff --git a/doc/classes/Container.xml b/doc/classes/Container.xml
index a2aa39414c..0447c80887 100644
--- a/doc/classes/Container.xml
+++ b/doc/classes/Container.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Container" inherits="Control" category="Core" version="3.0-beta">
+<class name="Container" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Base node for containers.
</brief_description>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 6c30a92ed5..603faf6beb 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Control" inherits="CanvasItem" category="Core" version="3.0-beta">
+<class name="Control" inherits="CanvasItem" category="Core" version="3.0-stable">
<brief_description>
All User Interface nodes inherit from Control. Features anchors and margins to adapt its position and size to its parent.
</brief_description>
@@ -8,11 +8,13 @@
For more information on Godot's UI system, anchors, margins, and containers, see the related tutorials in the manual. To build flexible UIs, you'll need a mix of UI elements that inherit from [code]Control[/code] and [Container] nodes.
[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 [method MainLoop._input_event]. 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.
- Only one [code]Control[/code] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the foucs, call [method set_focus_mode]. [code]Control[/code] nodes lose focus when another node grabs it, or if you hide the node in focus.
+ Only one [code]Control[/code] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call [method set_focus_mode]. [code]Control[/code] nodes lose focus when another node grabs it, or if you hide the node in focus.
Call [method set_ignore_mouse] to tell a [code]Control[/code] 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 [code]Control[/code] node, it affects all of its children. To override some of the theme's parameters, call one of the [code]add_*_override[/code] methods, like [method add_font_override]. You can override the theme with the inspector.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/gui/index.html
+ http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html
</tutorials>
<demos>
</demos>
@@ -96,7 +98,7 @@
Overrides the [code]name[/code] shader in the [theme] resource the node uses. If [code]shader[/code] is empty, Godot clears the override.
</description>
</method>
- <method name="add_style_override">
+ <method name="add_stylebox_override">
<return type="void">
</return>
<argument index="0" name="name" type="String">
@@ -178,13 +180,6 @@
Returns the mouse cursor shape the control displays on mouse hover, one of the [code]CURSOR_*[/code] constants.
</description>
</method>
- <method name="get_default_cursor_shape" qualifiers="const">
- <return type="int" enum="Control.CursorShape">
- </return>
- <description>
- Returns the default cursor shape for this control. See enum [code]CURSOR_*[/code] for the list of shapes.
- </description>
- </method>
<method name="get_drag_data" qualifiers="virtual">
<return type="Object">
</return>
@@ -200,13 +195,6 @@
Returns MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]).
</description>
</method>
- <method name="get_focus_mode" qualifiers="const">
- <return type="int" enum="Control.FocusMode">
- </return>
- <description>
- Returns the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL) (see [method set_focus_mode]).
- </description>
- </method>
<method name="get_focus_owner" qualifiers="const">
<return type="Control">
</return>
@@ -224,13 +212,6 @@
<description>
</description>
</method>
- <method name="get_global_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Returns the Control position, relative to the top-left corner of the parent Control and independent of the anchor mode.
- </description>
- </method>
<method name="get_global_rect" qualifiers="const">
<return type="Rect2">
</return>
@@ -400,6 +381,14 @@
<description>
</description>
</method>
+ <method name="has_shader_override" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="has_stylebox" qualifiers="const">
<return type="bool">
</return>
@@ -490,15 +479,6 @@
Sets MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]).
</description>
</method>
- <method name="set_default_cursor_shape">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="int" enum="Control.CursorShape">
- </argument>
- <description>
- Sets the default cursor shape for this control. See [code]CURSOR_*[/code] for the list of available cursor shapes. Useful for Godot plugins and applications or games that use the system's mouse cursors.
- </description>
- </method>
<method name="set_drag_forwarding">
<return type="void">
</return>
@@ -524,24 +504,6 @@
Sets MARGIN_RIGHT and MARGIN_BOTTOM at the same time. This is a helper (see [method set_margin]).
</description>
</method>
- <method name="set_focus_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Control.FocusMode">
- </argument>
- <description>
- Set the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL). Only one Control can be focused at the same time, and it will receive keyboard signals.
- </description>
- </method>
- <method name="set_global_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <description>
- Move the Control to a new position, relative to the top-left corner of the [i]window[/i] Control, and without changing current anchor mode. (see [method set_margin]).
- </description>
- </method>
<method name="set_margins_preset">
<return type="void">
</return>
@@ -594,6 +556,9 @@
<member name="anchor_top" type="float" setter="_set_anchor" getter="get_anchor">
Anchors the top edge of the node to the origin, the center or the end of its parent container. It changes how the top margin updates when the node moves or changes size. Use one of the [code]ANCHOR_*[/code] constants. Default value: [code]ANCHOR_BEGIN[/code].
</member>
+ <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode">
+ 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>
<member name="focus_neighbour_bottom" type="NodePath" setter="set_focus_neighbour" getter="get_focus_neighbour">
Tells Godot which node it should give keyboard focus to if the user presses Tab, the down arrow on the keyboard, or down on a gamepad. The node must be a [code]Control[/code]. If this property is not set, Godot will give focus to the closest [code]Control[/code] to the bottom of this one.
If the user presses Tab, Godot will give focus to the closest node to the right first, then to the bottom. If the user presses Shift+Tab, Godot will look to the left of the node, then above it.
@@ -631,10 +596,17 @@
<member name="margin_top" type="float" setter="set_margin" getter="get_margin">
Distance between the node's top edge and its parent container, based on [member anchor_top].
</member>
+ <member name="mouse_default_cursor_shape" type="int" setter="set_default_cursor_shape" getter="get_default_cursor_shape" enum="Control.CursorShape">
+ The default cursor shape for this control. Useful for Godot plugins and applications or games that use the system's mouse cursors.
+ </member>
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" enum="Control.MouseFilter">
+ Controls whether the control will be able to receive mouse button input events through [method _gui_input] and how these events should be handled. Use one of the [code]MOUSE_FILTER_*[/code] constants. See the constants to learn what each does.
</member>
<member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents">
</member>
+ <member name="rect_global_position" type="Vector2" setter="set_global_position" getter="get_global_position">
+ The node's global position, relative to the world (usually to the top-left corner of the window).
+ </member>
<member name="rect_min_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size">
The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes.
</member>
@@ -696,12 +668,12 @@
</signal>
<signal name="mouse_entered">
<description>
- Emitted when the mouse enters the control's [code]Rect[/code] area.
+ Emitted when the mouse enters the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it.
</description>
</signal>
<signal name="mouse_exited">
<description>
- Emitted when the mouse leaves the control's [code]Rect[/code] area.
+ Emitted when the mouse leaves the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it.
</description>
</signal>
<signal name="resized">
@@ -869,10 +841,13 @@
Tells the parent [Container] to align the node with its end, either the bottom or the right edge. It doesn't work with the fill or expand size flags. Use with [member size_flags_horizontal] and [member size_flags_vertical].
</constant>
<constant name="MOUSE_FILTER_STOP" value="0" enum="MouseFilter">
+ The control will receive mouse button input events through [method _gui_input] if clicked on. These events are automatically marked as handled and they will not propagate further to other controls.
</constant>
<constant name="MOUSE_FILTER_PASS" value="1" enum="MouseFilter">
+ The control will receive mouse button input events through [method _gui_input] if clicked on. If this control does not handle the event, the parent control (if any) will be considered for a mouse click, and so on until there is no more parent control to potentially handle it. Even if no control handled it at all, the event will still be handled automatically.
</constant>
<constant name="MOUSE_FILTER_IGNORE" value="2" enum="MouseFilter">
+ The control will not receive mouse button input events through [method _gui_input] and will not block other controls from receiving these events. These events will also not be handled automatically.
</constant>
<constant name="GROW_DIRECTION_BEGIN" value="0" enum="GrowDirection">
</constant>
diff --git a/doc/classes/ConvexPolygonShape.xml b/doc/classes/ConvexPolygonShape.xml
index 5ed57a5c05..2b809ca80a 100644
--- a/doc/classes/ConvexPolygonShape.xml
+++ b/doc/classes/ConvexPolygonShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConvexPolygonShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="ConvexPolygonShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Convex polygon shape for 3D physics.
</brief_description>
diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml
index a670ddc9cd..b5ce052b4b 100644
--- a/doc/classes/ConvexPolygonShape2D.xml
+++ b/doc/classes/ConvexPolygonShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ConvexPolygonShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="ConvexPolygonShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Convex Polygon Shape for 2D physics.
</brief_description>
diff --git a/doc/classes/CubeMap.xml b/doc/classes/CubeMap.xml
index 30022efd38..26fda49803 100644
--- a/doc/classes/CubeMap.xml
+++ b/doc/classes/CubeMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CubeMap" inherits="Resource" category="Core" version="3.0-beta">
+<class name="CubeMap" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A CubeMap is a 6 sided 3D texture.
</brief_description>
@@ -11,13 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_flags" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details.
- </description>
- </method>
<method name="get_height" qualifiers="const">
<return type="int">
</return>
@@ -41,15 +34,6 @@
Returns the [code]CubeMap[/code]'s width.
</description>
</method>
- <method name="set_flags">
- <return type="void">
- </return>
- <argument index="0" name="flags" type="int">
- </argument>
- <description>
- Returns the render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details.
- </description>
- </method>
<method name="set_side">
<return type="void">
</return>
@@ -63,6 +47,9 @@
</method>
</methods>
<members>
+ <member name="flags" type="int" setter="set_flags" getter="get_flags">
+ The render flags for the [code]CubeMap[/code]. See the [code]FLAG_*[/code] constants for details.
+ </member>
<member name="lossy_storage_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality">
The lossy storage quality of the [code]CubeMap[/code] if the storage mode is set to STORAGE_COMPRESS_LOSSY.
</member>
diff --git a/doc/classes/CubeMesh.xml b/doc/classes/CubeMesh.xml
index 56ca64e10a..c7ec4d9dfe 100644
--- a/doc/classes/CubeMesh.xml
+++ b/doc/classes/CubeMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CubeMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="CubeMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Generate an axis-aligned cuboid [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/Curve.xml b/doc/classes/Curve.xml
index 8a007cc5cc..388d8ab54f 100644
--- a/doc/classes/Curve.xml
+++ b/doc/classes/Curve.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Curve" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Curve" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A mathematic curve.
</brief_description>
diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml
index 8a857799e6..2dbfcbc6ec 100644
--- a/doc/classes/Curve2D.xml
+++ b/doc/classes/Curve2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Curve2D" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Curve2D" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Describes a Bezier curve in 2D space.
</brief_description>
diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml
index 91d7a9bed8..acb6b0d72f 100644
--- a/doc/classes/Curve3D.xml
+++ b/doc/classes/Curve3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Curve3D" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Curve3D" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Describes a Bezier curve in 3D space.
</brief_description>
diff --git a/doc/classes/CurveTexture.xml b/doc/classes/CurveTexture.xml
index f62da8a135..bc090d623a 100644
--- a/doc/classes/CurveTexture.xml
+++ b/doc/classes/CurveTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CurveTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="CurveTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
A texture that shows a curve.
</brief_description>
diff --git a/doc/classes/CylinderMesh.xml b/doc/classes/CylinderMesh.xml
index 57c0027c4c..e57ffd2841 100644
--- a/doc/classes/CylinderMesh.xml
+++ b/doc/classes/CylinderMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CylinderMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="CylinderMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a cylindrical [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/DampedSpringJoint2D.xml b/doc/classes/DampedSpringJoint2D.xml
index a49f03eb07..950817dc04 100644
--- a/doc/classes/DampedSpringJoint2D.xml
+++ b/doc/classes/DampedSpringJoint2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="DampedSpringJoint2D" inherits="Joint2D" category="Core" version="3.0-beta">
+<class name="DampedSpringJoint2D" inherits="Joint2D" category="Core" version="3.0-stable">
<brief_description>
Damped spring constraint for 2D physics.
</brief_description>
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index 08c01c1d85..37845dbae4 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Dictionary" category="Built-In Types" version="3.0-beta">
+<class name="Dictionary" category="Built-In Types" version="3.0-stable">
<brief_description>
Dictionary type.
</brief_description>
diff --git a/doc/classes/DirectionalLight.xml b/doc/classes/DirectionalLight.xml
index 287c98e715..bbb8936a12 100644
--- a/doc/classes/DirectionalLight.xml
+++ b/doc/classes/DirectionalLight.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="DirectionalLight" inherits="Light" category="Core" version="3.0-beta">
+<class name="DirectionalLight" inherits="Light" category="Core" version="3.0-stable">
<brief_description>
Directional Light, such as the Sun or the Moon.
</brief_description>
@@ -7,6 +7,7 @@
A DirectionalLight is a type of [Light] node that emits light constantly in one direction (the negative z axis of the node). It is used lights with strong intensity that are located far away from the scene to model sunlight or moonlight. The worldspace location of the DirectionalLight transform (origin) is ignored, only the basis is used do determine light direction.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Directory.xml b/doc/classes/Directory.xml
index c87d1ef006..bfd1e2872d 100644
--- a/doc/classes/Directory.xml
+++ b/doc/classes/Directory.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Directory" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Directory" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Type used to handle the filesystem.
</brief_description>
@@ -23,6 +23,7 @@
[/codeblock]
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/filesystem.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/DynamicFont.xml b/doc/classes/DynamicFont.xml
index eae7a1b02b..06291c1e61 100644
--- a/doc/classes/DynamicFont.xml
+++ b/doc/classes/DynamicFont.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="DynamicFont" inherits="Font" category="Core" version="3.0-beta">
+<class name="DynamicFont" inherits="Font" category="Core" version="3.0-stable">
<brief_description>
DynamicFont renders vector font files at runtime.
</brief_description>
diff --git a/doc/classes/DynamicFontData.xml b/doc/classes/DynamicFontData.xml
index 360f0cb0d8..5f4e598f36 100644
--- a/doc/classes/DynamicFontData.xml
+++ b/doc/classes/DynamicFontData.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="DynamicFontData" inherits="Resource" category="Core" version="3.0-beta">
+<class name="DynamicFontData" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Used with [DynamicFont] to describe the location of a font file.
</brief_description>
diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml
index ef430d31be..ede892e7ef 100644
--- a/doc/classes/EditorExportPlugin.xml
+++ b/doc/classes/EditorExportPlugin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorExportPlugin" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorExportPlugin" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml
index 1a1c382e59..b3a12dbede 100644
--- a/doc/classes/EditorFileDialog.xml
+++ b/doc/classes/EditorFileDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorFileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-beta">
+<class name="EditorFileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorFileSystem.xml b/doc/classes/EditorFileSystem.xml
index 54b3accb19..1eda817d33 100644
--- a/doc/classes/EditorFileSystem.xml
+++ b/doc/classes/EditorFileSystem.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorFileSystem" inherits="Node" category="Core" version="3.0-beta">
+<class name="EditorFileSystem" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Resource filesystem, as the editor sees it.
</brief_description>
diff --git a/doc/classes/EditorFileSystemDirectory.xml b/doc/classes/EditorFileSystemDirectory.xml
index 1a2f73a683..005bebaca8 100644
--- a/doc/classes/EditorFileSystemDirectory.xml
+++ b/doc/classes/EditorFileSystemDirectory.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorFileSystemDirectory" inherits="Object" category="Core" version="3.0-beta">
+<class name="EditorFileSystemDirectory" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
A diretory for the resource filesystem.
</brief_description>
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index f9e3c288e7..07d6f92274 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorImportPlugin" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorImportPlugin" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Registers a custom resource importer in the editor. Use the class to parse any file and import it as a new resource type.
</brief_description>
diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml
index 4bbbac8cf7..61c93becde 100644
--- a/doc/classes/EditorInterface.xml
+++ b/doc/classes/EditorInterface.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorInterface" inherits="Node" category="Core" version="3.0-beta">
+<class name="EditorInterface" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Editor interface and main components.
</brief_description>
@@ -76,6 +76,12 @@
Returns the [ScriptEditor].
</description>
</method>
+ <method name="get_selected_path" qualifiers="const">
+ <return type="String">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_selection">
<return type="EditorSelection">
</return>
@@ -94,6 +100,15 @@
Shows the given property on the given [code]object[/code] in the Editor's Inspector dock.
</description>
</method>
+ <method name="is_plugin_enabled" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="plugin" type="String">
+ </argument>
+ <description>
+ Returns the enabled status of a plugin. The plugin name is the same as its directory name.
+ </description>
+ </method>
<method name="make_mesh_previews">
<return type="Array">
</return>
@@ -141,6 +156,25 @@
Saves the scene as a file at [code]path[/code].
</description>
</method>
+ <method name="select_file">
+ <return type="void">
+ </return>
+ <argument index="0" name="p_file" type="String">
+ </argument>
+ <description>
+ </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>
+ <description>
+ Sets the enabled status of a plugin. The plugin name is the same as its directory name.
+ </description>
+ </method>
</methods>
<constants>
</constants>
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index ada0ee56a8..8f4784334d 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorPlugin" inherits="Node" category="Core" version="3.0-beta">
+<class name="EditorPlugin" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Used by the editor to extend its functionality.
</brief_description>
@@ -7,6 +7,7 @@
Plugins are used by the editor to extend functionality. The most common types of plugins are those which edit a given node or resource type, import plugins and export plugins.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/development/plugins/index.html
</tutorials>
<demos>
</demos>
@@ -136,9 +137,7 @@
<method name="forward_canvas_gui_input" qualifiers="virtual">
<return type="bool">
</return>
- <argument index="0" name="canvas_xform" type="Transform2D">
- </argument>
- <argument index="1" name="event" type="InputEvent">
+ <argument index="0" name="event" type="InputEvent">
</argument>
<description>
</description>
diff --git a/doc/classes/EditorResourceConversionPlugin.xml b/doc/classes/EditorResourceConversionPlugin.xml
index 8d6aa3a605..9facba18b0 100644
--- a/doc/classes/EditorResourceConversionPlugin.xml
+++ b/doc/classes/EditorResourceConversionPlugin.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorResourceConversionPlugin" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorResourceConversionPlugin" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorResourcePreview.xml b/doc/classes/EditorResourcePreview.xml
index 481ffed70b..9b14771f0f 100644
--- a/doc/classes/EditorResourcePreview.xml
+++ b/doc/classes/EditorResourcePreview.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorResourcePreview" inherits="Node" category="Core" version="3.0-beta">
+<class name="EditorResourcePreview" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Helper to generate previews of resources or files.
</brief_description>
diff --git a/doc/classes/EditorResourcePreviewGenerator.xml b/doc/classes/EditorResourcePreviewGenerator.xml
index 03cb232619..d116e56cf7 100644
--- a/doc/classes/EditorResourcePreviewGenerator.xml
+++ b/doc/classes/EditorResourcePreviewGenerator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorResourcePreviewGenerator" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorResourcePreviewGenerator" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Custom generator of previews.
</brief_description>
diff --git a/doc/classes/EditorSceneImporter.xml b/doc/classes/EditorSceneImporter.xml
index 69fe4050f4..31846ed401 100644
--- a/doc/classes/EditorSceneImporter.xml
+++ b/doc/classes/EditorSceneImporter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneImporter" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorSceneImporter" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml
index a9bc659e7d..4c0709249e 100644
--- a/doc/classes/EditorScenePostImport.xml
+++ b/doc/classes/EditorScenePostImport.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorScenePostImport" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorScenePostImport" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml
index 97f126e7f7..a3cd12ab50 100644
--- a/doc/classes/EditorScript.xml
+++ b/doc/classes/EditorScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorScript" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EditorScript" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Base script that can be used to add extension functions to the editor.
</brief_description>
diff --git a/doc/classes/EditorSelection.xml b/doc/classes/EditorSelection.xml
index 31e27a1b01..0424ab5e43 100644
--- a/doc/classes/EditorSelection.xml
+++ b/doc/classes/EditorSelection.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSelection" inherits="Object" category="Core" version="3.0-beta">
+<class name="EditorSelection" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Manages the SceneTree selection in the editor.
</brief_description>
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 174b62fde0..a37ea0fec7 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSettings" inherits="Resource" category="Core" version="3.0-beta">
+<class name="EditorSettings" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Object that holds the project-independent editor settings.
</brief_description>
@@ -126,6 +126,8 @@
</argument>
<argument index="1" name="value" type="Variant">
</argument>
+ <argument index="2" name="update_current" type="bool">
+ </argument>
<description>
</description>
</method>
diff --git a/doc/classes/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml
index e55cdd0ca7..ba026166bb 100644
--- a/doc/classes/EditorSpatialGizmo.xml
+++ b/doc/classes/EditorSpatialGizmo.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSpatialGizmo" inherits="SpatialGizmo" category="Core" version="3.0-beta">
+<class name="EditorSpatialGizmo" inherits="SpatialGizmo" category="Core" version="3.0-stable">
<brief_description>
Custom gizmo for editing Spatial objects.
</brief_description>
diff --git a/doc/classes/EncodedObjectAsID.xml b/doc/classes/EncodedObjectAsID.xml
index b60f2fc2bd..604ce42516 100644
--- a/doc/classes/EncodedObjectAsID.xml
+++ b/doc/classes/EncodedObjectAsID.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EncodedObjectAsID" inherits="Reference" category="Core" version="3.0-beta">
+<class name="EncodedObjectAsID" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml
index 0fd5892860..ad5e75bad5 100644
--- a/doc/classes/Engine.xml
+++ b/doc/classes/Engine.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Engine" inherits="Object" category="Core" version="3.0-beta">
+<class name="Engine" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Access to basic engine properties.
</brief_description>
@@ -25,13 +25,6 @@
Returns the frames per second of the running game.
</description>
</method>
- <method name="get_iterations_per_second" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the number of fixed iterations per second (for fixed process and physics).
- </description>
- </method>
<method name="get_main_loop" qualifiers="const">
<return type="MainLoop">
</return>
@@ -47,20 +40,6 @@
<description>
</description>
</method>
- <method name="get_target_fps" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the desired frames per second. If the hardware cannot keep up, this setting may not be respected. It defaults to 0, which indicates no limit.
- </description>
- </method>
- <method name="get_time_scale">
- <return type="float">
- </return>
- <description>
- Returns how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed.
- </description>
- </method>
<method name="get_version_info" qualifiers="const">
<return type="Dictionary">
</return>
@@ -83,13 +62,6 @@
<description>
</description>
</method>
- <method name="is_editor_hint" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the editor is running.
- </description>
- </method>
<method name="is_in_physics_frame" qualifiers="const">
<return type="bool">
</return>
@@ -97,43 +69,21 @@
Returns [code]true[/code] if the game is inside the fixed process and physics phase of the game loop.
</description>
</method>
- <method name="set_editor_hint">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Sets the running inside the editor hint if [code]enabled[/code] is [code]true[/code].
- </description>
- </method>
- <method name="set_iterations_per_second">
- <return type="void">
- </return>
- <argument index="0" name="iterations_per_second" type="int">
- </argument>
- <description>
- Sets the number of fixed iterations per second (for fixed process and physics).
- </description>
- </method>
- <method name="set_target_fps">
- <return type="void">
- </return>
- <argument index="0" name="target_fps" type="int">
- </argument>
- <description>
- Sets the target frames per second.
- </description>
- </method>
- <method name="set_time_scale">
- <return type="void">
- </return>
- <argument index="0" name="time_scale" type="float">
- </argument>
- <description>
- Sets the time scale.
- </description>
- </method>
</methods>
+ <members>
+ <member name="editor_hint" type="bool" setter="set_editor_hint" getter="is_editor_hint">
+ If [code]true[/code], it is running inside the editor. Useful for tool scripts.
+ </member>
+ <member name="iterations_per_second" type="int" setter="set_iterations_per_second" getter="get_iterations_per_second">
+ The number of fixed iterations per second (for fixed process and physics).
+ </member>
+ <member name="target_fps" type="int" setter="set_target_fps" getter="get_target_fps">
+ The desired frames per second. If the hardware cannot keep up, this setting may not be respected. Defaults to 0, which indicates no limit.
+ </member>
+ <member name="time_scale" type="float" setter="set_time_scale" getter="get_time_scale">
+ Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index e252f67774..ea35ef89f3 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Environment" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Environment" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Resource for environment nodes (like [WorldEnvironment]) that define multiple rendering options.
</brief_description>
@@ -12,6 +12,8 @@
- Adjustments
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/environment_and_post_processing.html
+ http://docs.godotengine.org/en/3.0/tutorials/3d/high_dynamic_range.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/File.xml b/doc/classes/File.xml
index 8c270ece4b..3ac2a7e643 100644
--- a/doc/classes/File.xml
+++ b/doc/classes/File.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="File" inherits="Reference" category="Core" version="3.0-beta">
+<class name="File" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Type to handle file reading and writing operations.
</brief_description>
@@ -22,6 +22,7 @@
[/codeblock]
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/filesystem.html
</tutorials>
<demos>
</demos>
@@ -109,13 +110,6 @@
Returns the next 64 bits from the file as a floating point number.
</description>
</method>
- <method name="get_endian_swap">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if endian swap is enabled for this file.
- </description>
- </method>
<method name="get_error" qualifiers="const">
<return type="int" enum="Error">
</return>
@@ -274,16 +268,6 @@
Changes the file reading/writing cursor to the specified position (in bytes from the end of the file). Note that 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="set_endian_swap">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] the file's endianness is swapped. Use this if you're dealing with files written in big endian machines.
- Note that this is about the file format, not CPU type. This is always reseted to [code]false[/code] whenever you open the file.
- </description>
- </method>
<method name="store_16">
<return type="void">
</return>
@@ -393,6 +377,12 @@
</description>
</method>
</methods>
+ <members>
+ <member name="endian_swap" type="bool" setter="set_endian_swap" getter="get_endian_swap">
+ If [code]true[/code] the file's endianness is swapped. Use this if you're dealing with files written in big endian machines.
+ Note that this is about the file format, not CPU type. This is always reseted to [code]false[/code] whenever you open the file.
+ </member>
+ </members>
<constants>
<constant name="READ" value="1" enum="ModeFlags">
Opens the file for read operations.
diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml
index 3387b4a2ed..cee64b7ade 100644
--- a/doc/classes/FileDialog.xml
+++ b/doc/classes/FileDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="FileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-beta">
+<class name="FileDialog" inherits="ConfirmationDialog" category="Core" version="3.0-stable">
<brief_description>
Dialog for selecting files or directories in the filesystem.
</brief_description>
@@ -33,27 +33,6 @@
<description>
</description>
</method>
- <method name="get_current_dir" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Get the current working directory of the file dialog.
- </description>
- </method>
- <method name="get_current_file" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Get the current selected file of the file dialog (empty if none).
- </description>
- </method>
- <method name="get_current_path" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Get the current selected path (directory and file) of the file dialog (empty if none).
- </description>
- </method>
<method name="get_vbox">
<return type="VBoxContainer">
</return>
@@ -68,37 +47,19 @@
Invalidate and update the current dialog content list.
</description>
</method>
- <method name="set_current_dir">
- <return type="void">
- </return>
- <argument index="0" name="dir" type="String">
- </argument>
- <description>
- Set the current working directory of the file dialog.
- </description>
- </method>
- <method name="set_current_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
- <description>
- Set the current selected file name of the file dialog.
- </description>
- </method>
- <method name="set_current_path">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <description>
- Set the current selected file path of the file dialog.
- </description>
- </method>
</methods>
<members>
<member name="access" type="int" setter="set_access" getter="get_access" enum="FileDialog.Access">
</member>
+ <member name="current_dir" type="String" setter="set_current_dir" getter="get_current_dir">
+ The current working directory of the file dialog.
+ </member>
+ <member name="current_file" type="String" setter="set_current_file" getter="get_current_file">
+ The currently selected file of the file dialog.
+ </member>
+ <member name="current_path" type="String" setter="set_current_path" getter="get_current_path">
+ The currently selected file path of the file dialog.
+ </member>
<member name="filters" type="PoolStringArray" setter="set_filters" getter="get_filters">
</member>
<member name="mode" type="int" setter="set_mode" getter="get_mode" enum="FileDialog.Mode">
diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml
index bc4557a171..7190067b09 100644
--- a/doc/classes/Font.xml
+++ b/doc/classes/Font.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Font" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Font" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Internationalized font and text drawing support.
</brief_description>
diff --git a/doc/classes/FuncRef.xml b/doc/classes/FuncRef.xml
index 802f35dd10..8ad6da9adc 100644
--- a/doc/classes/FuncRef.xml
+++ b/doc/classes/FuncRef.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="FuncRef" inherits="Reference" category="Core" version="3.0-beta">
+<class name="FuncRef" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Reference to a function in an object.
</brief_description>
diff --git a/doc/classes/GIProbe.xml b/doc/classes/GIProbe.xml
index 0644e3f24e..e9f1dfecaf 100644
--- a/doc/classes/GIProbe.xml
+++ b/doc/classes/GIProbe.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GIProbe" inherits="VisualInstance" category="Core" version="3.0-beta">
+<class name="GIProbe" inherits="VisualInstance" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/gi_probes.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/GIProbeData.xml b/doc/classes/GIProbeData.xml
index aba59f57ea..32a891e277 100644
--- a/doc/classes/GIProbeData.xml
+++ b/doc/classes/GIProbeData.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GIProbeData" inherits="Resource" category="Core" version="3.0-beta">
+<class name="GIProbeData" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,161 +9,31 @@
<demos>
</demos>
<methods>
- <method name="get_bias" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_bounds" qualifiers="const">
- <return type="AABB">
- </return>
- <description>
- </description>
- </method>
- <method name="get_cell_size" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_dynamic_data" qualifiers="const">
- <return type="PoolIntArray">
- </return>
- <description>
- </description>
- </method>
- <method name="get_dynamic_range" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_energy" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_normal_bias" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_propagation" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_to_cell_xform" qualifiers="const">
- <return type="Transform">
- </return>
- <description>
- </description>
- </method>
- <method name="is_compressed" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="is_interior" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="set_bias">
- <return type="void">
- </return>
- <argument index="0" name="bias" type="float">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_bounds">
- <return type="void">
- </return>
- <argument index="0" name="bounds" type="AABB">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_cell_size">
- <return type="void">
- </return>
- <argument index="0" name="cell_size" type="float">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_compress">
- <return type="void">
- </return>
- <argument index="0" name="compress" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_dynamic_data">
- <return type="void">
- </return>
- <argument index="0" name="dynamic_data" type="PoolIntArray">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_dynamic_range">
- <return type="void">
- </return>
- <argument index="0" name="dynamic_range" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_energy">
- <return type="void">
- </return>
- <argument index="0" name="energy" type="float">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_interior">
- <return type="void">
- </return>
- <argument index="0" name="interior" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_normal_bias">
- <return type="void">
- </return>
- <argument index="0" name="bias" type="float">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_propagation">
- <return type="void">
- </return>
- <argument index="0" name="propagation" type="float">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_to_cell_xform">
- <return type="void">
- </return>
- <argument index="0" name="to_cell_xform" type="Transform">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="bias" type="float" setter="set_bias" getter="get_bias">
+ </member>
+ <member name="bounds" type="AABB" setter="set_bounds" getter="get_bounds">
+ </member>
+ <member name="cell_size" type="float" setter="set_cell_size" getter="get_cell_size">
+ </member>
+ <member name="compress" type="bool" setter="set_compress" getter="is_compressed">
+ </member>
+ <member name="dynamic_data" type="PoolIntArray" setter="set_dynamic_data" getter="get_dynamic_data">
+ </member>
+ <member name="dynamic_range" type="int" setter="set_dynamic_range" getter="get_dynamic_range">
+ </member>
+ <member name="energy" type="float" setter="set_energy" getter="get_energy">
+ </member>
+ <member name="interior" type="bool" setter="set_interior" getter="is_interior">
+ </member>
+ <member name="normal_bias" type="float" setter="set_normal_bias" getter="get_normal_bias">
+ </member>
+ <member name="propagation" type="float" setter="set_propagation" getter="get_propagation">
+ </member>
+ <member name="to_cell_xform" type="Transform" setter="set_to_cell_xform" getter="get_to_cell_xform">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Generic6DOFJoint.xml b/doc/classes/Generic6DOFJoint.xml
index e44ae867d4..4be44b3819 100644
--- a/doc/classes/Generic6DOFJoint.xml
+++ b/doc/classes/Generic6DOFJoint.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Generic6DOFJoint" inherits="Joint" category="Core" version="3.0-beta">
+<class name="Generic6DOFJoint" inherits="Joint" category="Core" version="3.0-stable">
<brief_description>
The generic 6 degrees of freedom joint can implement a variety of joint-types by locking certain axes' rotation or translation.
</brief_description>
@@ -24,10 +24,10 @@
When rotating across x-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_x/force_limit" type="float" setter="set_param_x" getter="get_param_x">
- The maximum amount of force that can occur, when rotating arround x-axis.
+ The maximum amount of force that can occur, when rotating around x-axis.
</member>
<member name="angular_limit_x/lower_angle" type="float" setter="_set_angular_lo_limit_x" getter="_get_angular_lo_limit_x">
- The minimum rotation in negative direction to break loose and rotate arround the x-axis.
+ The minimum rotation in negative direction to break loose and rotate around the x-axis.
</member>
<member name="angular_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x">
The amount of rotational restitution across the x-axis. The lower, the more restitution occurs.
@@ -36,7 +36,7 @@
The speed of all rotations across the x-axis.
</member>
<member name="angular_limit_x/upper_angle" type="float" setter="_set_angular_hi_limit_x" getter="_get_angular_hi_limit_x">
- The minimum rotation in positive direction to break loose and rotate arround the x-axis.
+ The minimum rotation in positive direction to break loose and rotate around the x-axis.
</member>
<member name="angular_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y">
The amount of rotational damping across the y-axis. The lower, the more dampening occurs.
@@ -48,10 +48,10 @@
When rotating across y-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_y/force_limit" type="float" setter="set_param_y" getter="get_param_y">
- The maximum amount of force that can occur, when rotating arround y-axis.
+ The maximum amount of force that can occur, when rotating around y-axis.
</member>
<member name="angular_limit_y/lower_angle" type="float" setter="_set_angular_lo_limit_y" getter="_get_angular_lo_limit_y">
- The minimum rotation in negative direction to break loose and rotate arround the y-axis.
+ The minimum rotation in negative direction to break loose and rotate around the y-axis.
</member>
<member name="angular_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y">
The amount of rotational restitution across the y-axis. The lower, the more restitution occurs.
@@ -60,7 +60,7 @@
The speed of all rotations across the y-axis.
</member>
<member name="angular_limit_y/upper_angle" type="float" setter="_set_angular_hi_limit_y" getter="_get_angular_hi_limit_y">
- The minimum rotation in positive direction to break loose and rotate arround the y-axis.
+ The minimum rotation in positive direction to break loose and rotate around the y-axis.
</member>
<member name="angular_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z">
The amount of rotational damping across the z-axis. The lower, the more dampening occurs.
@@ -72,10 +72,10 @@
When rotating across z-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_z/force_limit" type="float" setter="set_param_z" getter="get_param_z">
- The maximum amount of force that can occur, when rotating arround z-axis.
+ The maximum amount of force that can occur, when rotating around z-axis.
</member>
<member name="angular_limit_z/lower_angle" type="float" setter="_set_angular_lo_limit_z" getter="_get_angular_lo_limit_z">
- The minimum rotation in negative direction to break loose and rotate arround the z-axis.
+ The minimum rotation in negative direction to break loose and rotate around the z-axis.
</member>
<member name="angular_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z">
The amount of rotational restitution across the z-axis. The lower, the more restitution occurs.
@@ -84,7 +84,7 @@
The speed of all rotations across the z-axis.
</member>
<member name="angular_limit_z/upper_angle" type="float" setter="_set_angular_hi_limit_z" getter="_get_angular_hi_limit_z">
- The minimum rotation in positive direction to break loose and rotate arround the z-axis.
+ The minimum rotation in positive direction to break loose and rotate around the z-axis.
</member>
<member name="angular_motor_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x">
If [code]true[/code] a rotating motor at the x-axis is enabled.
@@ -185,10 +185,10 @@
The amount of damping that happens at the linear motion across the axes.
</constant>
<constant name="PARAM_ANGULAR_LOWER_LIMIT" value="5" enum="Param">
- The minimum rotation in negative direction to break loose and rotate arround the axes.
+ The minimum rotation in negative direction to break loose and rotate around the axes.
</constant>
<constant name="PARAM_ANGULAR_UPPER_LIMIT" value="6" enum="Param">
- The minimum rotation in positive direction to break loose and rotate arround the axes.
+ The minimum rotation in positive direction to break loose and rotate around the axes.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="7" enum="Param">
The speed of all rotations across the axes.
@@ -200,7 +200,7 @@
The amount of rotational restitution across the axes. The lower, the more restitution occurs.
</constant>
<constant name="PARAM_ANGULAR_FORCE_LIMIT" value="10" enum="Param">
- The maximum amount of force that can occur, when rotating arround the axes.
+ The maximum amount of force that can occur, when rotating around the axes.
</constant>
<constant name="PARAM_ANGULAR_ERP" value="11" enum="Param">
When rotating across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
diff --git a/doc/classes/Geometry.xml b/doc/classes/Geometry.xml
index 3f25d04f16..b3f63daf9c 100644
--- a/doc/classes/Geometry.xml
+++ b/doc/classes/Geometry.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Geometry" inherits="Object" category="Core" version="3.0-beta">
+<class name="Geometry" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/GeometryInstance.xml b/doc/classes/GeometryInstance.xml
index 981873b1fe..8dd3c23ee2 100644
--- a/doc/classes/GeometryInstance.xml
+++ b/doc/classes/GeometryInstance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GeometryInstance" inherits="VisualInstance" category="Core" version="3.0-beta">
+<class name="GeometryInstance" inherits="VisualInstance" category="Core" version="3.0-stable">
<brief_description>
Base node for geometry based visual instances.
</brief_description>
diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml
index b1a723ee47..8b4bf4d448 100644
--- a/doc/classes/Gradient.xml
+++ b/doc/classes/Gradient.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Gradient" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Gradient" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Color interpolator node.
</brief_description>
diff --git a/doc/classes/GradientTexture.xml b/doc/classes/GradientTexture.xml
index e28dd2ce42..127a6d8204 100644
--- a/doc/classes/GradientTexture.xml
+++ b/doc/classes/GradientTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GradientTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="GradientTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
Gradient filled texture.
</brief_description>
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 3bc7fed1d9..2090155e85 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GraphEdit" inherits="Control" category="Core" version="3.0-beta">
+<class name="GraphEdit" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
GraphEdit is an area capable of showing various GraphNodes. It manages connection events between them.
</brief_description>
@@ -12,6 +12,42 @@
<demos>
</demos>
<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>
+ <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>
+ <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>
+ <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>
+ <description>
+ Remove all connections between nodes.
+ </description>
+ </method>
<method name="connect_node">
<return type="int" enum="Error">
</return>
@@ -49,26 +85,6 @@
Return an Array containing the list of connections. A connection consists in a structure of the form {from_slot: 0, from: "GraphNode name 0", to_slot: 1, to: "GraphNode name 1" }
</description>
</method>
- <method name="get_scroll_ofs" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Return the scroll offset.
- </description>
- </method>
- <method name="get_snap" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_zoom" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the current zoom value.
- </description>
- </method>
<method name="is_node_connected">
<return type="bool">
</return>
@@ -84,70 +100,73 @@
Return true if the 'from_port' slot of 'from' GraphNode is connected to the 'to_port' slot of 'to' GraphNode.
</description>
</method>
- <method name="is_right_disconnects_enabled" qualifiers="const">
+ <method name="is_valid_connection_type" qualifiers="const">
<return type="bool">
</return>
- <description>
- Return true is the disconnection of connections is enable in the visual GraphEdit. False otherwise.
- </description>
- </method>
- <method name="is_using_snap" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="set_right_disconnects">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
+ <argument index="0" name="from_type" type="int">
</argument>
- <description>
- Enable the disconnection of existing connections in the visual GraphEdit by left-clicking a connection and releasing into the void.
- </description>
- </method>
- <method name="set_scroll_ofs">
- <return type="void">
- </return>
- <argument index="0" name="ofs" type="Vector2">
+ <argument index="1" name="to_type" type="int">
</argument>
<description>
+ Returns whether it's possible to connect slots of the specified types.
</description>
</method>
- <method name="set_selected">
+ <method name="remove_valid_connection_type">
<return type="void">
</return>
- <argument index="0" name="node" type="Node">
+ <argument index="0" name="from_type" type="int">
+ </argument>
+ <argument index="1" name="to_type" type="int">
</argument>
<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="set_snap">
+ <method name="remove_valid_left_disconnect_type">
<return type="void">
</return>
- <argument index="0" name="pixels" type="int">
+ <argument index="0" name="type" type="int">
</argument>
<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="set_use_snap">
+ <method name="remove_valid_right_disconnect_type">
<return type="void">
</return>
- <argument index="0" name="enable" type="bool">
+ <argument index="0" name="type" type="int">
</argument>
<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_zoom">
+ <method name="set_selected">
<return type="void">
</return>
- <argument index="0" name="p_zoom" type="float">
+ <argument index="0" name="node" type="Node">
</argument>
<description>
- Set the zoom value of the GraphEdit. Zoom value is between [0.01; 1.728].
+ Sets the specified [code]node[/code] as the one selected.
</description>
</method>
</methods>
+ <members>
+ <member name="right_disconnects" type="bool" setter="set_right_disconnects" getter="is_right_disconnects_enabled">
+ If [code]true[/code], enables disconnection of existing connections in the GraphEdit by dragging the right end.
+ </member>
+ <member name="scroll_offset" type="Vector2" setter="set_scroll_ofs" getter="get_scroll_ofs">
+ The scroll offset.
+ </member>
+ <member name="snap_distance" type="int" setter="set_snap" getter="get_snap">
+ The snapping distance in pixels.
+ </member>
+ <member name="use_snap" type="bool" setter="set_use_snap" getter="is_using_snap">
+ If [code]true[/code], enables snapping.
+ </member>
+ <member name="zoom" type="float" setter="set_zoom" getter="get_zoom">
+ The current zoom value.
+ </member>
+ </members>
<signals>
<signal name="_begin_node_move">
<description>
diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml
index c1b18e4cd8..ce8cb053ce 100644
--- a/doc/classes/GraphNode.xml
+++ b/doc/classes/GraphNode.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GraphNode" inherits="Container" category="Core" version="3.0-beta">
+<class name="GraphNode" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
A GraphNode is a container with several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types.
</brief_description>
@@ -95,19 +95,6 @@
Return the type of the output connection 'idx'.
</description>
</method>
- <method name="get_offset" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Return the offset of the GraphNode.
- </description>
- </method>
- <method name="get_overlay" qualifiers="const">
- <return type="int" enum="GraphNode.Overlay">
- </return>
- <description>
- </description>
- </method>
<method name="get_slot_color_left" qualifiers="const">
<return type="Color">
</return>
@@ -144,18 +131,6 @@
Return the (integer) type of right (output) 'idx' slot.
</description>
</method>
- <method name="is_comment" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="is_selected">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="is_slot_enabled_left" qualifiers="const">
<return type="bool">
</return>
@@ -174,39 +149,6 @@
Return true if right (output) slot 'idx' is enabled. False otherwise.
</description>
</method>
- <method name="set_comment">
- <return type="void">
- </return>
- <argument index="0" name="comment" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_offset">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector2">
- </argument>
- <description>
- Set the offset of the GraphNode.
- </description>
- </method>
- <method name="set_overlay">
- <return type="void">
- </return>
- <argument index="0" name="overlay" type="int" enum="GraphNode.Overlay">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_selected">
- <return type="void">
- </return>
- <argument index="0" name="selected" type="bool">
- </argument>
- <description>
- </description>
- </method>
<method name="set_slot">
<return type="void">
</return>
@@ -233,8 +175,17 @@
</method>
</methods>
<members>
+ <member name="comment" type="bool" setter="set_comment" getter="is_comment">
+ </member>
+ <member name="offset" type="Vector2" setter="set_offset" getter="get_offset">
+ The offset of the GraphNode, relative to the scroll offset of the [GraphEdit]. Note that you cannot use position directly, as [GraphEdit] is a [Container].
+ </member>
+ <member name="overlay" type="int" setter="set_overlay" getter="get_overlay" enum="GraphNode.Overlay">
+ </member>
<member name="resizable" type="bool" setter="set_resizable" getter="is_resizable">
</member>
+ <member name="selected" type="bool" setter="set_selected" getter="is_selected">
+ </member>
<member name="show_close" type="bool" setter="set_show_close_button" getter="is_close_button_visible">
</member>
<member name="title" type="String" setter="set_title" getter="get_title">
diff --git a/doc/classes/GridContainer.xml b/doc/classes/GridContainer.xml
index 9deec7e410..8463acc1d4 100644
--- a/doc/classes/GridContainer.xml
+++ b/doc/classes/GridContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GridContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="GridContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Grid container used to arrange elements in a grid like layout
</brief_description>
diff --git a/doc/classes/GrooveJoint2D.xml b/doc/classes/GrooveJoint2D.xml
index 6ccad9a155..c1aa10026c 100644
--- a/doc/classes/GrooveJoint2D.xml
+++ b/doc/classes/GrooveJoint2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GrooveJoint2D" inherits="Joint2D" category="Core" version="3.0-beta">
+<class name="GrooveJoint2D" inherits="Joint2D" category="Core" version="3.0-stable">
<brief_description>
Groove constraint for 2D physics.
</brief_description>
diff --git a/doc/classes/HBoxContainer.xml b/doc/classes/HBoxContainer.xml
index c94aa709cb..3597b4d2d0 100644
--- a/doc/classes/HBoxContainer.xml
+++ b/doc/classes/HBoxContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HBoxContainer" inherits="BoxContainer" category="Core" version="3.0-beta">
+<class name="HBoxContainer" inherits="BoxContainer" category="Core" version="3.0-stable">
<brief_description>
Horizontal box container.
</brief_description>
diff --git a/doc/classes/HScrollBar.xml b/doc/classes/HScrollBar.xml
index 0add27d996..ed0a5ae3ad 100644
--- a/doc/classes/HScrollBar.xml
+++ b/doc/classes/HScrollBar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HScrollBar" inherits="ScrollBar" category="Core" version="3.0-beta">
+<class name="HScrollBar" inherits="ScrollBar" category="Core" version="3.0-stable">
<brief_description>
Horizontal scroll bar.
</brief_description>
diff --git a/doc/classes/HSeparator.xml b/doc/classes/HSeparator.xml
index ee5422592f..ac02f76146 100644
--- a/doc/classes/HSeparator.xml
+++ b/doc/classes/HSeparator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HSeparator" inherits="Separator" category="Core" version="3.0-beta">
+<class name="HSeparator" inherits="Separator" category="Core" version="3.0-stable">
<brief_description>
Horizontal separator.
</brief_description>
diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml
index a04ce73fcb..791bc5159b 100644
--- a/doc/classes/HSlider.xml
+++ b/doc/classes/HSlider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HSlider" inherits="Slider" category="Core" version="3.0-beta">
+<class name="HSlider" inherits="Slider" category="Core" version="3.0-stable">
<brief_description>
Horizontal slider.
</brief_description>
diff --git a/doc/classes/HSplitContainer.xml b/doc/classes/HSplitContainer.xml
index 4c1528f098..68a794eb9f 100644
--- a/doc/classes/HSplitContainer.xml
+++ b/doc/classes/HSplitContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HSplitContainer" inherits="SplitContainer" category="Core" version="3.0-beta">
+<class name="HSplitContainer" inherits="SplitContainer" category="Core" version="3.0-stable">
<brief_description>
Horizontal split container.
</brief_description>
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index 80f6966e12..3fa780e892 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HTTPClient" inherits="Reference" category="Core" version="3.0-beta">
+<class name="HTTPClient" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Hyper-text transfer protocol client.
</brief_description>
@@ -10,6 +10,8 @@
For more information on HTTP, see https://developer.mozilla.org/en-US/docs/Web/HTTP (or read RFC 2616 to get it straight from the source: https://tools.ietf.org/html/rfc2616).
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/networking/http_client_class.html
+ http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html
</tutorials>
<demos>
</demos>
@@ -39,13 +41,6 @@
[code]verify_host[/code] will check the SSL identity of the host if set to [code]true[/code].
</description>
</method>
- <method name="get_connection" qualifiers="const">
- <return type="StreamPeer">
- </return>
- <description>
- Returns the current connection.
- </description>
- </method>
<method name="get_response_body_length" qualifiers="const">
<return type="int">
</return>
@@ -90,13 +85,6 @@
If [code]true[/code] this [code]HTTPClient[/code] has a response available.
</description>
</method>
- <method name="is_blocking_mode_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- If [code]true[/code] blocking mode is enabled.
- </description>
- </method>
<method name="is_response_chunked" qualifiers="const">
<return type="bool">
</return>
@@ -172,24 +160,6 @@
Sends the body data raw, as a byte array and does not encode it in any way.
</description>
</method>
- <method name="set_blocking_mode">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- If set to true, execution will block until all data is read from the response.
- </description>
- </method>
- <method name="set_connection">
- <return type="void">
- </return>
- <argument index="0" name="connection" type="StreamPeer">
- </argument>
- <description>
- Sets connection to use for this client.
- </description>
- </method>
<method name="set_read_chunk_size">
<return type="void">
</return>
@@ -200,6 +170,14 @@
</description>
</method>
</methods>
+ <members>
+ <member name="blocking_mode_enabled" type="bool" setter="set_blocking_mode" getter="is_blocking_mode_enabled">
+ If [code]true[/code], execution will block until all data is read from the response.
+ </member>
+ <member name="connection" type="StreamPeer" setter="set_connection" getter="get_connection">
+ The connection to use for this client.
+ </member>
+ </members>
<constants>
<constant name="METHOD_GET" value="0" enum="Method">
HTTP GET method. The GET method requests a representation of the specified resource. Requests using GET should only retrieve data.
diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml
index 985198c76f..8b8cc6b744 100644
--- a/doc/classes/HTTPRequest.xml
+++ b/doc/classes/HTTPRequest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HTTPRequest" inherits="Node" category="Core" version="3.0-beta">
+<class name="HTTPRequest" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
A node with the ability to send HTTP requests.
</brief_description>
@@ -8,6 +8,7 @@
Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html
</tutorials>
<demos>
</demos>
@@ -26,13 +27,6 @@
Returns the response body length.
</description>
</method>
- <method name="get_download_file" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the file this request will download into.
- </description>
- </method>
<method name="get_downloaded_bytes" qualifiers="const">
<return type="int">
</return>
@@ -63,20 +57,14 @@
<description>
</description>
</method>
- <method name="set_download_file">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <description>
- Sets the file to download into. Outputs the response body into the file if set.
- </description>
- </method>
</methods>
<members>
<member name="body_size_limit" type="int" setter="set_body_size_limit" getter="get_body_size_limit">
Maximum allowed size for response bodies.
</member>
+ <member name="download_file" type="String" setter="set_download_file" getter="get_download_file">
+ The file to download into. Will output any received file into it.
+ </member>
<member name="max_redirects" type="int" setter="set_max_redirects" getter="get_max_redirects">
Maximum number of allowed redirects.
</member>
diff --git a/doc/classes/HingeJoint.xml b/doc/classes/HingeJoint.xml
index 4a23f63d5a..367867dd00 100644
--- a/doc/classes/HingeJoint.xml
+++ b/doc/classes/HingeJoint.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="HingeJoint" inherits="Joint" category="Core" version="3.0-beta">
+<class name="HingeJoint" inherits="Joint" category="Core" version="3.0-stable">
<brief_description>
A hinge between two 3D bodies.
</brief_description>
<description>
- Normaly uses the z-axis of body A as the hinge axis, another axis can be specified when adding it manually though.
+ Normally uses the z-axis of body A as the hinge axis, another axis can be specified when adding it manually though.
</description>
<tutorials>
</tutorials>
@@ -40,12 +40,12 @@
Target speed for the motor.
</member>
<member name="params/bias" type="float" setter="set_param" getter="get_param">
- The speed with wich the two bodies get pulled together when they move in different directions.
+ The speed with which the two bodies get pulled together when they move in different directions.
</member>
</members>
<constants>
<constant name="PARAM_BIAS" value="0" enum="Param">
- The speed with wich the two bodies get pulled together when they move in different directions.
+ The speed with which the two bodies get pulled together when they move in different directions.
</constant>
<constant name="PARAM_LIMIT_UPPER" value="1" enum="Param">
The maximum rotation. only active if [member angular_limit/enable] is [code]true[/code].
diff --git a/doc/classes/IP.xml b/doc/classes/IP.xml
index cd669e3de1..d01d88590e 100644
--- a/doc/classes/IP.xml
+++ b/doc/classes/IP.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="IP" inherits="Object" category="Core" version="3.0-beta">
+<class name="IP" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Internet protocol (IP) support functions like DNS resolution.
</brief_description>
diff --git a/doc/classes/IP_Unix.xml b/doc/classes/IP_Unix.xml
index 1d376c7233..ba33793d72 100644
--- a/doc/classes/IP_Unix.xml
+++ b/doc/classes/IP_Unix.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="IP_Unix" inherits="IP" category="Core" version="3.0-beta">
+<class name="IP_Unix" inherits="IP" category="Core" version="3.0-stable">
<brief_description>
Unix IP support. See [IP].
</brief_description>
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index 54eaf6cc7a..20e41847ce 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Image" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Image" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Image datatype.
</brief_description>
@@ -314,6 +314,22 @@
Loads an image from file [code]path[/code].
</description>
</method>
+ <method name="load_jpg_from_buffer">
+ <return type="int" enum="Error">
+ </return>
+ <argument index="0" name="buffer" type="PoolByteArray">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="load_png_from_buffer">
+ <return type="int" enum="Error">
+ </return>
+ <argument index="0" name="buffer" type="PoolByteArray">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="lock">
<return type="void">
</return>
@@ -379,6 +395,7 @@
Sets the [Color] of the pixel at [code](x, y)[/code] if the image is locked. Example:
[codeblock]
var img = Image.new()
+ img.create(img_width, img_height, false, Image.FORMAT_RGBA8)
img.lock()
img.set_pixel(x, y, color) # Works
img.unlock()
diff --git a/doc/classes/ImageTexture.xml b/doc/classes/ImageTexture.xml
index a20af677cb..96261c8e12 100644
--- a/doc/classes/ImageTexture.xml
+++ b/doc/classes/ImageTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ImageTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="ImageTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
A [Texture] based on an [Image].
</brief_description>
@@ -46,20 +46,6 @@
Return the format of the [code]ImageTexture[/code], one of [Image].FORMAT_*.
</description>
</method>
- <method name="get_lossy_storage_quality" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the storage quality for [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY.
- </description>
- </method>
- <method name="get_storage" qualifiers="const">
- <return type="int" enum="ImageTexture.Storage">
- </return>
- <description>
- Return the storage type. One of [code]ImageTexture[/code].STORAGE_*.
- </description>
- </method>
<method name="load">
<return type="void">
</return>
@@ -78,15 +64,6 @@
Set the [Image] of this [code]ImageTexture[/code].
</description>
</method>
- <method name="set_lossy_storage_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="float">
- </argument>
- <description>
- Set the storage quality in case of [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY.
- </description>
- </method>
<method name="set_size_override">
<return type="void">
</return>
@@ -96,16 +73,15 @@
Resizes the [code]ImageTexture[/code] to the specified dimensions.
</description>
</method>
- <method name="set_storage">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="ImageTexture.Storage">
- </argument>
- <description>
- Set the storage type. One of [code]ImageTexture[/code].STORAGE_*.
- </description>
- </method>
</methods>
+ <members>
+ <member name="lossy_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality">
+ The storage quality for [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY.
+ </member>
+ <member name="storage" type="int" setter="set_storage" getter="get_storage" enum="ImageTexture.Storage">
+ The storage type (raw, lossy, or compressed).
+ </member>
+ </members>
<constants>
<constant name="STORAGE_RAW" value="0" enum="Storage">
[Image] data is stored raw and unaltered.
diff --git a/doc/classes/ImmediateGeometry.xml b/doc/classes/ImmediateGeometry.xml
index 11b513fb84..0376854bb6 100644
--- a/doc/classes/ImmediateGeometry.xml
+++ b/doc/classes/ImmediateGeometry.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ImmediateGeometry" inherits="GeometryInstance" category="Core" version="3.0-beta">
+<class name="ImmediateGeometry" inherits="GeometryInstance" category="Core" version="3.0-stable">
<brief_description>
Draws simple geometry from code.
</brief_description>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 1200ac5170..946b7b9bac 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Input" inherits="Object" category="Core" version="3.0-beta">
+<class name="Input" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
A Singleton that deals with inputs.
</brief_description>
@@ -17,7 +17,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- This will simulate pressing the specificed action.
+ This will simulate pressing the specified action.
</description>
</method>
<method name="action_release">
@@ -275,9 +275,12 @@
</return>
<argument index="0" name="image" type="Resource">
</argument>
- <argument index="1" name="hotspot" type="Vector2" default="Vector2( 0, 0 )">
+ <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>
<description>
+ Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. See enum [code]CURSOR_*[/code] for the list of shapes.
</description>
</method>
<method name="set_mouse_mode">
@@ -347,5 +350,39 @@
</constant>
<constant name="MOUSE_MODE_CONFINED" value="3" enum="MouseMode">
</constant>
+ <constant name="CURSOR_ARROW" value="0" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_IBEAM" value="1" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_POINTING_HAND" value="2" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_CROSS" value="3" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_WAIT" value="4" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_BUSY" value="5" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_DRAG" value="6" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_CAN_DROP" value="7" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_FORBIDDEN" value="8" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_VSIZE" value="9" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_HSIZE" value="10" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_BDIAGSIZE" value="11" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_FDIAGSIZE" value="12" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_MOVE" value="13" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_VSPLIT" value="14" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_HSPLIT" value="15" enum="CursorShape">
+ </constant>
+ <constant name="CURSOR_HELP" value="16" enum="CursorShape">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/InputDefault.xml b/doc/classes/InputDefault.xml
index 28cba56334..b804c29cd0 100644
--- a/doc/classes/InputDefault.xml
+++ b/doc/classes/InputDefault.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputDefault" inherits="Input" category="Core" version="3.0-beta">
+<class name="InputDefault" inherits="Input" category="Core" version="3.0-stable">
<brief_description>
Default implementation of the [Input] class.
</brief_description>
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index cc31da0627..07372d382d 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEvent" inherits="Resource" category="Core" version="3.0-beta">
+<class name="InputEvent" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Generic input event
</brief_description>
@@ -7,7 +7,8 @@
Base class of all sort of input event. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html
</tutorials>
<demos>
</demos>
@@ -28,13 +29,6 @@
Returns a [String] representation of the event.
</description>
</method>
- <method name="get_id" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the event's ID.
- </description>
- </method>
<method name="is_action" qualifiers="const">
<return type="bool">
</return>
@@ -83,14 +77,6 @@
Returns [code]true[/code] if this input event is pressed. Not relevant for the event types [code]MOUSE_MOTION[/code], [code]SCREEN_DRAG[/code] or [code]NONE[/code].
</description>
</method>
- <method name="set_id">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <description>
- </description>
- </method>
<method name="shortcut_match" qualifiers="const">
<return type="bool">
</return>
diff --git a/doc/classes/InputEventAction.xml b/doc/classes/InputEventAction.xml
index 9d05c44498..5ef1711e75 100644
--- a/doc/classes/InputEventAction.xml
+++ b/doc/classes/InputEventAction.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventAction" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventAction" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Input event type for actions.
</brief_description>
@@ -7,7 +7,7 @@
Contains a generic action which can be targeted from several type of inputs. Actions can be created from the project settings menu [code]Project &gt; Project Settings &gt; Input Map[/code]. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#actions
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html#actions
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventGesture.xml b/doc/classes/InputEventGesture.xml
index bf8f9667e3..4d82363b21 100644
--- a/doc/classes/InputEventGesture.xml
+++ b/doc/classes/InputEventGesture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventGesture" inherits="InputEventWithModifiers" category="Core" version="3.0-beta">
+<class name="InputEventGesture" inherits="InputEventWithModifiers" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/InputEventJoypadButton.xml b/doc/classes/InputEventJoypadButton.xml
index 66c7320369..47ba2f08ca 100644
--- a/doc/classes/InputEventJoypadButton.xml
+++ b/doc/classes/InputEventJoypadButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventJoypadButton" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventJoypadButton" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Input event for gamepad buttons.
</brief_description>
@@ -7,7 +7,7 @@
Input event type for gamepad buttons. For joysticks see [InputEventJoypadMotion].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventJoypadMotion.xml b/doc/classes/InputEventJoypadMotion.xml
index f52225d302..7d40fcd4b3 100644
--- a/doc/classes/InputEventJoypadMotion.xml
+++ b/doc/classes/InputEventJoypadMotion.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventJoypadMotion" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventJoypadMotion" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Input event type for gamepad joysticks and other motions. For buttons see [code]InputEventJoypadMotion[/code].
</brief_description>
@@ -7,7 +7,7 @@
Stores information about joystick motions. One [code]InputEventJoypadMotion[/code] represents one axis at a time.
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml
index c8cbab59d4..a930491beb 100644
--- a/doc/classes/InputEventKey.xml
+++ b/doc/classes/InputEventKey.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventKey" inherits="InputEventWithModifiers" category="Core" version="3.0-beta">
+<class name="InputEventKey" inherits="InputEventWithModifiers" category="Core" version="3.0-stable">
<brief_description>
Input event type for keyboard events.
</brief_description>
@@ -7,7 +7,7 @@
Stores key presses on the keyboard. Supports key presses, key releases and [member echo] events.
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventMagnifyGesture.xml b/doc/classes/InputEventMagnifyGesture.xml
index 796f9e6a2f..880da473a6 100644
--- a/doc/classes/InputEventMagnifyGesture.xml
+++ b/doc/classes/InputEventMagnifyGesture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventMagnifyGesture" inherits="InputEventGesture" category="Core" version="3.0-beta">
+<class name="InputEventMagnifyGesture" inherits="InputEventGesture" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/InputEventMouse.xml b/doc/classes/InputEventMouse.xml
index 748cc4b9f9..ca29c23634 100644
--- a/doc/classes/InputEventMouse.xml
+++ b/doc/classes/InputEventMouse.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventMouse" inherits="InputEventWithModifiers" category="Core" version="3.0-beta">
+<class name="InputEventMouse" inherits="InputEventWithModifiers" category="Core" version="3.0-stable">
<brief_description>
Base input event type for mouse events.
</brief_description>
<description>
- Stores general mouse events informations.
+ Stores general mouse events information.
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -21,7 +21,7 @@
Mouse position relative to the current [Viewport] when used in [method Control._gui_input], otherwise is at 0,0.
</member>
<member name="position" type="Vector2" setter="set_position" getter="get_position">
- Mouse local position relative to the [Viewport]. If used in [method Control._gui_input] the position is relative to the current [Control] wich is under the mouse.
+ Mouse local position relative to the [Viewport]. If used in [method Control._gui_input] the position is relative to the current [Control] which is under the mouse.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventMouseButton.xml b/doc/classes/InputEventMouseButton.xml
index cd1037b022..a8dc087eca 100644
--- a/doc/classes/InputEventMouseButton.xml
+++ b/doc/classes/InputEventMouseButton.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventMouseButton" inherits="InputEventMouse" category="Core" version="3.0-beta">
+<class name="InputEventMouseButton" inherits="InputEventMouse" category="Core" version="3.0-stable">
<brief_description>
Input event type for mouse button events.
</brief_description>
<description>
- Contains mouse click informations. See [method Node._input].
+ Contains mouse click information. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/mouse_and_input_coordinates.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml
index 192c8dbe16..2bd175348b 100644
--- a/doc/classes/InputEventMouseMotion.xml
+++ b/doc/classes/InputEventMouseMotion.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventMouseMotion" inherits="InputEventMouse" category="Core" version="3.0-beta">
+<class name="InputEventMouseMotion" inherits="InputEventMouse" category="Core" version="3.0-stable">
<brief_description>
Input event type for mouse motion events.
</brief_description>
<description>
- Contains mouse motion informations. Supports relative, absolute positions and speed. See [method Node._input].
+ Contains mouse motion information. Supports relative, absolute positions and speed. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/mouse_and_input_coordinates.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventPanGesture.xml b/doc/classes/InputEventPanGesture.xml
index a17f5823ba..1a16c0f385 100644
--- a/doc/classes/InputEventPanGesture.xml
+++ b/doc/classes/InputEventPanGesture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventPanGesture" inherits="InputEventGesture" category="Core" version="3.0-beta">
+<class name="InputEventPanGesture" inherits="InputEventGesture" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/InputEventScreenDrag.xml b/doc/classes/InputEventScreenDrag.xml
index 43553f97bd..a9780e280a 100644
--- a/doc/classes/InputEventScreenDrag.xml
+++ b/doc/classes/InputEventScreenDrag.xml
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventScreenDrag" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventScreenDrag" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Input event type for screen drag events.
(only available on mobile devices)
</brief_description>
<description>
- Contains screen drag informations. See [method Node._input].
+ Contains screen drag information. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventScreenTouch.xml b/doc/classes/InputEventScreenTouch.xml
index 6f5ebc9481..783c36099b 100644
--- a/doc/classes/InputEventScreenTouch.xml
+++ b/doc/classes/InputEventScreenTouch.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventScreenTouch" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventScreenTouch" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Input event type for screen touch events.
(only available on mobile devices)
@@ -8,7 +8,7 @@
Stores multi-touch press/release information. Supports touch press, touch release and [member index] for multi-touch count and order.
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml
index 70d2b57e8d..a1b1b6523f 100644
--- a/doc/classes/InputEventWithModifiers.xml
+++ b/doc/classes/InputEventWithModifiers.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputEventWithModifiers" inherits="InputEvent" category="Core" version="3.0-beta">
+<class name="InputEventWithModifiers" inherits="InputEvent" category="Core" version="3.0-stable">
<brief_description>
Base class for keys events with modifiers.
</brief_description>
<description>
- Contains keys events informations with modifiers support like [code]SHIFT[/code] or [code]ALT[/code]. See [method Node._input].
+ Contains keys events information with modifiers support like [code]SHIFT[/code] or [code]ALT[/code]. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputMap.xml b/doc/classes/InputMap.xml
index ff5491bde2..4cedd94094 100644
--- a/doc/classes/InputMap.xml
+++ b/doc/classes/InputMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InputMap" inherits="Object" category="Core" version="3.0-beta">
+<class name="InputMap" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Singleton that manages [InputEventAction].
</brief_description>
@@ -7,7 +7,7 @@
Manages all [InputEventAction] which can be created/modified from the project settings menu [code]Project &gt; Project Settings &gt; Input Map[/code] or in code with [method add_action] and [method action_add_event]. See [method Node._input].
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#inputmap
+ http://docs.godotengine.org/en/3.0/tutorials/inputs/inputevent.html#inputmap
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InstancePlaceholder.xml b/doc/classes/InstancePlaceholder.xml
index 570ce239ff..f698551d41 100644
--- a/doc/classes/InstancePlaceholder.xml
+++ b/doc/classes/InstancePlaceholder.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InstancePlaceholder" inherits="Node" category="Core" version="3.0-beta">
+<class name="InstancePlaceholder" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Placeholder for the root [Node] of a [PackedScene].
</brief_description>
diff --git a/doc/classes/InterpolatedCamera.xml b/doc/classes/InterpolatedCamera.xml
index b268825efe..de84a7df6e 100644
--- a/doc/classes/InterpolatedCamera.xml
+++ b/doc/classes/InterpolatedCamera.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="InterpolatedCamera" inherits="Camera" category="Core" version="3.0-beta">
+<class name="InterpolatedCamera" inherits="Camera" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml
index f3d0c271ac..bc95472ea8 100644
--- a/doc/classes/ItemList.xml
+++ b/doc/classes/ItemList.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ItemList" inherits="Control" category="Core" version="3.0-beta">
+<class name="ItemList" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Control that provides a list of selectable items (and/or icons) in a single column, or optionally in multiple columns.
</brief_description>
@@ -53,12 +53,6 @@
Ensure selection is visible, adjusting the scroll position as necessary.
</description>
</method>
- <method name="get_fixed_icon_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
<method name="get_item_at_position" qualifiers="const">
<return type="int">
</return>
@@ -198,14 +192,6 @@
Note: This method does not trigger the item selection signal.
</description>
</method>
- <method name="set_fixed_icon_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2">
- </argument>
- <description>
- </description>
- </method>
<method name="set_item_custom_bg_color">
<return type="void">
</return>
@@ -328,6 +314,8 @@
</member>
<member name="fixed_column_width" type="int" setter="set_fixed_column_width" getter="get_fixed_column_width">
</member>
+ <member name="fixed_icon_size" type="Vector2" setter="set_fixed_icon_size" getter="get_fixed_icon_size">
+ </member>
<member name="icon_mode" type="int" setter="set_icon_mode" getter="get_icon_mode" enum="ItemList.IconMode">
</member>
<member name="icon_scale" type="float" setter="set_icon_scale" getter="get_icon_scale">
diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml
index 28f04c3eb0..e69c05c3df 100644
--- a/doc/classes/JSON.xml
+++ b/doc/classes/JSON.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="JSON" inherits="Object" category="Core" version="3.0-beta">
+<class name="JSON" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Helper class for parsing JSON data.
</brief_description>
diff --git a/doc/classes/JSONParseResult.xml b/doc/classes/JSONParseResult.xml
index 835920818a..424720a871 100644
--- a/doc/classes/JSONParseResult.xml
+++ b/doc/classes/JSONParseResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="JSONParseResult" inherits="Reference" category="Core" version="3.0-beta">
+<class name="JSONParseResult" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Data class wrapper for decoded JSON.
</brief_description>
diff --git a/doc/classes/JavaScript.xml b/doc/classes/JavaScript.xml
index 027e4764ac..8183b48ece 100644
--- a/doc/classes/JavaScript.xml
+++ b/doc/classes/JavaScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="JavaScript" inherits="Object" category="Core" version="3.0-beta">
+<class name="JavaScript" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Singleton that connects the engine with the browser's JavaScript context in HTML5 export.
</brief_description>
@@ -7,7 +7,7 @@
The JavaScript singleton is implemented only in HTML5 export. It's used to access the browser's JavaScript context. This allows interaction with embedding pages or calling third-party JavaScript APIs.
</description>
<tutorials>
- http://docs.godotengine.org/en/stable/learning/workflow/export/exporting_for_web.html#calling-javascript-from-script
+ http://docs.godotengine.org/en/3.0/getting_started/workflow/export/exporting_for_web.html#calling-javascript-from-script
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Joint.xml b/doc/classes/Joint.xml
index 443aec21a8..8ead75d556 100644
--- a/doc/classes/Joint.xml
+++ b/doc/classes/Joint.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Joint" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Joint" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Base class for all 3D joints
</brief_description>
@@ -23,7 +23,7 @@
The [Node], the second side of the Joint attaches to.
</member>
<member name="solver/priority" type="int" setter="set_solver_priority" getter="get_solver_priority">
- The order in wich the solver is executed compared to the other [Joints], the lower, the earlier.
+ The order in which the solver is executed compared to the other [Joints], the lower, the earlier.
</member>
</members>
<constants>
diff --git a/doc/classes/Joint2D.xml b/doc/classes/Joint2D.xml
index dec965cd09..22f267f26f 100644
--- a/doc/classes/Joint2D.xml
+++ b/doc/classes/Joint2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Joint2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Joint2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Base node for all joint constraints in 2D physics.
</brief_description>
diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml
index d1dc236d40..2c22ae4f93 100644
--- a/doc/classes/KinematicBody.xml
+++ b/doc/classes/KinematicBody.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="KinematicBody" inherits="PhysicsBody" category="Core" version="3.0-beta">
+<class name="KinematicBody" inherits="PhysicsBody" category="Core" version="3.0-stable">
<brief_description>
Kinematic body 3D node.
</brief_description>
@@ -9,6 +9,7 @@
Kinematic Characters: KinematicBody also has an API for moving objects (the [method move_and_collide] and [method move_and_slide] methods) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/kinematic_character_2d.html
</tutorials>
<demos>
</demos>
@@ -26,7 +27,7 @@
<argument index="0" name="slide_idx" type="int">
</argument>
<description>
- Returns a [KinematicCollision], which contains information about a collision that occured during the last [method move_and_slide] call. 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).
+ Returns a [KinematicCollision], which contains information about a collision that occurred during the last [method move_and_slide] call. 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">
@@ -82,11 +83,11 @@
<description>
Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody[/code] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes.
[code]linear_velocity[/code] is a value in pixels per second. Unlike in for example [method move_and_collide], you should [i]not[/i] multiply it with [code]delta[/code] — this is done by the method.
- [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games.
+ [code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector3(0, 0, 0)[/code], everything is considered a wall. This is useful for topdown games.
If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes.
If the body collides, it will change direction a maximum of [code]max_bounces[/code] times before it stops.
[code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees.
- Returns the movement that remained when the body stopped. To get more detailed information about collisions that occured, use [method get_slide_collision].
+ Returns the movement that remained when the body stopped. To get more detailed information about collisions that occurred, use [method get_slide_collision].
</description>
</method>
<method name="test_move">
diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml
index 8563b059f2..f7303c19c4 100644
--- a/doc/classes/KinematicBody2D.xml
+++ b/doc/classes/KinematicBody2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="KinematicBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta">
+<class name="KinematicBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable">
<brief_description>
Kinematic body 2D node.
</brief_description>
@@ -26,7 +26,7 @@
<argument index="0" name="slide_idx" type="int">
</argument>
<description>
- Returns a [KinematicCollision2D], which contains information about a collision that occured during the last [method move_and_slide] call. 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).
+ Returns a [KinematicCollision2D], which contains information about a collision that occurred during the last [method move_and_slide] call. 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">
@@ -86,7 +86,7 @@
If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes.
If the body collides, it will change direction a maximum of [code]max_bounces[/code] times before it stops.
[code]floor_max_angle[/code] is the maximum angle (in radians) where a slope is still considered a floor (or a ceiling), rather than a wall. The default value equals 45 degrees.
- Returns the movement that remained when the body stopped. To get more detailed information about collisions that occured, use [method get_slide_collision].
+ Returns the movement that remained when the body stopped. To get more detailed information about collisions that occurred, use [method get_slide_collision].
</description>
</method>
<method name="test_move">
diff --git a/doc/classes/KinematicCollision.xml b/doc/classes/KinematicCollision.xml
index 9f25bece2c..613b135578 100644
--- a/doc/classes/KinematicCollision.xml
+++ b/doc/classes/KinematicCollision.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="KinematicCollision" inherits="Reference" category="Core" version="3.0-beta">
+<class name="KinematicCollision" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Collision data for KinematicBody collisions.
</brief_description>
diff --git a/doc/classes/KinematicCollision2D.xml b/doc/classes/KinematicCollision2D.xml
index 01b09f1c01..bb949877ad 100644
--- a/doc/classes/KinematicCollision2D.xml
+++ b/doc/classes/KinematicCollision2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="KinematicCollision2D" inherits="Reference" category="Core" version="3.0-beta">
+<class name="KinematicCollision2D" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Collision data for KinematicBody2D collisions.
</brief_description>
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml
index 089b81164b..bbf83308de 100644
--- a/doc/classes/Label.xml
+++ b/doc/classes/Label.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Label" inherits="Control" category="Core" version="3.0-beta">
+<class name="Label" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
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.
+ Note that contrarily to most other [Control]s, Label's [member Control.mouse_filter] defaults to MOUSE_FILTER_IGNORE (i.e. it doesn't react to mouse input events).
</description>
<tutorials>
</tutorials>
@@ -32,13 +33,6 @@
Returns the total length of the text.
</description>
</method>
- <method name="get_visible_characters" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the restricted number of characters to display. Returns -1 if unrestricted.
- </description>
- </method>
<method name="get_visible_line_count" qualifiers="const">
<return type="int">
</return>
@@ -46,15 +40,6 @@
Returns the number of lines shown. Useful if the [code]Label[/code] 's height cannot currently display all lines.
</description>
</method>
- <method name="set_visible_characters">
- <return type="void">
- </return>
- <argument index="0" name="amount" type="int">
- </argument>
- <description>
- Restricts the number of characters to display. Set to -1 to disable.
- </description>
- </method>
</methods>
<members>
<member name="align" type="int" setter="set_align" getter="get_align" enum="Label.Align">
@@ -84,6 +69,9 @@
<member name="valign" type="int" setter="set_valign" getter="get_valign" enum="Label.VAlign">
Controls the text's vertical align. Supports top, center, bottom, and fill. Set it to one of the [code]VALIGN_*[/code] constants.
</member>
+ <member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters">
+ Restricts the number of characters to display. Set to -1 to disable.
+ </member>
</members>
<constants>
<constant name="ALIGN_LEFT" value="0" enum="Align">
diff --git a/doc/classes/LargeTexture.xml b/doc/classes/LargeTexture.xml
index 9d79034dea..219943f021 100644
--- a/doc/classes/LargeTexture.xml
+++ b/doc/classes/LargeTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="LargeTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="LargeTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
A Texture capable of storing many smaller Textures with offsets.
</brief_description>
diff --git a/doc/classes/Light.xml b/doc/classes/Light.xml
index 4aa39ffff6..30722919d5 100644
--- a/doc/classes/Light.xml
+++ b/doc/classes/Light.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Light" inherits="VisualInstance" category="Core" version="3.0-beta">
+<class name="Light" inherits="VisualInstance" category="Core" version="3.0-stable">
<brief_description>
Provides a base class for different kinds of light nodes.
</brief_description>
@@ -7,6 +7,7 @@
Light is the abstract base class for light nodes, so it shouldn't be used directly (It can't be instanced). Other types of light nodes inherit from it. Light contains the common variables and parameters used for lighting.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Light2D.xml b/doc/classes/Light2D.xml
index fe1f25ad9e..019bf48082 100644
--- a/doc/classes/Light2D.xml
+++ b/doc/classes/Light2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Light2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Light2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Casts light in a 2D environment.
</brief_description>
diff --git a/doc/classes/LightOccluder2D.xml b/doc/classes/LightOccluder2D.xml
index de42b2812c..4ea82918e1 100644
--- a/doc/classes/LightOccluder2D.xml
+++ b/doc/classes/LightOccluder2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="LightOccluder2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="LightOccluder2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Occludes light cast by a Light2D, casting shadows.
</brief_description>
diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml
index 9455882f02..a5eadae715 100644
--- a/doc/classes/Line2D.xml
+++ b/doc/classes/Line2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Line2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Line2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
A 2D line.
</brief_description>
@@ -71,7 +71,7 @@
The gradient is drawn through the whole line from start to finish. The default color will not be used if a gradient is set.
</member>
<member name="joint_mode" type="int" setter="set_joint_mode" getter="get_joint_mode" enum="Line2D.LineJointMode">
- The style for the points inbetween the start and the end.
+ The style for the points between the start and the end.
</member>
<member name="points" type="PoolVector2Array" setter="set_points" getter="get_points">
The points that form the lines. The line is drawn between every point set in this array.
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml
index 4434a7b7e2..d82fafd4ec 100644
--- a/doc/classes/LineEdit.xml
+++ b/doc/classes/LineEdit.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="LineEdit" inherits="Control" category="Core" version="3.0-beta">
+<class name="LineEdit" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Control that provides single line string editing.
</brief_description>
@@ -34,13 +34,6 @@
Clears the current selection.
</description>
</method>
- <method name="get_cursor_position" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the cursor position inside the [code]LineEdit[/code].
- </description>
- </method>
<method name="get_menu" qualifiers="const">
<return type="PopupMenu">
</return>
@@ -81,15 +74,6 @@
Selects the whole [String].
</description>
</method>
- <method name="set_cursor_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
- <description>
- Sets the cursor position inside the [code]LineEdit[/code]. The text may scroll if needed.
- </description>
- </method>
</methods>
<members>
<member name="align" type="int" setter="set_align" getter="get_align" enum="LineEdit.Align">
@@ -101,6 +85,9 @@
<member name="caret_blink_speed" type="float" setter="cursor_set_blink_speed" getter="cursor_get_blink_speed">
Duration (in seconds) of a caret's blinking cycle.
</member>
+ <member name="caret_position" type="int" setter="set_cursor_position" getter="get_cursor_position">
+ The cursor's position inside the [code]LineEdit[/code]. When set, the text may scroll to accommodate it.
+ </member>
<member name="context_menu_enabled" type="bool" setter="set_context_menu_enabled" getter="is_context_menu_enabled">
If [code]true[/code] the context menu will appear when right clicked.
</member>
@@ -131,14 +118,14 @@
</members>
<signals>
<signal name="text_changed">
- <argument index="0" name="text" type="String">
+ <argument index="0" name="new_text" type="String">
</argument>
<description>
Emitted when the text changes.
</description>
</signal>
<signal name="text_entered">
- <argument index="0" name="text" type="String">
+ <argument index="0" name="new_text" type="String">
</argument>
<description>
Emitted when the user presses KEY_ENTER on the [code]LineEdit[/code].
diff --git a/doc/classes/LineShape2D.xml b/doc/classes/LineShape2D.xml
index e55676fd59..a6a1e7eb36 100644
--- a/doc/classes/LineShape2D.xml
+++ b/doc/classes/LineShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="LineShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="LineShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Line shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/LinkButton.xml b/doc/classes/LinkButton.xml
index 82b3a90180..37bfb005ab 100644
--- a/doc/classes/LinkButton.xml
+++ b/doc/classes/LinkButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="LinkButton" inherits="BaseButton" category="Core" version="3.0-beta">
+<class name="LinkButton" inherits="BaseButton" category="Core" version="3.0-stable">
<brief_description>
Simple button used to represent a link to some resource
</brief_description>
diff --git a/doc/classes/Listener.xml b/doc/classes/Listener.xml
index 3b21e3fdac..5765e071a4 100644
--- a/doc/classes/Listener.xml
+++ b/doc/classes/Listener.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Listener" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Listener" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml
index c5a4e53907..5a49641531 100644
--- a/doc/classes/MainLoop.xml
+++ b/doc/classes/MainLoop.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MainLoop" inherits="Object" category="Core" version="3.0-beta">
+<class name="MainLoop" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Main loop is the abstract main loop base class.
</brief_description>
diff --git a/doc/classes/MarginContainer.xml b/doc/classes/MarginContainer.xml
index c56f9a5c58..25ac7c5668 100644
--- a/doc/classes/MarginContainer.xml
+++ b/doc/classes/MarginContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MarginContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="MarginContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Simple margin container.
</brief_description>
diff --git a/doc/classes/Marshalls.xml b/doc/classes/Marshalls.xml
index d83c81a960..554c32c893 100644
--- a/doc/classes/Marshalls.xml
+++ b/doc/classes/Marshalls.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Marshalls" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Marshalls" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Data transformation (marshalling) and encoding helpers.
</brief_description>
diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml
index 2b2f45e8be..5c31efc5e0 100644
--- a/doc/classes/Material.xml
+++ b/doc/classes/Material.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Material" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Material" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Abstract base [Resource] for coloring and shading geometry.
</brief_description>
diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml
index 22231cfdf3..5b15bba22a 100644
--- a/doc/classes/MenuButton.xml
+++ b/doc/classes/MenuButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MenuButton" inherits="Button" category="Core" version="3.0-beta">
+<class name="MenuButton" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Special button that brings up a [PopupMenu] when clicked.
</brief_description>
@@ -18,6 +18,14 @@
Return 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>
+ <description>
+ </description>
+ </method>
</methods>
<signals>
<signal name="about_to_show">
diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml
index 465b68171e..7fbc7768f7 100644
--- a/doc/classes/Mesh.xml
+++ b/doc/classes/Mesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Mesh" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Mesh" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A [Resource] that contains vertex-array based geometry.
</brief_description>
diff --git a/doc/classes/MeshDataTool.xml b/doc/classes/MeshDataTool.xml
index db20179116..720ab6f5d2 100644
--- a/doc/classes/MeshDataTool.xml
+++ b/doc/classes/MeshDataTool.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MeshDataTool" inherits="Reference" category="Core" version="3.0-beta">
+<class name="MeshDataTool" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/MeshInstance.xml b/doc/classes/MeshInstance.xml
index 9273e87430..3b9ed70e77 100644
--- a/doc/classes/MeshInstance.xml
+++ b/doc/classes/MeshInstance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MeshInstance" inherits="GeometryInstance" category="Core" version="3.0-beta">
+<class name="MeshInstance" inherits="GeometryInstance" category="Core" version="3.0-stable">
<brief_description>
Node that instances meshes into a scenario.
</brief_description>
diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml
index 3275969e78..774deab0ef 100644
--- a/doc/classes/MeshLibrary.xml
+++ b/doc/classes/MeshLibrary.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MeshLibrary" inherits="Resource" category="Core" version="3.0-beta">
+<class name="MeshLibrary" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Library of meshes.
</brief_description>
diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml
index ff2d89b2ca..270da019eb 100644
--- a/doc/classes/MultiMesh.xml
+++ b/doc/classes/MultiMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MultiMesh" inherits="Resource" category="Core" version="3.0-beta">
+<class name="MultiMesh" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Provides high performance mesh instancing.
</brief_description>
diff --git a/doc/classes/MultiMeshInstance.xml b/doc/classes/MultiMeshInstance.xml
index bad61fa254..aef372f810 100644
--- a/doc/classes/MultiMeshInstance.xml
+++ b/doc/classes/MultiMeshInstance.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MultiMeshInstance" inherits="GeometryInstance" category="Core" version="3.0-beta">
+<class name="MultiMeshInstance" inherits="GeometryInstance" category="Core" version="3.0-stable">
<brief_description>
Node that instances a [MultiMesh].
</brief_description>
<description>
- MultiMeshInstance is a [Node] that takes a [MultiMesh] resource and adds it to the current scenario by creating an instance of it (yes, this is an instance of instances).
+ [code]MultiMeshInstance[/code] is a specialized node to instance [GeometryInstance]s based on a [MultiMesh] resource.
+ This is useful to optimize the rendering of a high amount of instances of a given mesh (for example tree in a forest or grass strands).
</description>
<tutorials>
</tutorials>
@@ -14,6 +15,7 @@
</methods>
<members>
<member name="multimesh" type="MultiMesh" setter="set_multimesh" getter="get_multimesh">
+ The [MultiMesh] resource that will be used and shared among all instances of the [code]MultiMeshInstance[/code].
</member>
</members>
<constants>
diff --git a/doc/classes/Mutex.xml b/doc/classes/Mutex.xml
index 74d59b2dd3..2ed02cad48 100644
--- a/doc/classes/Mutex.xml
+++ b/doc/classes/Mutex.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Mutex" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Mutex" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
A synchronization Mutex.
</brief_description>
diff --git a/doc/classes/Navigation.xml b/doc/classes/Navigation.xml
index 8fe520f853..86302694a0 100644
--- a/doc/classes/Navigation.xml
+++ b/doc/classes/Navigation.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Navigation" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Navigation" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
A collection of [code]NavigationMesh[/code] resources and methods used for pathfinding.
</brief_description>
diff --git a/doc/classes/Navigation2D.xml b/doc/classes/Navigation2D.xml
index 18c15a616a..80d53c00a5 100644
--- a/doc/classes/Navigation2D.xml
+++ b/doc/classes/Navigation2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Navigation2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Navigation2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 55a3771d79..5cde8942d1 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMesh" inherits="Resource" category="Core" version="3.0-beta">
+<class name="NavigationMesh" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NavigationMeshInstance.xml b/doc/classes/NavigationMeshInstance.xml
index ddca9d747e..f329bad0eb 100644
--- a/doc/classes/NavigationMeshInstance.xml
+++ b/doc/classes/NavigationMeshInstance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationMeshInstance" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="NavigationMeshInstance" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index 663ac4cd67..6e8154c4e5 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPolygon" inherits="Resource" category="Core" version="3.0-beta">
+<class name="NavigationPolygon" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NavigationPolygonInstance.xml b/doc/classes/NavigationPolygonInstance.xml
index ea314667ca..023f13de89 100644
--- a/doc/classes/NavigationPolygonInstance.xml
+++ b/doc/classes/NavigationPolygonInstance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NavigationPolygonInstance" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="NavigationPolygonInstance" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NetworkedMultiplayerPeer.xml b/doc/classes/NetworkedMultiplayerPeer.xml
index a7350b3863..8f746594bc 100644
--- a/doc/classes/NetworkedMultiplayerPeer.xml
+++ b/doc/classes/NetworkedMultiplayerPeer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NetworkedMultiplayerPeer" inherits="PacketPeer" category="Core" version="3.0-beta">
+<class name="NetworkedMultiplayerPeer" inherits="PacketPeer" category="Core" version="3.0-stable">
<brief_description>
A high-level network interface to simplify multiplayer interactions.
</brief_description>
@@ -7,6 +7,7 @@
Manages the connection to network peers. Assigns unique IDs to each client connected to the server.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/networking/high_level_multiplayer.html
</tutorials>
<demos>
</demos>
@@ -32,13 +33,6 @@
Returns the ID of this [code]NetworkedMultiplayerPeer[/code].
</description>
</method>
- <method name="is_refusing_new_connections" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code].
- </description>
- </method>
<method name="poll">
<return type="void">
</return>
@@ -46,15 +40,6 @@
Waits up to 1 second to receive a new network event.
</description>
</method>
- <method name="set_refuse_new_connections">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code].
- </description>
- </method>
<method name="set_target_peer">
<return type="void">
</return>
@@ -64,16 +49,15 @@
The peer to which packets will be sent. Default value: [code]0[/code].
</description>
</method>
- <method name="set_transfer_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="NetworkedMultiplayerPeer.TransferMode">
- </argument>
- <description>
- The manner in which to send packets to the [code]target_peer[/code]. See [enum TransferMode].
- </description>
- </method>
</methods>
+ <members>
+ <member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections">
+ If [code]true[/code] this [code]NetworkedMultiplayerPeer[/code] refuses new connections. Default value: [code]false[/code].
+ </member>
+ <member name="transfer_mode" type="int" setter="set_transfer_mode" getter="get_transfer_mode" enum="NetworkedMultiplayerPeer.TransferMode">
+ The manner in which to send packets to the [code]target_peer[/code]. See [enum TransferMode].
+ </member>
+ </members>
<signals>
<signal name="connection_failed">
<description>
diff --git a/doc/classes/Nil.xml b/doc/classes/Nil.xml
index a30dae8af1..2e845d511a 100644
--- a/doc/classes/Nil.xml
+++ b/doc/classes/Nil.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Nil" category="Built-In Types" version="3.0-beta">
+<class name="Nil" category="Built-In Types" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/NinePatchRect.xml b/doc/classes/NinePatchRect.xml
index b7440137c8..e67f0ea4a4 100644
--- a/doc/classes/NinePatchRect.xml
+++ b/doc/classes/NinePatchRect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NinePatchRect" inherits="Control" category="Core" version="3.0-beta">
+<class name="NinePatchRect" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Scalable texture-based frame that tiles the texture's centers and sides, but keeps the corners' original size. Perfect for panels and dialog boxes.
</brief_description>
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index e56733f102..46c8bf01a5 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Node" inherits="Object" category="Core" version="3.0-beta">
+<class name="Node" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Base class for all [i]scene[/i] objects.
</brief_description>
@@ -16,6 +16,7 @@
[b]Networking with nodes:[/b] After connecting to a server (or making one, see [NetworkedMultiplayerENet]) it is possible to use the built-in RPC (remote procedure call) system to communicate over the network. By calling [method rpc] with a method name, it will be called locally and in all connected peers (peers = clients and the server that accepts connections), with behaviour varying depending on the network mode ([method set_network_mode]) of the receiving peer. To identify which node receives the RPC call Godot will use its [NodePath] (make sure node names are the same on all peers).
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scenes_and_nodes.html
</tutorials>
<demos>
</demos>
@@ -32,8 +33,8 @@
<return type="void">
</return>
<description>
- Called when the node leaves 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 NOTIFICATION_EXIT_TREE notification in [method Object._notification].
+ 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 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="_input" qualifiers="virtual">
@@ -43,7 +44,7 @@
</argument>
<description>
Called when there is an input event. The input event propagates 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 overriden, and can be toggled with [method set_process_input].
+ 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].
</description>
</method>
<method name="_physics_process" qualifiers="virtual">
@@ -53,7 +54,7 @@
</argument>
<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.
- It is only called if physics processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_physics_process].
+ 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].
Corresponds to the NOTIFICATION_PHYSICS_PROCESS notification in [method Object._notification].
</description>
</method>
@@ -64,7 +65,7 @@
</argument>
<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.
- It is only called if processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_process].
+ 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].
Corresponds to the NOTIFICATION_PROCESS notification in [method Object._notification].
</description>
</method>
@@ -83,7 +84,7 @@
</argument>
<description>
Propagated to all nodes when the previous InputEvent is not consumed by any nodes.
- It is only called if unhandled input processing is enabled, which is done automatically if this method is overriden, and can be toggled with [method set_process_unhandled_input].
+ 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].
</description>
</method>
<method name="_unhandled_key_input" qualifiers="virtual">
@@ -184,13 +185,6 @@
Returns an array of references to node's children.
</description>
</method>
- <method name="get_filename" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns a filename that may be contained by the node. When a scene is instanced from a file, its topmost node contains the filename from which it was loaded (see [method set_filename]).
- </description>
- </method>
<method name="get_groups" qualifiers="const">
<return type="Array">
</return>
@@ -205,13 +199,6 @@
Returns the node's index, i.e. its position among the siblings of its parent.
</description>
</method>
- <method name="get_name" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the name of the node. This name is unique among the siblings (other child nodes from the same parent).
- </description>
- </method>
<method name="get_network_master" qualifiers="const">
<return type="int">
</return>
@@ -255,13 +242,6 @@
<description>
</description>
</method>
- <method name="get_owner" qualifiers="const">
- <return type="Node">
- </return>
- <description>
- Returns the node owner (see [method set_owner]).
- </description>
- </method>
<method name="get_parent" qualifiers="const">
<return type="Node">
</return>
@@ -659,24 +639,6 @@
Sets the folded state of the node in the Scene dock.
</description>
</method>
- <method name="set_filename">
- <return type="void">
- </return>
- <argument index="0" name="filename" type="String">
- </argument>
- <description>
- A node can contain a filename. This filename should not be changed by the user, unless writing editors and tools. When a scene is instanced from a file, its topmost node contains the filename from which it was loaded.
- </description>
- </method>
- <method name="set_name">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <description>
- Sets the name of the node. The name must be unique within the parent. Using an existing name will cause the node to be automatically renamed.
- </description>
- </method>
<method name="set_network_master">
<return type="void">
</return>
@@ -688,22 +650,13 @@
Sets the node network master to the peer with the given peer ID. The network master is the peer that has authority over it on the network. Inherited from the parent node by default, which ultimately defaults to peer ID 1 (the server).
</description>
</method>
- <method name="set_owner">
- <return type="void">
- </return>
- <argument index="0" name="owner" type="Node">
- </argument>
- <description>
- Sets the node owner. A node can have any other node as owner (as long as it is a valid parent, grandparent, etc ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows for the creation of complex [SceneTree]s, with instancing and subinstancing.
- </description>
- </method>
<method name="set_physics_process">
<return type="void">
</return>
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a NOTIFICATION_PHYSICS_PROCESS at a fixed (usually 60 fps, see [OS] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overriden. Any calls to this before [method _ready] will be ignored.
+ Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a NOTIFICATION_PHYSICS_PROCESS at a fixed (usually 60 fps, see [OS] 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">
@@ -720,7 +673,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Enables or disables processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS on every drawn frame (and the [method _process] callback will be called if exists). Enabled automatically if [method _process] is overriden. Any calls to this before [method _ready] will be ignored.
+ Enables or disables processing. When a node is being processed, it will receive a 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">
@@ -729,7 +682,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Enables or disables input processing. This is not required for GUI controls! Enabled automatically if [method _input] is overriden. Any calls to this before [method _ready] will be ignored.
+ 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">
@@ -746,7 +699,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<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 overriden. Any calls to this before [method _ready] will be ignored.
+ 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">
@@ -755,7 +708,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Enables unhandled key input processing. Enabled automatically if [method _unhandled_key_input] is overriden. Any calls to this before [method _ready] will be ignored.
+ 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">
@@ -768,6 +721,16 @@
</method>
</methods>
<members>
+ <member name="filename" type="String" setter="set_filename" getter="get_filename">
+ When a scene is instanced from a file, its topmost node contains the filename from which it was loaded.
+ </member>
+ <member name="name" type="String" setter="set_name" getter="get_name">
+ The name of the node. This name is unique among the siblings (other child nodes from the same parent).
+ When set to an existing name, the node will be automatically renamed
+ </member>
+ <member name="owner" type="Node" setter="set_owner" getter="get_owner">
+ The node owner. A node can have any other node as owner (as long as it is a valid parent, grandparent, etc. ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows for the creation of complex [SceneTree]s, with instancing and subinstancing.
+ </member>
<member name="pause_mode" type="int" setter="set_pause_mode" getter="get_pause_mode" enum="Node.PauseMode">
</member>
</members>
@@ -784,7 +747,12 @@
</signal>
<signal name="tree_exited">
<description>
- Emitted when the node exits the tree.
+ Emitted after the node exits the tree and is no longer active.
+ </description>
+ </signal>
+ <signal name="tree_exiting">
+ <description>
+ Emitted when the node is still active but about to exit the tree. This is the right place for de-initialization.
</description>
</signal>
</signals>
@@ -793,7 +761,7 @@
Notification received when the node enters a [SceneTree].
</constant>
<constant name="NOTIFICATION_EXIT_TREE" value="11">
- Notification received when the node exits a [SceneTree].
+ Notification received when the node is about to exit a [SceneTree].
</constant>
<constant name="NOTIFICATION_MOVED_IN_PARENT" value="12">
Notification received when the node is moved in the parent.
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index 81978809d7..f51c5abe18 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Node2D" inherits="CanvasItem" category="Core" version="3.0-beta">
+<class name="Node2D" inherits="CanvasItem" category="Core" version="3.0-stable">
<brief_description>
A 2D game object, parent of all 2D related nodes. Has a position, rotation, scale and Z-index.
</brief_description>
@@ -7,6 +7,7 @@
A 2D game object, with a position, rotation and scale. All 2D physics nodes and sprites inherit from Node2D. Use Node2D as a parent node to move, scale and rotate children in a 2D project. Also gives control on the node's render order.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/2d/custom_drawing_in_2d.html
</tutorials>
<demos>
</demos>
@@ -38,12 +39,6 @@
Returns the [Transform2D] relative to this node's parent.
</description>
</method>
- <method name="get_rotation" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
<method name="global_translate">
<return type="void">
</return>
@@ -93,14 +88,6 @@
Applies a rotation to the node, in radians, starting from its current rotation.
</description>
</method>
- <method name="set_rotation">
- <return type="void">
- </return>
- <argument index="0" name="radians" type="float">
- </argument>
- <description>
- </description>
- </method>
<method name="to_global" qualifiers="const">
<return type="Vector2">
</return>
@@ -148,6 +135,9 @@
<member name="position" type="Vector2" setter="set_position" getter="get_position">
Position, relative to the node's parent.
</member>
+ <member name="rotation" type="float" setter="set_rotation" getter="get_rotation">
+ Rotation in radians, relative to the node's parent.
+ </member>
<member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees">
Rotation in degrees, relative to the node's parent.
</member>
@@ -157,12 +147,12 @@
<member name="transform" type="Transform2D" setter="set_transform" getter="get_transform">
Local [Transform2D].
</member>
- <member name="z" type="int" setter="set_z" getter="get_z">
- Z-index. Controls the order in which the nodes render. A node with a higher Z-index will display in front of others.
- </member>
<member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative">
If [code]true[/code] the node's Z-index is relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5.
</member>
+ <member name="z_index" type="int" setter="set_z_index" getter="get_z_index">
+ Z-index. Controls the order in which the nodes render. A node with a higher Z-index will display in front of others.
+ </member>
</members>
<constants>
</constants>
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 8d5de705b5..6027f110da 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NodePath" category="Built-In Types" version="3.0-beta">
+<class name="NodePath" category="Built-In Types" version="3.0-stable">
<brief_description>
Pre-parsed scene tree path.
</brief_description>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 902bf4ebfa..80febff4af 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OS" inherits="Object" category="Core" version="3.0-beta">
+<class name="OS" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Operating System functions.
</brief_description>
@@ -87,7 +87,18 @@
<argument index="3" name="output" type="Array" default="[ ]">
</argument>
<description>
- Execute the binary file in given path, optionally blocking until it returns. A process ID is returned.
+ Execute the file at the given path, optionally blocking until it returns.
+ Platform path resolution will take place. The resolved file must exist and be executable.
+ Returns a process id.
+ For example:
+ [codeblock]
+ var output = []
+ var pid = OS.execute('ls', [], true, output)
+ [/codeblock]
+ If you wish to access a shell built-in or perform a composite command, a platform specific shell can be invoked. For example:
+ [codeblock]
+ var pid = OS.execute('CMD.exe', ['/C', 'cd %TEMP% &amp;&amp; dir'], true, output)
+ [/codeblock]
</description>
</method>
<method name="find_scancode_from_string" qualifiers="const">
@@ -99,20 +110,6 @@
Returns the scancode of the given string (e.g. "Escape")
</description>
</method>
- <method name="get_borderless_window" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns true if the current window is borderless.
- </description>
- </method>
- <method name="get_clipboard" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Get clipboard from the host OS.
- </description>
- </method>
<method name="get_cmdline_args">
<return type="PoolStringArray">
</return>
@@ -120,13 +117,6 @@
Returns the command line arguments passed to the engine.
</description>
</method>
- <method name="get_current_screen" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the current screen index (0 padded).
- </description>
- </method>
<method name="get_date" qualifiers="const">
<return type="Dictionary">
</return>
@@ -178,12 +168,6 @@
Returns the path to the current engine executable.
</description>
</method>
- <method name="get_exit_code" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
<method name="get_latin_keyboard_variant" qualifiers="const">
<return type="String">
</return>
@@ -281,13 +265,6 @@
xxxhdpi - 640 dpi
</description>
</method>
- <method name="get_screen_orientation" qualifiers="const">
- <return type="int" enum="OS.ScreenOrientation">
- </return>
- <description>
- Returns the current screen orientation, the return value will be one of the SCREEN_ORIENTATION constants in this class.
- </description>
- </method>
<method name="get_screen_position" qualifiers="const">
<return type="Vector2">
</return>
@@ -403,20 +380,6 @@
<description>
</description>
</method>
- <method name="get_window_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Returns the window position relative to the screen, the origin is the top left corner, +Y axis goes to the bottom and +X axis goes to the right.
- </description>
- </method>
- <method name="get_window_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Returns the size of the window (without counting window manager decorations).
- </description>
- </method>
<method name="has_environment" qualifiers="const">
<return type="bool">
</return>
@@ -464,20 +427,6 @@
Returns [code]false[/code] if the build is a release build.
</description>
</method>
- <method name="is_in_low_processor_usage_mode" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if low cpu usage mode is enabled.
- </description>
- </method>
- <method name="is_keep_screen_on" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the screen is being kept on.
- </description>
- </method>
<method name="is_ok_left_and_cancel_right" qualifiers="const">
<return type="bool">
</return>
@@ -508,41 +457,6 @@
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="is_vsync_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if synchronizing the framerate to the monitor's refresh rate is enabled.
- </description>
- </method>
- <method name="is_window_fullscreen" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the window is in fullscreen mode.
- </description>
- </method>
- <method name="is_window_maximized" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the window is maximized.
- </description>
- </method>
- <method name="is_window_minimized" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the window is minimized.
- </description>
- </method>
- <method name="is_window_resizable" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the window is resizable.
- </description>
- </method>
<method name="kill">
<return type="int" enum="Error">
</return>
@@ -636,42 +550,6 @@
Request the user attention to the window. It'll flash the taskbar button on Windows or bounce the dock icon on OSX.
</description>
</method>
- <method name="set_borderless_window">
- <return type="void">
- </return>
- <argument index="0" name="borderless" type="bool">
- </argument>
- <description>
- Removes the window frame.
- </description>
- </method>
- <method name="set_clipboard">
- <return type="void">
- </return>
- <argument index="0" name="clipboard" type="String">
- </argument>
- <description>
- Sets clipboard to the OS.
- </description>
- </method>
- <method name="set_current_screen">
- <return type="void">
- </return>
- <argument index="0" name="screen" type="int">
- </argument>
- <description>
- Sets the current screen by index.
- </description>
- </method>
- <method name="set_exit_code">
- <return type="void">
- </return>
- <argument index="0" name="code" type="int">
- </argument>
- <description>
- Sets the exit code that will be returned by the game.
- </description>
- </method>
<method name="set_icon">
<return type="void">
</return>
@@ -689,33 +567,6 @@
<description>
</description>
</method>
- <method name="set_keep_screen_on">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Sets keep screen on if true, or goes to sleep by device setting if false. (for Android/iOS)
- </description>
- </method>
- <method name="set_low_processor_usage_mode">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Set to [code]true[/code] to enable the low cpu usage mode. In this mode, the screen only redraws when there are changes, and a considerable sleep time is inserted between frames. Use this in tool mode to reduce CPU usage.
- </description>
- </method>
- <method name="set_screen_orientation">
- <return type="void">
- </return>
- <argument index="0" name="orientation" type="int" enum="OS.ScreenOrientation">
- </argument>
- <description>
- Sets the current screen orientation, the argument value must be one of the SCREEN_ORIENTATION constants in this class.
- </description>
- </method>
<method name="set_thread_name">
<return type="int" enum="Error">
</return>
@@ -734,69 +585,6 @@
Enables backup saves if [code]enabled[/code] is [code]true[/code].
</description>
</method>
- <method name="set_use_vsync">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] the framerate will synchronize to the monitor's refresh rate.
- </description>
- </method>
- <method name="set_window_fullscreen">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Sets window fullscreen mode to the [i]enabled[/i] argument, [i]enabled[/i] is a toggle for the fullscreen mode, calling the function with [i]enabled[/i] true when the screen is not on fullscreen mode will cause the screen to go to fullscreen mode, calling the function with [i]enabled[/i] false when the screen is in fullscreen mode will cause the window to exit the fullscreen mode.
- </description>
- </method>
- <method name="set_window_maximized">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Set [code]true[/code] to maximize the window.
- </description>
- </method>
- <method name="set_window_minimized">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Set [code]true[/code] to minimize the window.
- </description>
- </method>
- <method name="set_window_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <description>
- Sets the position of the window to the specified position (this function could be restricted by the window manager, meaning that there could be some unreachable areas of the screen).
- </description>
- </method>
- <method name="set_window_resizable">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Sets the window resizable state, if the window is not resizable it will preserve the dimensions specified in the project settings.
- </description>
- </method>
- <method name="set_window_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2">
- </argument>
- <description>
- Sets the window size to the specified size.
- </description>
- </method>
<method name="set_window_title">
<return type="void">
</return>
@@ -827,6 +615,46 @@
</description>
</method>
</methods>
+ <members>
+ <member name="clipboard" type="String" setter="set_clipboard" getter="get_clipboard">
+ The clipboard from the host OS. Might be unavailable on some platforms.
+ </member>
+ <member name="current_screen" type="int" setter="set_current_screen" getter="get_current_screen">
+ The current screen index (starting from 0).
+ </member>
+ <member name="exit_code" type="int" setter="set_exit_code" getter="get_exit_code">
+ </member>
+ <member name="keep_screen_on" type="bool" setter="set_keep_screen_on" getter="is_keep_screen_on">
+ </member>
+ <member name="low_processor_usage_mode" type="bool" setter="set_low_processor_usage_mode" getter="is_in_low_processor_usage_mode">
+ </member>
+ <member name="screen_orientation" type="int" setter="set_screen_orientation" getter="get_screen_orientation" enum="_OS.ScreenOrientation">
+ The current screen orientation.
+ </member>
+ <member name="vsync_enabled" type="bool" setter="set_use_vsync" getter="is_vsync_enabled">
+ </member>
+ <member name="window_borderless" type="bool" setter="set_borderless_window" getter="get_borderless_window">
+ If [code]true[/code], removes the window frame.
+ </member>
+ <member name="window_fullscreen" type="bool" setter="set_window_fullscreen" getter="is_window_fullscreen">
+ If [code]true[/code], the window is fullscreen.
+ </member>
+ <member name="window_maximized" type="bool" setter="set_window_maximized" getter="is_window_maximized">
+ If [code]true[/code], the window is maximized.
+ </member>
+ <member name="window_minimized" type="bool" setter="set_window_minimized" getter="is_window_minimized">
+ If [code]true[/code], the window is minimized.
+ </member>
+ <member name="window_position" type="Vector2" setter="set_window_position" getter="get_window_position">
+ The window position relative to the screen, the origin is the top left corner, +Y axis goes to the bottom and +X axis goes to the right.
+ </member>
+ <member name="window_resizable" type="bool" setter="set_window_resizable" getter="is_window_resizable">
+ If [code]true[/code], the window is resizable by the user.
+ </member>
+ <member name="window_size" type="Vector2" setter="set_window_size" getter="get_window_size">
+ The size of the window (without counting window manager decorations).
+ </member>
+ </members>
<constants>
<constant name="DAY_SUNDAY" value="0" enum="Weekday">
</constant>
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index 5d0e51c481..8a7006ea97 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Object" category="Core" version="3.0-beta">
+<class name="Object" category="Core" version="3.0-stable">
<brief_description>
Base class for all non built-in types.
</brief_description>
diff --git a/doc/classes/OccluderPolygon2D.xml b/doc/classes/OccluderPolygon2D.xml
index f11f82c7de..f16aca487e 100644
--- a/doc/classes/OccluderPolygon2D.xml
+++ b/doc/classes/OccluderPolygon2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OccluderPolygon2D" inherits="Resource" category="Core" version="3.0-beta">
+<class name="OccluderPolygon2D" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Defines a 2D polygon for LightOccluder2D.
</brief_description>
diff --git a/doc/classes/OmniLight.xml b/doc/classes/OmniLight.xml
index f0c5c81a47..d4d00e2a9b 100644
--- a/doc/classes/OmniLight.xml
+++ b/doc/classes/OmniLight.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OmniLight" inherits="Light" category="Core" version="3.0-beta">
+<class name="OmniLight" inherits="Light" category="Core" version="3.0-stable">
<brief_description>
OmniDirectional Light, such as a light bulb or a candle.
</brief_description>
@@ -7,6 +7,7 @@
An OmniDirectional light is a type of [Light] node that emits lights in all directions. The light is attenuated through the distance and this attenuation can be configured by changing the energy, radius and attenuation parameters of [Light].
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml
index ff3e513c79..56f4aa2082 100644
--- a/doc/classes/OptionButton.xml
+++ b/doc/classes/OptionButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OptionButton" inherits="Button" category="Core" version="3.0-beta">
+<class name="OptionButton" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Button control that provides selectable options when pressed.
</brief_description>
diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml
index 0e297ba875..a04f9ef6fb 100644
--- a/doc/classes/PCKPacker.xml
+++ b/doc/classes/PCKPacker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PCKPacker" inherits="Reference" category="Core" version="3.0-beta">
+<class name="PCKPacker" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/PHashTranslation.xml b/doc/classes/PHashTranslation.xml
index 04220e5155..94fddad706 100644
--- a/doc/classes/PHashTranslation.xml
+++ b/doc/classes/PHashTranslation.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PHashTranslation" inherits="Translation" category="Core" version="3.0-beta">
+<class name="PHashTranslation" inherits="Translation" category="Core" version="3.0-stable">
<brief_description>
Optimized translation.
</brief_description>
diff --git a/doc/classes/PackedDataContainer.xml b/doc/classes/PackedDataContainer.xml
index d4b7bc36c6..42d00e067b 100644
--- a/doc/classes/PackedDataContainer.xml
+++ b/doc/classes/PackedDataContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PackedDataContainer" inherits="Resource" category="Core" version="3.0-beta">
+<class name="PackedDataContainer" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/PackedDataContainerRef.xml b/doc/classes/PackedDataContainerRef.xml
index 93a5bbb627..1adbbeb5a1 100644
--- a/doc/classes/PackedDataContainerRef.xml
+++ b/doc/classes/PackedDataContainerRef.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PackedDataContainerRef" inherits="Reference" category="Core" version="3.0-beta">
+<class name="PackedDataContainerRef" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml
index 80ef3afdb1..a5877a66d2 100644
--- a/doc/classes/PackedScene.xml
+++ b/doc/classes/PackedScene.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PackedScene" inherits="Resource" category="Core" version="3.0-beta">
+<class name="PackedScene" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
An abstraction of a serialized scene.
</brief_description>
diff --git a/doc/classes/PacketPeer.xml b/doc/classes/PacketPeer.xml
index 57d88d7ff8..354ef1f3f3 100644
--- a/doc/classes/PacketPeer.xml
+++ b/doc/classes/PacketPeer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PacketPeer" inherits="Reference" category="Core" version="3.0-beta">
+<class name="PacketPeer" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Abstraction and base class for packet-based protocols.
</brief_description>
@@ -39,12 +39,6 @@
Get a Variant.
</description>
</method>
- <method name="is_object_decoding_allowed" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="put_packet">
<return type="int" enum="Error">
</return>
@@ -63,15 +57,11 @@
Send a Variant as a packet.
</description>
</method>
- <method name="set_allow_object_decoding">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="allow_object_decoding" type="bool" setter="set_allow_object_decoding" getter="is_object_decoding_allowed">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/PacketPeerStream.xml b/doc/classes/PacketPeerStream.xml
index 5d320a09f8..b475c9d99e 100644
--- a/doc/classes/PacketPeerStream.xml
+++ b/doc/classes/PacketPeerStream.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PacketPeerStream" inherits="PacketPeer" category="Core" version="3.0-beta">
+<class name="PacketPeerStream" inherits="PacketPeer" category="Core" version="3.0-stable">
<brief_description>
Wrapper to use a PacketPeer over a StreamPeer.
</brief_description>
@@ -11,44 +11,16 @@
<demos>
</demos>
<methods>
- <method name="get_input_buffer_max_size" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_output_buffer_max_size" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="set_input_buffer_max_size">
- <return type="void">
- </return>
- <argument index="0" name="max_size_bytes" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_output_buffer_max_size">
- <return type="void">
- </return>
- <argument index="0" name="max_size_bytes" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_stream_peer">
- <return type="void">
- </return>
- <argument index="0" name="peer" type="Reference">
- </argument>
- <description>
- Set the [StreamPeer] object to be wrapped.
- </description>
- </method>
</methods>
+ <members>
+ <member name="input_buffer_max_size" type="int" setter="set_input_buffer_max_size" getter="get_input_buffer_max_size">
+ </member>
+ <member name="output_buffer_max_size" type="int" setter="set_output_buffer_max_size" getter="get_output_buffer_max_size">
+ </member>
+ <member name="stream_peer" type="StreamPeer" setter="set_stream_peer" getter="get_stream_peer">
+ The wrapped [StreamPeer] object.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml
index 838365bc87..d7b38297ba 100644
--- a/doc/classes/PacketPeerUDP.xml
+++ b/doc/classes/PacketPeerUDP.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PacketPeerUDP" inherits="PacketPeer" category="Core" version="3.0-beta">
+<class name="PacketPeerUDP" inherits="PacketPeer" category="Core" version="3.0-stable">
<brief_description>
UDP packet peer.
</brief_description>
diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml
index e0dc2cafce..38c605f8a4 100644
--- a/doc/classes/Panel.xml
+++ b/doc/classes/Panel.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Panel" inherits="Control" category="Core" version="3.0-beta">
+<class name="Panel" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Provides an opaque background for [Control] children.
</brief_description>
diff --git a/doc/classes/PanelContainer.xml b/doc/classes/PanelContainer.xml
index 2a3fb2eeb9..4c0875dea5 100644
--- a/doc/classes/PanelContainer.xml
+++ b/doc/classes/PanelContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PanelContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="PanelContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Panel container type.
</brief_description>
diff --git a/doc/classes/PanoramaSky.xml b/doc/classes/PanoramaSky.xml
index 6a26347120..b99f29e112 100644
--- a/doc/classes/PanoramaSky.xml
+++ b/doc/classes/PanoramaSky.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PanoramaSky" inherits="Sky" category="Core" version="3.0-beta">
+<class name="PanoramaSky" inherits="Sky" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/ParallaxBackground.xml b/doc/classes/ParallaxBackground.xml
index da22f03845..0b9e3c9609 100644
--- a/doc/classes/ParallaxBackground.xml
+++ b/doc/classes/ParallaxBackground.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ParallaxBackground" inherits="CanvasLayer" category="Core" version="3.0-beta">
+<class name="ParallaxBackground" inherits="CanvasLayer" category="Core" version="3.0-stable">
<brief_description>
A node used to create a parallax scrolling background.
</brief_description>
diff --git a/doc/classes/ParallaxLayer.xml b/doc/classes/ParallaxLayer.xml
index c70e6befc4..1feb3054f3 100644
--- a/doc/classes/ParallaxLayer.xml
+++ b/doc/classes/ParallaxLayer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ParallaxLayer" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="ParallaxLayer" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
A parallax scrolling layer to be used with [ParallaxBackground].
</brief_description>
diff --git a/doc/classes/Particles.xml b/doc/classes/Particles.xml
index 2a5dcb26e8..bdf62f2b14 100644
--- a/doc/classes/Particles.xml
+++ b/doc/classes/Particles.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Particles" inherits="GeometryInstance" category="Core" version="3.0-beta">
+<class name="Particles" inherits="GeometryInstance" category="Core" version="3.0-stable">
<brief_description>
3D particle emitter.
</brief_description>
diff --git a/doc/classes/Particles2D.xml b/doc/classes/Particles2D.xml
index 8b908a1fa2..20b9632c30 100644
--- a/doc/classes/Particles2D.xml
+++ b/doc/classes/Particles2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Particles2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Particles2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
2D particle emitter.
</brief_description>
diff --git a/doc/classes/ParticlesMaterial.xml b/doc/classes/ParticlesMaterial.xml
index 42bc1b2d05..28ca512ec4 100644
--- a/doc/classes/ParticlesMaterial.xml
+++ b/doc/classes/ParticlesMaterial.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ParticlesMaterial" inherits="Material" category="Core" version="3.0-beta">
+<class name="ParticlesMaterial" inherits="Material" category="Core" version="3.0-stable">
<brief_description>
Particle properties for [Particles] and [Particles2D] nodes.
</brief_description>
diff --git a/doc/classes/Path.xml b/doc/classes/Path.xml
index a5e690e121..0d931e12fd 100644
--- a/doc/classes/Path.xml
+++ b/doc/classes/Path.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Path" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Path" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Container for a [Curve3D].
</brief_description>
diff --git a/doc/classes/Path2D.xml b/doc/classes/Path2D.xml
index 832b86f516..e889027283 100644
--- a/doc/classes/Path2D.xml
+++ b/doc/classes/Path2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Path2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Path2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Contains a [Curve2D] path for [PathFollow2D] nodes to follow.
</brief_description>
diff --git a/doc/classes/PathFollow.xml b/doc/classes/PathFollow.xml
index de7bb8715c..144afa21e7 100644
--- a/doc/classes/PathFollow.xml
+++ b/doc/classes/PathFollow.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PathFollow" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="PathFollow" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Point sampler for a [Path].
</brief_description>
@@ -12,122 +12,32 @@
<demos>
</demos>
<methods>
- <method name="get_cubic_interpolation" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly.
- </description>
- </method>
- <method name="get_h_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the X displacement this node has from its parent [Path].
- </description>
- </method>
- <method name="get_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the distance along the path in 3D units.
- </description>
- </method>
- <method name="get_rotation_mode" qualifiers="const">
- <return type="int" enum="PathFollow.RotationMode">
- </return>
- <description>
- Returns the rotation mode. The constants below list which axes are allowed to rotate for each mode.
- </description>
- </method>
- <method name="get_unit_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last).
- </description>
- </method>
- <method name="get_v_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the Y displacement this node has from its parent [Path].
- </description>
- </method>
- <method name="has_loop" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether this node wraps its offsets around, or truncates them to the path ends.
- </description>
- </method>
- <method name="set_cubic_interpolation">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- The points along the [Curve3D] of the [Path] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.
- There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations.
- This method controls whether the position between two cached points is interpolated linearly, or cubicly.
- </description>
- </method>
- <method name="set_h_offset">
- <return type="void">
- </return>
- <argument index="0" name="h_offset" type="float">
- </argument>
- <description>
- Moves this node in the X axis. As this node's position will be set every time its offset is set, this allows many PathFollow to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset.
- A similar effect may be achieved moving the this node's descendants.
- </description>
- </method>
- <method name="set_loop">
- <return type="void">
- </return>
- <argument index="0" name="loop" type="bool">
- </argument>
- <description>
- If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths.
- </description>
- </method>
- <method name="set_offset">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <description>
- Sets the distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path.
- </description>
- </method>
- <method name="set_rotation_mode">
- <return type="void">
- </return>
- <argument index="0" name="rotation_mode" type="int" enum="PathFollow.RotationMode">
- </argument>
- <description>
- Allows or forbids rotation on one or more axes, per the constants below.
- </description>
- </method>
- <method name="set_unit_offset">
- <return type="void">
- </return>
- <argument index="0" name="unit_offset" type="float">
- </argument>
- <description>
- Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length.
- </description>
- </method>
- <method name="set_v_offset">
- <return type="void">
- </return>
- <argument index="0" name="v_offset" type="float">
- </argument>
- <description>
- Moves this node in the Y axis, for the same reasons of [method set_h_offset].
- </description>
- </method>
</methods>
+ <members>
+ <member name="cubic_interp" type="bool" setter="set_cubic_interpolation" getter="get_cubic_interpolation">
+ If [code]true[/code] the position between two cached points is interpolated cubically, and linearly otherwise.
+ The points along the [Curve3D] of the [Path] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.
+ There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations.
+ </member>
+ <member name="h_offset" type="float" setter="set_h_offset" getter="get_h_offset">
+ The node's offset along the curve.
+ </member>
+ <member name="loop" type="bool" setter="set_loop" getter="has_loop">
+ If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths.
+ </member>
+ <member name="offset" type="float" setter="set_offset" getter="get_offset">
+ The distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path.
+ </member>
+ <member name="rotation_mode" type="int" setter="set_rotation_mode" getter="get_rotation_mode" enum="PathFollow.RotationMode">
+ Allows or forbids rotation on one or more axes, depending on the constants being used.
+ </member>
+ <member name="unit_offset" type="float" setter="set_unit_offset" getter="get_unit_offset">
+ The distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length.
+ </member>
+ <member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset">
+ The node's offset perpendicular to the curve.
+ </member>
+ </members>
<constants>
<constant name="ROTATION_NONE" value="0" enum="RotationMode">
Forbids the PathFollow to rotate.
diff --git a/doc/classes/PathFollow2D.xml b/doc/classes/PathFollow2D.xml
index 56bec3d719..2d844c22bb 100644
--- a/doc/classes/PathFollow2D.xml
+++ b/doc/classes/PathFollow2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PathFollow2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="PathFollow2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Point sampler for a [Path2D].
</brief_description>
@@ -12,122 +12,34 @@
<demos>
</demos>
<methods>
- <method name="get_cubic_interpolation" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly.
- </description>
- </method>
- <method name="get_h_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the horizontal displacement this node has from its parent [Path2D].
- </description>
- </method>
- <method name="get_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the distance along the path in pixels.
- </description>
- </method>
- <method name="get_unit_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last).
- </description>
- </method>
- <method name="get_v_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the vertical displacement this node has from its parent [Path2D].
- </description>
- </method>
- <method name="has_loop" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether this node wraps its offsets around, or truncates them to the path ends.
- </description>
- </method>
- <method name="is_rotating" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether this node rotates to follow the path.
- </description>
- </method>
- <method name="set_cubic_interpolation">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- The points along the [Curve2D] of the [Path2D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.
- There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations.
- This method controls whether the position between two cached points is interpolated linearly, or cubicly.
- </description>
- </method>
- <method name="set_h_offset">
- <return type="void">
- </return>
- <argument index="0" name="h_offset" type="float">
- </argument>
- <description>
- Moves this node horizontally. As this node's position will be set every time its offset is set, this allows many PathFollow2D to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset.
- A similar effect may be achieved moving this node's descendants.
- </description>
- </method>
- <method name="set_loop">
- <return type="void">
- </return>
- <argument index="0" name="loop" type="bool">
- </argument>
- <description>
- If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths.
- </description>
- </method>
- <method name="set_offset">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <description>
- Sets the distance from the first vertex, measured in pixels along the path. This sets this node's position to a point within the path.
- </description>
- </method>
- <method name="set_rotate">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If set, this node rotates to follow the path, making its descendants rotate.
- </description>
- </method>
- <method name="set_unit_offset">
- <return type="void">
- </return>
- <argument index="0" name="unit_offset" type="float">
- </argument>
- <description>
- Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length.
- </description>
- </method>
- <method name="set_v_offset">
- <return type="void">
- </return>
- <argument index="0" name="v_offset" type="float">
- </argument>
- <description>
- Moves the PathFollow2D vertically, for the same reasons of [method set_h_offset].
- </description>
- </method>
</methods>
+ <members>
+ <member name="cubic_interp" type="bool" setter="set_cubic_interpolation" getter="get_cubic_interpolation">
+ If [code]true[/code] the position between two cached points is interpolated cubically, and linearly otherwise.
+ The points along the [Curve2D] of the [Path2D] are precomputed before use, for faster calculations. The point at the requested offset is then calculated interpolating between two adjacent cached points. This may present a problem if the curve makes sharp turns, as the cached points may not follow the curve closely enough.
+ There are two answers to this problem: Either increase the number of cached points and increase memory consumption, or make a cubic interpolation between two points at the cost of (slightly) slower calculations.
+ </member>
+ <member name="h_offset" type="float" setter="set_h_offset" getter="get_h_offset">
+ The node's offset along the curve.
+ </member>
+ <member name="lookahead" type="float" setter="set_lookahead" getter="get_lookahead">
+ </member>
+ <member name="loop" type="bool" setter="set_loop" getter="has_loop">
+ If [code]true[/code], any offset outside the path's length will wrap around, instead of stopping at the ends. Use it for cyclic paths.
+ </member>
+ <member name="offset" type="float" setter="set_offset" getter="get_offset">
+ The distance along the path in pixels.
+ </member>
+ <member name="rotate" type="bool" setter="set_rotate" getter="is_rotating">
+ If [code]true[/code], this node rotates to follow the path, making its descendants rotate.
+ </member>
+ <member name="unit_offset" type="float" setter="set_unit_offset" getter="get_unit_offset">
+ The distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length.
+ </member>
+ <member name="v_offset" type="float" setter="set_v_offset" getter="get_v_offset">
+ The node's offset perpendicular to the curve.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Performance.xml b/doc/classes/Performance.xml
index 5781d6c604..18e45f7c3f 100644
--- a/doc/classes/Performance.xml
+++ b/doc/classes/Performance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Performance" inherits="Object" category="Core" version="3.0-beta">
+<class name="Performance" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Exposes performance related data.
</brief_description>
diff --git a/doc/classes/Physics2DDirectBodyState.xml b/doc/classes/Physics2DDirectBodyState.xml
index a229ca494d..190325396d 100644
--- a/doc/classes/Physics2DDirectBodyState.xml
+++ b/doc/classes/Physics2DDirectBodyState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DDirectBodyState" inherits="Object" category="Core" version="3.0-beta">
+<class name="Physics2DDirectBodyState" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Direct access object to a physics body in the [Physics2DServer].
</brief_description>
@@ -11,13 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_angular_velocity" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the angular velocity of the body.
- </description>
- </method>
<method name="get_contact_collider" qualifiers="const">
<return type="RID">
</return>
@@ -115,27 +108,6 @@
Return the local shape index of the collision.
</description>
</method>
- <method name="get_inverse_inertia" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the inverse of the inertia of the body.
- </description>
- </method>
- <method name="get_inverse_mass" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the inverse of the mass of the body.
- </description>
- </method>
- <method name="get_linear_velocity" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Return the current linear velocity of the body.
- </description>
- </method>
<method name="get_space_state">
<return type="Physics2DDirectSpaceState">
</return>
@@ -143,41 +115,6 @@
Return the current state of space, useful for queries.
</description>
</method>
- <method name="get_step" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the timestep (delta) used for the simulation.
- </description>
- </method>
- <method name="get_total_angular_damp" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the rate at which the body stops rotating, if there are not any other forces moving it.
- </description>
- </method>
- <method name="get_total_gravity" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Return the total gravity vector being currently applied to this body.
- </description>
- </method>
- <method name="get_total_linear_damp" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the rate at which the body stops moving, if there are not any other forces moving it.
- </description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <description>
- Return the transform matrix of the body.
- </description>
- </method>
<method name="integrate_forces">
<return type="void">
</return>
@@ -185,50 +122,39 @@
Call the built-in force integration code.
</description>
</method>
- <method name="is_sleeping" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Return true if this body is currently sleeping (not active).
- </description>
- </method>
- <method name="set_angular_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="float">
- </argument>
- <description>
- Change the angular velocity of the body.
- </description>
- </method>
- <method name="set_linear_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="Vector2">
- </argument>
- <description>
- Change the linear velocity of the body.
- </description>
- </method>
- <method name="set_sleep_state">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Set the sleeping state of the body, only affects character/rigid bodies.
- </description>
- </method>
- <method name="set_transform">
- <return type="void">
- </return>
- <argument index="0" name="transform" type="Transform2D">
- </argument>
- <description>
- Change the transform matrix of the body.
- </description>
- </method>
</methods>
+ <members>
+ <member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity">
+ The angular velocity of the body.
+ </member>
+ <member name="inverse_inertia" type="float" setter="" getter="get_inverse_inertia">
+ The inverse of the inertia of the body.
+ </member>
+ <member name="inverse_mass" type="float" setter="" getter="get_inverse_mass">
+ The inverse of the mass of the body.
+ </member>
+ <member name="linear_velocity" type="Vector2" setter="set_linear_velocity" getter="get_linear_velocity">
+ The linear velocity of the body.
+ </member>
+ <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping">
+ [code]true[/code] if this body is currently sleeping (not active).
+ </member>
+ <member name="step" type="float" setter="" getter="get_step">
+ The timestep (delta) used for the simulation.
+ </member>
+ <member name="total_angular_damp" type="float" setter="" getter="get_total_angular_damp">
+ The rate at which the body stops rotating, if there are not any other forces moving it.
+ </member>
+ <member name="total_gravity" type="Vector2" setter="" getter="get_total_gravity">
+ The total gravity vector being currently applied to this body.
+ </member>
+ <member name="total_linear_damp" type="float" setter="" getter="get_total_linear_damp">
+ The rate at which the body stops moving, if there are not any other forces moving it.
+ </member>
+ <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform">
+ The transformation matrix of the body.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Physics2DDirectBodyStateSW.xml b/doc/classes/Physics2DDirectBodyStateSW.xml
index 0ce51e2cf5..f6bcaef7be 100644
--- a/doc/classes/Physics2DDirectBodyStateSW.xml
+++ b/doc/classes/Physics2DDirectBodyStateSW.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DDirectBodyStateSW" inherits="Physics2DDirectBodyState" category="Core" version="3.0-beta">
+<class name="Physics2DDirectBodyStateSW" inherits="Physics2DDirectBodyState" category="Core" version="3.0-stable">
<brief_description>
Software implementation of [Physics2DDirectBodyState].
</brief_description>
diff --git a/doc/classes/Physics2DDirectSpaceState.xml b/doc/classes/Physics2DDirectSpaceState.xml
index 2e2d8e95f9..5e0908f497 100644
--- a/doc/classes/Physics2DDirectSpaceState.xml
+++ b/doc/classes/Physics2DDirectSpaceState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DDirectSpaceState" inherits="Object" category="Core" version="3.0-beta">
+<class name="Physics2DDirectSpaceState" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Direct access object to a space in the [Physics2DServer].
</brief_description>
@@ -7,6 +7,7 @@
Direct access object to a space in the [Physics2DServer]. It's used mainly to do queries against objects and areas residing in a given space.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml
index 67f5f84a49..c0316aa1bc 100644
--- a/doc/classes/Physics2DServer.xml
+++ b/doc/classes/Physics2DServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="Physics2DServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Physics 2D Server.
</brief_description>
@@ -216,7 +216,7 @@
<argument index="2" name="disable" type="bool">
</argument>
<description>
- Disables a given shape in this area if [code]disable is true[/code]
+ Disables a given shape in an area.
</description>
</method>
<method name="area_set_shape_transform">
@@ -638,7 +638,7 @@
<argument index="2" name="enable" type="bool">
</argument>
<description>
- Enables one way collision on body if [code]enable is true[/code].
+ Enables one way collision on body if [code]enable[/code] is [code]true[/code].
</description>
</method>
<method name="body_set_shape_disabled">
@@ -651,7 +651,7 @@
<argument index="2" name="disable" type="bool">
</argument>
<description>
- Disables shape in body if [code]disable is true[/code].
+ Disables shape in body if [code]disable[/code] is [code]true[/code].
</description>
</method>
<method name="body_set_shape_metadata">
@@ -1135,6 +1135,12 @@
<constant name="JOINT_DAMPED_SPRING" value="2" enum="JointType">
Constant to create damped spring joints.
</constant>
+ <constant name="JOINT_PARAM_BIAS" value="0" enum="JointParam">
+ </constant>
+ <constant name="JOINT_PARAM_MAX_BIAS" value="1" enum="JointParam">
+ </constant>
+ <constant name="JOINT_PARAM_MAX_FORCE" value="2" enum="JointParam">
+ </constant>
<constant name="DAMPED_STRING_REST_LENGTH" value="0" enum="DampedStringParam">
Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart.
</constant>
diff --git a/doc/classes/Physics2DServerSW.xml b/doc/classes/Physics2DServerSW.xml
index 09fed88082..6942c5e3af 100644
--- a/doc/classes/Physics2DServerSW.xml
+++ b/doc/classes/Physics2DServerSW.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DServerSW" inherits="Physics2DServer" category="Core" version="3.0-beta">
+<class name="Physics2DServerSW" inherits="Physics2DServer" category="Core" version="3.0-stable">
<brief_description>
Software implementation of [Physics2DServer].
</brief_description>
diff --git a/doc/classes/Physics2DShapeQueryParameters.xml b/doc/classes/Physics2DShapeQueryParameters.xml
index 93165afe60..7cd35f4167 100644
--- a/doc/classes/Physics2DShapeQueryParameters.xml
+++ b/doc/classes/Physics2DShapeQueryParameters.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DShapeQueryParameters" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Physics2DShapeQueryParameters" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Parameters to be sent to a 2D shape physics query.
</brief_description>
@@ -11,84 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_collision_layer" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Return the physics layer the shape belongs to.
- </description>
- </method>
- <method name="get_exclude" qualifiers="const">
- <return type="Array">
- </return>
- <description>
- Return the list of objects, or object [RID]s, that will be excluded from collisions.
- </description>
- </method>
- <method name="get_margin" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the collision margin for the shape.
- </description>
- </method>
- <method name="get_motion" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Return the current movement speed of the shape.
- </description>
- </method>
- <method name="get_shape_rid" qualifiers="const">
- <return type="RID">
- </return>
- <description>
- Return the [RID] of the shape queried.
- </description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <description>
- Return the transform matrix of the shape queried.
- </description>
- </method>
- <method name="set_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="collision_layer" type="int">
- </argument>
- <description>
- Set the physics layer the shape belongs to.
- </description>
- </method>
- <method name="set_exclude">
- <return type="void">
- </return>
- <argument index="0" name="exclude" type="Array">
- </argument>
- <description>
- Set the list of objects, or object [RID]s, that will be excluded from collisions.
- </description>
- </method>
- <method name="set_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="float">
- </argument>
- <description>
- Set the collision margin for the shape. A collision margin is an amount (in pixels) that the shape will grow when computing collisions, to account for numerical imprecision.
- </description>
- </method>
- <method name="set_motion">
- <return type="void">
- </return>
- <argument index="0" name="motion" type="Vector2">
- </argument>
- <description>
- Set the current movement speed of the shape.
- </description>
- </method>
<method name="set_shape">
<return type="void">
</return>
@@ -98,25 +20,27 @@
Set the [Shape2D] that will be used for collision/intersection queries.
</description>
</method>
- <method name="set_shape_rid">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
- <description>
- Set the [RID] of the shape to be used in queries.
- </description>
- </method>
- <method name="set_transform">
- <return type="void">
- </return>
- <argument index="0" name="transform" type="Transform2D">
- </argument>
- <description>
- Set the transformation matrix of the shape. This is necessary to set its position/rotation/scale.
- </description>
- </method>
</methods>
+ <members>
+ <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
+ The physics layer the query should be made on.
+ </member>
+ <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude">
+ The list of objects or object [RID]s, that will be excluded from collisions.
+ </member>
+ <member name="margin" type="float" setter="set_margin" getter="get_margin">
+ The collision margin for the shape.
+ </member>
+ <member name="motion" type="Vector2" setter="set_motion" getter="get_motion">
+ The motion of the shape being queried for.
+ </member>
+ <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid">
+ The [RID] of the queried shape. See [method set_shape] also.
+ </member>
+ <member name="transform" type="Transform2D" setter="set_transform" getter="get_transform">
+ the transform matrix of the queried shape.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Physics2DShapeQueryResult.xml b/doc/classes/Physics2DShapeQueryResult.xml
index 5345ad161f..b080da43a2 100644
--- a/doc/classes/Physics2DShapeQueryResult.xml
+++ b/doc/classes/Physics2DShapeQueryResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DShapeQueryResult" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Physics2DShapeQueryResult" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/Physics2DTestMotionResult.xml b/doc/classes/Physics2DTestMotionResult.xml
index bc7cb68bc9..8b4260c484 100644
--- a/doc/classes/Physics2DTestMotionResult.xml
+++ b/doc/classes/Physics2DTestMotionResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Physics2DTestMotionResult" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Physics2DTestMotionResult" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,61 +9,27 @@
<demos>
</demos>
<methods>
- <method name="get_collider" qualifiers="const">
- <return type="Object">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collider_id" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collider_rid" qualifiers="const">
- <return type="RID">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collider_shape" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collider_velocity" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collision_normal" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
- <method name="get_collision_point" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
- <method name="get_motion" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
- <method name="get_motion_remainder" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="collider" type="Object" setter="" getter="get_collider">
+ </member>
+ <member name="collider_id" type="int" setter="" getter="get_collider_id">
+ </member>
+ <member name="collider_rid" type="RID" setter="" getter="get_collider_rid">
+ </member>
+ <member name="collider_shape" type="int" setter="" getter="get_collider_shape">
+ </member>
+ <member name="collider_velocity" type="Vector2" setter="" getter="get_collider_velocity">
+ </member>
+ <member name="collision_normal" type="Vector2" setter="" getter="get_collision_normal">
+ </member>
+ <member name="collision_point" type="Vector2" setter="" getter="get_collision_point">
+ </member>
+ <member name="motion" type="Vector2" setter="" getter="get_motion">
+ </member>
+ <member name="motion_remainder" type="Vector2" setter="" getter="get_motion_remainder">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/PhysicsBody.xml b/doc/classes/PhysicsBody.xml
index 79164215c8..27db2c8f07 100644
--- a/doc/classes/PhysicsBody.xml
+++ b/doc/classes/PhysicsBody.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsBody" inherits="CollisionObject" category="Core" version="3.0-beta">
+<class name="PhysicsBody" inherits="CollisionObject" category="Core" version="3.0-stable">
<brief_description>
Base class for all objects affected by physics in 3D space.
</brief_description>
@@ -7,6 +7,7 @@
PhysicsBody is an abstract base class for implementing a physics body. All *Body types inherit from it.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/PhysicsBody2D.xml b/doc/classes/PhysicsBody2D.xml
index aaf782c245..34e86fa63a 100644
--- a/doc/classes/PhysicsBody2D.xml
+++ b/doc/classes/PhysicsBody2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsBody2D" inherits="CollisionObject2D" category="Core" version="3.0-beta">
+<class name="PhysicsBody2D" inherits="CollisionObject2D" category="Core" version="3.0-stable">
<brief_description>
Base class for all objects affected by physics in 2D space.
</brief_description>
@@ -7,6 +7,7 @@
PhysicsBody2D is an abstract base class for implementing a physics body. All *Body2D types inherit from it.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/PhysicsDirectBodyState.xml b/doc/classes/PhysicsDirectBodyState.xml
index 1d588ecfff..1f9c492571 100644
--- a/doc/classes/PhysicsDirectBodyState.xml
+++ b/doc/classes/PhysicsDirectBodyState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsDirectBodyState" inherits="Object" category="Core" version="3.0-beta">
+<class name="PhysicsDirectBodyState" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -37,18 +37,6 @@
<description>
</description>
</method>
- <method name="get_angular_velocity" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- </description>
- </method>
- <method name="get_center_of_mass" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- </description>
- </method>
<method name="get_contact_collider" qualifiers="const">
<return type="RID">
</return>
@@ -127,111 +115,55 @@
<description>
</description>
</method>
- <method name="get_inverse_inertia" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- </description>
- </method>
- <method name="get_inverse_mass" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_linear_velocity" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- </description>
- </method>
- <method name="get_principal_inertia_axes" qualifiers="const">
- <return type="Basis">
- </return>
- <description>
- </description>
- </method>
<method name="get_space_state">
<return type="PhysicsDirectSpaceState">
</return>
<description>
</description>
</method>
- <method name="get_step" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_total_angular_damp" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_total_gravity" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- </description>
- </method>
- <method name="get_total_linear_damp" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform">
- </return>
- <description>
- </description>
- </method>
<method name="integrate_forces">
<return type="void">
</return>
<description>
</description>
</method>
- <method name="is_sleeping" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="set_angular_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="Vector3">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_linear_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="Vector3">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_sleep_state">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_transform">
- <return type="void">
- </return>
- <argument index="0" name="transform" type="Transform">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="angular_velocity" type="Vector3" setter="set_angular_velocity" getter="get_angular_velocity">
+ The angular velocity of the body.
+ </member>
+ <member name="center_of_mass" type="Vector3" setter="" getter="get_center_of_mass">
+ </member>
+ <member name="inverse_inertia" type="Vector3" setter="" getter="get_inverse_inertia">
+ The inverse of the inertia of the body.
+ </member>
+ <member name="inverse_mass" type="float" setter="" getter="get_inverse_mass">
+ The inverse of the mass of the body.
+ </member>
+ <member name="linear_velocity" type="Vector3" setter="set_linear_velocity" getter="get_linear_velocity">
+ The linear velocity of the body.
+ </member>
+ <member name="principal_inertia_axes" type="Basis" setter="" getter="get_principal_inertia_axes">
+ </member>
+ <member name="sleeping" type="bool" setter="set_sleep_state" getter="is_sleeping">
+ [code]true[/code] if this body is currently sleeping (not active).
+ </member>
+ <member name="step" type="float" setter="" getter="get_step">
+ The timestep (delta) used for the simulation.
+ </member>
+ <member name="total_angular_damp" type="float" setter="" getter="get_total_angular_damp">
+ The rate at which the body stops rotating, if there are not any other forces moving it.
+ </member>
+ <member name="total_gravity" type="Vector3" setter="" getter="get_total_gravity">
+ The total gravity vector being currently applied to this body.
+ </member>
+ <member name="total_linear_damp" type="float" setter="" getter="get_total_linear_damp">
+ The rate at which the body stops moving, if there are not any other forces moving it.
+ </member>
+ <member name="transform" type="Transform" setter="set_transform" getter="get_transform">
+ The transformation matrix of the body.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/PhysicsDirectSpaceState.xml b/doc/classes/PhysicsDirectSpaceState.xml
index d93550eb47..6c8d084f26 100644
--- a/doc/classes/PhysicsDirectSpaceState.xml
+++ b/doc/classes/PhysicsDirectSpaceState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsDirectSpaceState" inherits="Object" category="Core" version="3.0-beta">
+<class name="PhysicsDirectSpaceState" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Direct access object to a space in the [PhysicsServer].
</brief_description>
@@ -7,6 +7,7 @@
Direct access object to a space in the [PhysicsServer]. It's used mainly to do queries against objects and areas residing in a given space.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/PhysicsServer.xml b/doc/classes/PhysicsServer.xml
index 534449a94b..9920d5364b 100644
--- a/doc/classes/PhysicsServer.xml
+++ b/doc/classes/PhysicsServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="PhysicsServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Server interface for low level physics access.
</brief_description>
@@ -1199,7 +1199,7 @@
If above 0, this value is the maximum value for an impulse that this Joint puts on it's ends.
</constant>
<constant name="HINGE_JOINT_BIAS" value="0" enum="HingeJointParam">
- The speed with wich the two bodies get pulled together when they move in different directions.
+ The speed with which the two bodies get pulled together when they move in different directions.
</constant>
<constant name="HINGE_JOINT_LIMIT_UPPER" value="1" enum="HingeJointParam">
The maximum rotation across the Hinge.
@@ -1234,7 +1234,7 @@
The minimum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS" value="2" enum="SliderJointParam">
- A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION" value="3" enum="SliderJointParam">
The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost.
@@ -1243,7 +1243,7 @@
The amount of damping once the slider limits are surpassed.
</constant>
<constant name="SLIDER_JOINT_LINEAR_MOTION_SOFTNESS" value="5" enum="SliderJointParam">
- A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="SLIDER_JOINT_LINEAR_MOTION_RESTITUTION" value="6" enum="SliderJointParam">
The amount of restitution inside the slider limits.
@@ -1252,13 +1252,13 @@
The amount of damping inside the slider limits.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="SliderJointParam">
- A factor applied to the movement accross axes orthogonal to the slider.
+ A factor applied to the movement across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="SliderJointParam">
- The amount of restitution when movement is accross axes orthogonal to the slider.
+ The amount of restitution when movement is across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="SliderJointParam">
- The amount of damping when movement is accross axes orthogonal to the slider.
+ The amount of damping when movement is across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_UPPER" value="11" enum="SliderJointParam">
The upper limit of rotation in the slider.
@@ -1323,7 +1323,7 @@
The maximum difference between the pivot points' axes.
</constant>
<constant name="G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS" value="2" enum="G6DOFJointAxisParam">
- A factor that gets applied to the movement accross the axes. The lower, the slower the movement.
+ A factor that gets applied to the movement across the axes. The lower, the slower the movement.
</constant>
<constant name="G6DOF_JOINT_LINEAR_RESTITUTION" value="3" enum="G6DOFJointAxisParam">
The amount of restitution on the axes movement. The lower, the more velocity-energy gets lost.
@@ -1332,25 +1332,25 @@
The amount of damping that happens at the linear motion across the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_LOWER_LIMIT" value="5" enum="G6DOFJointAxisParam">
- The minimum rotation in negative direction to break loose and rotate arround the axes.
+ The minimum rotation in negative direction to break loose and rotate around the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_UPPER_LIMIT" value="6" enum="G6DOFJointAxisParam">
- The minimum rotation in positive direction to break loose and rotate arround the axes.
+ The minimum rotation in positive direction to break loose and rotate around the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS" value="7" enum="G6DOFJointAxisParam">
- A factor that gets multiplied onto all rotations accross the axes.
+ A factor that gets multiplied onto all rotations across the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_DAMPING" value="8" enum="G6DOFJointAxisParam">
- The amount of rotational damping accross the axes. The lower, the more dampening occurs.
+ The amount of rotational damping across the axes. The lower, the more dampening occurs.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_RESTITUTION" value="9" enum="G6DOFJointAxisParam">
- The amount of rotational restitution accross the axes. The lower, the more restitution occurs.
+ The amount of rotational restitution across the axes. The lower, the more restitution occurs.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_FORCE_LIMIT" value="10" enum="G6DOFJointAxisParam">
- The maximum amount of force that can occur, when rotating arround the axes.
+ The maximum amount of force that can occur, when rotating around the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_ERP" value="11" enum="G6DOFJointAxisParam">
- When correcting the crossing of limits in rotation accross the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
+ When correcting the crossing of limits in rotation across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY" value="12" enum="G6DOFJointAxisParam">
Target speed for the motor at the axes.
diff --git a/doc/classes/PhysicsShapeQueryParameters.xml b/doc/classes/PhysicsShapeQueryParameters.xml
index 98d6846b13..3f68136285 100644
--- a/doc/classes/PhysicsShapeQueryParameters.xml
+++ b/doc/classes/PhysicsShapeQueryParameters.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsShapeQueryParameters" inherits="Reference" category="Core" version="3.0-beta">
+<class name="PhysicsShapeQueryParameters" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,60 +9,6 @@
<demos>
</demos>
<methods>
- <method name="get_collision_mask" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
- <method name="get_exclude" qualifiers="const">
- <return type="Array">
- </return>
- <description>
- </description>
- </method>
- <method name="get_margin" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="get_shape_rid" qualifiers="const">
- <return type="RID">
- </return>
- <description>
- </description>
- </method>
- <method name="get_transform" qualifiers="const">
- <return type="Transform">
- </return>
- <description>
- </description>
- </method>
- <method name="set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="collision_mask" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_exclude">
- <return type="void">
- </return>
- <argument index="0" name="exclude" type="Array">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="float">
- </argument>
- <description>
- </description>
- </method>
<method name="set_shape">
<return type="void">
</return>
@@ -71,23 +17,19 @@
<description>
</description>
</method>
- <method name="set_shape_rid">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_transform">
- <return type="void">
- </return>
- <argument index="0" name="transform" type="Transform">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
+ </member>
+ <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude">
+ </member>
+ <member name="margin" type="float" setter="set_margin" getter="get_margin">
+ </member>
+ <member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid">
+ </member>
+ <member name="transform" type="Transform" setter="set_transform" getter="get_transform">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/PhysicsShapeQueryResult.xml b/doc/classes/PhysicsShapeQueryResult.xml
index d18d09b612..109074c35c 100644
--- a/doc/classes/PhysicsShapeQueryResult.xml
+++ b/doc/classes/PhysicsShapeQueryResult.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PhysicsShapeQueryResult" inherits="Reference" category="Core" version="3.0-beta">
+<class name="PhysicsShapeQueryResult" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Result of a shape query in Physics2DServer.
</brief_description>
diff --git a/doc/classes/PinJoint.xml b/doc/classes/PinJoint.xml
index 46e3d3c512..a8cc0ad9b3 100644
--- a/doc/classes/PinJoint.xml
+++ b/doc/classes/PinJoint.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PinJoint" inherits="Joint" category="Core" version="3.0-beta">
+<class name="PinJoint" inherits="Joint" category="Core" version="3.0-stable">
<brief_description>
Pin Joint for 3D Shapes.
</brief_description>
@@ -14,11 +14,11 @@
</methods>
<members>
<member name="params/bias" type="float" setter="set_param" getter="get_param">
- The force with wich the pinned objects stay in positional relation to each other.
+ The force with which the pinned objects stay in positional relation to each other.
The higher, the stronger.
</member>
<member name="params/damping" type="float" setter="set_param" getter="get_param">
- The force with wich the pinned objects stay in velocity relation to each other.
+ The force with which the pinned objects stay in velocity relation to each other.
The higher, the stronger.
</member>
<member name="params/impulse_clamp" type="float" setter="set_param" getter="get_param">
@@ -27,11 +27,11 @@
</members>
<constants>
<constant name="PARAM_BIAS" value="0" enum="Param">
- The force with wich the pinned objects stay in positional relation to each other.
+ The force with which the pinned objects stay in positional relation to each other.
The higher, the stronger.
</constant>
<constant name="PARAM_DAMPING" value="1" enum="Param">
- The force with wich the pinned objects stay in velocity relation to each other.
+ The force with which the pinned objects stay in velocity relation to each other.
The higher, the stronger.
</constant>
<constant name="PARAM_IMPULSE_CLAMP" value="2" enum="Param">
diff --git a/doc/classes/PinJoint2D.xml b/doc/classes/PinJoint2D.xml
index c8a886896e..08fb849523 100644
--- a/doc/classes/PinJoint2D.xml
+++ b/doc/classes/PinJoint2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PinJoint2D" inherits="Joint2D" category="Core" version="3.0-beta">
+<class name="PinJoint2D" inherits="Joint2D" category="Core" version="3.0-stable">
<brief_description>
Pin Joint for 2D Shapes.
</brief_description>
diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml
index c895850a64..b1984ec03f 100644
--- a/doc/classes/Plane.xml
+++ b/doc/classes/Plane.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Plane" category="Built-In Types" version="3.0-beta">
+<class name="Plane" category="Built-In Types" version="3.0-stable">
<brief_description>
Plane in hessian form.
</brief_description>
@@ -7,6 +7,7 @@
Plane represents a normalized plane equation. Basically, "normal" is the normal of the plane (a,b,c normalized), and "d" is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/PlaneMesh.xml b/doc/classes/PlaneMesh.xml
index 760d64d2de..cd97d5c6eb 100644
--- a/doc/classes/PlaneMesh.xml
+++ b/doc/classes/PlaneMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PlaneMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="PlaneMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a planar [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/PlaneShape.xml b/doc/classes/PlaneShape.xml
index b3adf61d68..5912a2a91b 100644
--- a/doc/classes/PlaneShape.xml
+++ b/doc/classes/PlaneShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PlaneShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="PlaneShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml
index f69010458e..8c68c06e65 100644
--- a/doc/classes/Polygon2D.xml
+++ b/doc/classes/Polygon2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Polygon2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Polygon2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
A 2D polygon.
</brief_description>
@@ -11,22 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_texture_rotation" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the rotation in radians of the texture polygon.
- </description>
- </method>
- <method name="set_texture_rotation">
- <return type="void">
- </return>
- <argument index="0" name="texture_rotation" type="float">
- </argument>
- <description>
- Set the amount of rotation of the polygon texture, [code]texture_rotation[/code] is specified in radians and clockwise rotation.
- </description>
- </method>
</methods>
<members>
<member name="antialiased" type="bool" setter="set_antialiased" getter="get_antialiased">
@@ -54,6 +38,9 @@
Amount to offset the polygon's [code]texture[/code]. If [code](0, 0)[/code] the texture's origin (its top-left corner) will be placed at the polygon's [code]position[/code].
</member>
<member name="texture_rotation" type="float" setter="set_texture_rotation_degrees" getter="get_texture_rotation_degrees">
+ The texture's rotation in radians.
+ </member>
+ <member name="texture_rotation_degrees" type="float" setter="set_texture_rotation_degrees" getter="get_texture_rotation_degrees">
The texture's rotation in degrees.
</member>
<member name="texture_scale" type="Vector2" setter="set_texture_scale" getter="get_texture_scale">
diff --git a/doc/classes/PolygonPathFinder.xml b/doc/classes/PolygonPathFinder.xml
index 48c5625e6b..cea33fa5c8 100644
--- a/doc/classes/PolygonPathFinder.xml
+++ b/doc/classes/PolygonPathFinder.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PolygonPathFinder" inherits="Resource" category="Core" version="3.0-beta">
+<class name="PolygonPathFinder" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/PoolByteArray.xml b/doc/classes/PoolByteArray.xml
index 653ea958a3..5e80072d46 100644
--- a/doc/classes/PoolByteArray.xml
+++ b/doc/classes/PoolByteArray.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolByteArray" category="Built-In Types" version="3.0-beta">
+<class name="PoolByteArray" category="Built-In Types" version="3.0-stable">
<brief_description>
Raw byte array.
</brief_description>
diff --git a/doc/classes/PoolColorArray.xml b/doc/classes/PoolColorArray.xml
index 04267e0935..47fb38f440 100644
--- a/doc/classes/PoolColorArray.xml
+++ b/doc/classes/PoolColorArray.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolColorArray" category="Built-In Types" version="3.0-beta">
+<class name="PoolColorArray" category="Built-In Types" version="3.0-stable">
<brief_description>
Array of Colors
</brief_description>
diff --git a/doc/classes/PoolIntArray.xml b/doc/classes/PoolIntArray.xml
index 0baf194b52..c24d565db8 100644
--- a/doc/classes/PoolIntArray.xml
+++ b/doc/classes/PoolIntArray.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolIntArray" category="Built-In Types" version="3.0-beta">
+<class name="PoolIntArray" category="Built-In Types" version="3.0-stable">
<brief_description>
Integer Array.
</brief_description>
diff --git a/doc/classes/PoolRealArray.xml b/doc/classes/PoolRealArray.xml
index 0a6c855647..49f4ed85d2 100644
--- a/doc/classes/PoolRealArray.xml
+++ b/doc/classes/PoolRealArray.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolRealArray" category="Built-In Types" version="3.0-beta">
+<class name="PoolRealArray" category="Built-In Types" version="3.0-stable">
<brief_description>
Real Array.
</brief_description>
diff --git a/doc/classes/PoolStringArray.xml b/doc/classes/PoolStringArray.xml
index 37842c1c85..bc273e2fb6 100644
--- a/doc/classes/PoolStringArray.xml
+++ b/doc/classes/PoolStringArray.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolStringArray" category="Built-In Types" version="3.0-beta">
+<class name="PoolStringArray" category="Built-In Types" version="3.0-stable">
<brief_description>
String Array.
</brief_description>
diff --git a/doc/classes/PoolVector2Array.xml b/doc/classes/PoolVector2Array.xml
index a98f3d6d7e..d08cfbba33 100644
--- a/doc/classes/PoolVector2Array.xml
+++ b/doc/classes/PoolVector2Array.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolVector2Array" category="Built-In Types" version="3.0-beta">
+<class name="PoolVector2Array" category="Built-In Types" version="3.0-stable">
<brief_description>
An Array of Vector2.
</brief_description>
diff --git a/doc/classes/PoolVector3Array.xml b/doc/classes/PoolVector3Array.xml
index f3b3274e47..99d5929ded 100644
--- a/doc/classes/PoolVector3Array.xml
+++ b/doc/classes/PoolVector3Array.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PoolVector3Array" category="Built-In Types" version="3.0-beta">
+<class name="PoolVector3Array" category="Built-In Types" version="3.0-stable">
<brief_description>
An Array of Vector3.
</brief_description>
diff --git a/doc/classes/Popup.xml b/doc/classes/Popup.xml
index 930e646dee..0e6d6c844d 100644
--- a/doc/classes/Popup.xml
+++ b/doc/classes/Popup.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Popup" inherits="Control" category="Core" version="3.0-beta">
+<class name="Popup" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Base container control for popups and dialogs.
</brief_description>
diff --git a/doc/classes/PopupDialog.xml b/doc/classes/PopupDialog.xml
index 15df0e4ad2..b47674b588 100644
--- a/doc/classes/PopupDialog.xml
+++ b/doc/classes/PopupDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PopupDialog" inherits="Popup" category="Core" version="3.0-beta">
+<class name="PopupDialog" inherits="Popup" category="Core" version="3.0-stable">
<brief_description>
Base class for Popup Dialogs.
</brief_description>
diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml
index 13cf16d2ee..2ffdc07e1f 100644
--- a/doc/classes/PopupMenu.xml
+++ b/doc/classes/PopupMenu.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PopupMenu" inherits="Popup" category="Core" version="3.0-beta">
+<class name="PopupMenu" inherits="Popup" category="Core" version="3.0-stable">
<brief_description>
PopupMenu displays a list of options.
</brief_description>
@@ -233,12 +233,6 @@
<description>
</description>
</method>
- <method name="is_hide_on_state_item_selection" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="is_item_checkable" qualifiers="const">
<return type="bool">
</return>
@@ -272,7 +266,7 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
- Return whether the item is a seperator. If it is, it would be displayed as a line.
+ Return whether the item is a separator. If it is, it would be displayed as a line.
</description>
</method>
<method name="remove_item">
@@ -284,14 +278,6 @@
Removes the item at index "idx" from the menu. Note that the indexes of items after the removed item are going to be shifted by one.
</description>
</method>
- <method name="set_hide_on_state_item_selection">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
<method name="set_item_accelerator">
<return type="void">
</return>
@@ -322,7 +308,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
- Mark the item at index "idx" as a seperator, which means that it would be displayed as a mere line.
+ Mark the item at index "idx" as a separator, which means that it would be displayed as a mere line.
</description>
</method>
<method name="set_item_checked">
@@ -455,6 +441,8 @@
</member>
<member name="hide_on_item_selection" type="bool" setter="set_hide_on_item_selection" getter="is_hide_on_item_selection">
</member>
+ <member name="hide_on_state_item_selection" type="bool" setter="set_hide_on_state_item_selection" getter="is_hide_on_state_item_selection">
+ </member>
</members>
<signals>
<signal name="id_pressed">
diff --git a/doc/classes/PopupPanel.xml b/doc/classes/PopupPanel.xml
index 179f91e74b..0de5319f59 100644
--- a/doc/classes/PopupPanel.xml
+++ b/doc/classes/PopupPanel.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PopupPanel" inherits="Popup" category="Core" version="3.0-beta">
+<class name="PopupPanel" inherits="Popup" category="Core" version="3.0-stable">
<brief_description>
Class for displaying popups with a panel background.
</brief_description>
diff --git a/doc/classes/Position2D.xml b/doc/classes/Position2D.xml
index d222a5dc04..d06d9220a7 100644
--- a/doc/classes/Position2D.xml
+++ b/doc/classes/Position2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Position2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Position2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Generic 2D Position hint for editing.
</brief_description>
diff --git a/doc/classes/Position3D.xml b/doc/classes/Position3D.xml
index a5b8a119ff..5f3aa004dc 100644
--- a/doc/classes/Position3D.xml
+++ b/doc/classes/Position3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Position3D" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Position3D" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Generic 3D Position hint for editing
</brief_description>
diff --git a/doc/classes/PrimitiveMesh.xml b/doc/classes/PrimitiveMesh.xml
index e8ad23524f..7f0ee9ce37 100644
--- a/doc/classes/PrimitiveMesh.xml
+++ b/doc/classes/PrimitiveMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PrimitiveMesh" inherits="Mesh" category="Core" version="3.0-beta">
+<class name="PrimitiveMesh" inherits="Mesh" category="Core" version="3.0-stable">
<brief_description>
Base class for all primitive meshes. Handles applying a [Material] to a primitive mesh.
</brief_description>
diff --git a/doc/classes/PrismMesh.xml b/doc/classes/PrismMesh.xml
index 38bb3a4eb6..389acc9320 100644
--- a/doc/classes/PrismMesh.xml
+++ b/doc/classes/PrismMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PrismMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="PrismMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a prism-shaped [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/ProceduralSky.xml b/doc/classes/ProceduralSky.xml
index 2abd1104ce..9d7e590fa3 100644
--- a/doc/classes/ProceduralSky.xml
+++ b/doc/classes/ProceduralSky.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ProceduralSky" inherits="Sky" category="Core" version="3.0-beta">
+<class name="ProceduralSky" inherits="Sky" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/ProgressBar.xml b/doc/classes/ProgressBar.xml
index 7417ddb53e..321f27008d 100644
--- a/doc/classes/ProgressBar.xml
+++ b/doc/classes/ProgressBar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ProgressBar" inherits="Range" category="Core" version="3.0-beta">
+<class name="ProgressBar" inherits="Range" category="Core" version="3.0-stable">
<brief_description>
General purpose progress bar.
</brief_description>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index e28860a577..7d0856127c 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ProjectSettings" inherits="Object" category="Core" version="3.0-beta">
+<class name="ProjectSettings" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Contains global variables accessible from everywhere.
</brief_description>
<description>
- Contains global variables accessible from everywhere. Use the normal [Object] API, such as "ProjectSettings.get(variable)", "ProjectSettings.set(variable,value)" or "ProjectSettings.has(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options.
+ Contains global variables accessible from everywhere. Use "ProjectSettings.get_setting(variable)", "ProjectSettings.set_setting(variable,value)" or "ProjectSettings.has_setting(variable)" to access them. Variables stored in project.godot are also loaded into ProjectSettings, making this object very useful for reading custom game configuration options.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/ProximityGroup.xml b/doc/classes/ProximityGroup.xml
index 42e2c5e690..b4a424dfdd 100644
--- a/doc/classes/ProximityGroup.xml
+++ b/doc/classes/ProximityGroup.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ProximityGroup" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="ProximityGroup" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
General purpose proximity-detection node.
</brief_description>
@@ -21,30 +21,18 @@
<description>
</description>
</method>
- <method name="set_dispatch_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_group_name">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
+ <member name="dispatch_mode" type="int" setter="set_dispatch_mode" getter="get_dispatch_mode" enum="ProximityGroup.DispatchMode">
+ </member>
<member name="grid_radius" type="Vector3" setter="set_grid_radius" getter="get_grid_radius">
</member>
+ <member name="group_name" type="String" setter="set_group_name" getter="get_group_name">
+ </member>
</members>
<signals>
<signal name="broadcast">
- <argument index="0" name="name" type="String">
+ <argument index="0" name="group_name" type="String">
</argument>
<argument index="1" name="parameters" type="Array">
</argument>
@@ -53,5 +41,9 @@
</signal>
</signals>
<constants>
+ <constant name="MODE_PROXY" value="0" enum="DispatchMode">
+ </constant>
+ <constant name="MODE_SIGNAL" value="1" enum="DispatchMode">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/ProxyTexture.xml b/doc/classes/ProxyTexture.xml
index 2cdcac8775..68f03ca4fa 100644
--- a/doc/classes/ProxyTexture.xml
+++ b/doc/classes/ProxyTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ProxyTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="ProxyTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml
index 78884d5492..f1b38d379a 100644
--- a/doc/classes/QuadMesh.xml
+++ b/doc/classes/QuadMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="QuadMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="QuadMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a square mesh.
</brief_description>
diff --git a/doc/classes/Quat.xml b/doc/classes/Quat.xml
index 9fab28c6c8..ead73d0267 100644
--- a/doc/classes/Quat.xml
+++ b/doc/classes/Quat.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Quat" category="Built-In Types" version="3.0-beta">
+<class name="Quat" category="Built-In Types" version="3.0-stable">
<brief_description>
Quaternion.
</brief_description>
diff --git a/doc/classes/RID.xml b/doc/classes/RID.xml
index 0796e654c1..1510d75679 100644
--- a/doc/classes/RID.xml
+++ b/doc/classes/RID.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RID" category="Built-In Types" version="3.0-beta">
+<class name="RID" category="Built-In Types" version="3.0-stable">
<brief_description>
Handle for a [Resource]'s unique ID.
</brief_description>
diff --git a/doc/classes/Range.xml b/doc/classes/Range.xml
index d86ff57661..8a0c831805 100644
--- a/doc/classes/Range.xml
+++ b/doc/classes/Range.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Range" inherits="Control" category="Core" version="3.0-beta">
+<class name="Range" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Abstract base class for range-based controls.
</brief_description>
@@ -11,22 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_as_ratio" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return value mapped to 0 to 1 range.
- </description>
- </method>
- <method name="set_as_ratio">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
- <description>
- Set value mapped to 0 to 1 (unit) range, it will then be converted to the actual value within min and max.
- </description>
- </method>
<method name="share">
<return type="void">
</return>
@@ -57,6 +41,9 @@
<member name="page" type="float" setter="set_page" getter="get_page">
Page size. Used mainly for [ScrollBar]. ScrollBar's length is its size multiplied by [code]page[/code] over the difference between [code]min_value[/code] and [code]max_value[/code].
</member>
+ <member name="ratio" type="float" setter="set_as_ratio" getter="get_as_ratio">
+ The value mapped between 0 and 1.
+ </member>
<member name="rounded" type="bool" setter="set_use_rounded_values" getter="is_using_rounded_values">
If [code]true[/code], [code]value[/code] will always be rounded to the nearest integer.
</member>
diff --git a/doc/classes/RayCast.xml b/doc/classes/RayCast.xml
index 20e262b664..09e0f8b643 100644
--- a/doc/classes/RayCast.xml
+++ b/doc/classes/RayCast.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RayCast" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="RayCast" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Query the closest object intersecting a ray.
</brief_description>
diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml
index 4e93260549..b76c880bb7 100644
--- a/doc/classes/RayCast2D.xml
+++ b/doc/classes/RayCast2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RayCast2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="RayCast2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Query the closest object intersecting a ray.
</brief_description>
@@ -76,6 +76,7 @@
<argument index="0" name="bit" type="int">
</argument>
<description>
+ Return an individual bit on the collision mask.
</description>
</method>
<method name="get_collision_normal" qualifiers="const">
@@ -125,6 +126,7 @@
<argument index="1" name="value" type="bool">
</argument>
<description>
+ Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier.
</description>
</method>
</methods>
diff --git a/doc/classes/RayShape.xml b/doc/classes/RayShape.xml
index 94129dbafe..6d83ed2903 100644
--- a/doc/classes/RayShape.xml
+++ b/doc/classes/RayShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RayShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="RayShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Ray shape for 3D collisions.
</brief_description>
diff --git a/doc/classes/RayShape2D.xml b/doc/classes/RayShape2D.xml
index 748f5ea8b1..ce004b582b 100644
--- a/doc/classes/RayShape2D.xml
+++ b/doc/classes/RayShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RayShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="RayShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Ray shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml
index 4fc9e5bd71..6d953d2615 100644
--- a/doc/classes/Rect2.xml
+++ b/doc/classes/Rect2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Rect2" category="Built-In Types" version="3.0-beta">
+<class name="Rect2" category="Built-In Types" version="3.0-stable">
<brief_description>
2D Axis-aligned bounding box.
</brief_description>
@@ -7,6 +7,7 @@
Rect2 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/RectangleShape2D.xml b/doc/classes/RectangleShape2D.xml
index 13994edddf..4ecd0aadf4 100644
--- a/doc/classes/RectangleShape2D.xml
+++ b/doc/classes/RectangleShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RectangleShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="RectangleShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Rectangle shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/Reference.xml b/doc/classes/Reference.xml
index ec05b43bb0..ba769db5e7 100644
--- a/doc/classes/Reference.xml
+++ b/doc/classes/Reference.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Reference" inherits="Object" category="Core" version="3.0-beta">
+<class name="Reference" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Base class for anything that keeps a reference count.
</brief_description>
diff --git a/doc/classes/ReferenceRect.xml b/doc/classes/ReferenceRect.xml
index a0f56e078e..2a13eb3312 100644
--- a/doc/classes/ReferenceRect.xml
+++ b/doc/classes/ReferenceRect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ReferenceRect" inherits="Control" category="Core" version="3.0-beta">
+<class name="ReferenceRect" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Reference frame for GUI.
</brief_description>
diff --git a/doc/classes/ReflectionProbe.xml b/doc/classes/ReflectionProbe.xml
index 21bd087407..5db9f32486 100644
--- a/doc/classes/ReflectionProbe.xml
+++ b/doc/classes/ReflectionProbe.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ReflectionProbe" inherits="VisualInstance" category="Core" version="3.0-beta">
+<class name="ReflectionProbe" inherits="VisualInstance" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/reflection_probes.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/RemoteTransform.xml b/doc/classes/RemoteTransform.xml
index c5643409ce..e9b8d2b746 100644
--- a/doc/classes/RemoteTransform.xml
+++ b/doc/classes/RemoteTransform.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RemoteTransform" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="RemoteTransform" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
RemoteTransform leads the [Transform] of another [Spatial] derived Node in the scene.
</brief_description>
diff --git a/doc/classes/RemoteTransform2D.xml b/doc/classes/RemoteTransform2D.xml
index 77308209ea..c6022fd1ff 100644
--- a/doc/classes/RemoteTransform2D.xml
+++ b/doc/classes/RemoteTransform2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RemoteTransform2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="RemoteTransform2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
RemoteTransform2D leads the [Transform2D] of another [CanvasItem] derived Node in the scene.
</brief_description>
diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml
index 713fcab573..8113d81fbb 100644
--- a/doc/classes/Resource.xml
+++ b/doc/classes/Resource.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Resource" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Resource" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Base class for all resources.
</brief_description>
diff --git a/doc/classes/ResourceImporter.xml b/doc/classes/ResourceImporter.xml
index 5474f09a7c..c68bdd613c 100644
--- a/doc/classes/ResourceImporter.xml
+++ b/doc/classes/ResourceImporter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceImporter" inherits="Reference" category="Core" version="3.0-beta">
+<class name="ResourceImporter" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/ResourceInteractiveLoader.xml b/doc/classes/ResourceInteractiveLoader.xml
index 13d701f3c6..8a8023c8ec 100644
--- a/doc/classes/ResourceInteractiveLoader.xml
+++ b/doc/classes/ResourceInteractiveLoader.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceInteractiveLoader" inherits="Reference" category="Core" version="3.0-beta">
+<class name="ResourceInteractiveLoader" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Interactive Resource Loader.
</brief_description>
diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml
index 8d1ab1cd80..d4f61b7929 100644
--- a/doc/classes/ResourceLoader.xml
+++ b/doc/classes/ResourceLoader.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceLoader" inherits="Object" category="Core" version="3.0-beta">
+<class name="ResourceLoader" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Resource Loader.
</brief_description>
diff --git a/doc/classes/ResourcePreloader.xml b/doc/classes/ResourcePreloader.xml
index c749529a19..868ca62963 100644
--- a/doc/classes/ResourcePreloader.xml
+++ b/doc/classes/ResourcePreloader.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourcePreloader" inherits="Node" category="Core" version="3.0-beta">
+<class name="ResourcePreloader" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Resource Preloader Node.
</brief_description>
diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml
index c1a5921071..f4abe9f770 100644
--- a/doc/classes/ResourceSaver.xml
+++ b/doc/classes/ResourceSaver.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceSaver" inherits="Object" category="Core" version="3.0-beta">
+<class name="ResourceSaver" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Resource Saving Interface.
</brief_description>
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index 5c04d3406e..24ae94d6db 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RichTextLabel" inherits="Control" category="Core" version="3.0-beta">
+<class name="RichTextLabel" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Label that displays rich text.
</brief_description>
@@ -8,6 +8,7 @@
Note that assignments to [member bbcode_text] clear the tag stack and reconstruct it from the property's contents. Any edits made to [member bbcode_text] will erase previous edits made from other manual sources such as [method append_bbcode] and the [code]push_*[/code] / [method pop] methods.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/gui/bbcode_in_richtextlabel.html
</tutorials>
<demos>
</demos>
@@ -53,20 +54,6 @@
Returns the total number of newlines in the tag stack's text tags. Considers wrapped text as one line.
</description>
</method>
- <method name="get_tab_size" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the number of spaces associated with a single tab length. Does not affect "\t" in text tags, only indent tags.
- </description>
- </method>
- <method name="get_text">
- <return type="String">
- </return>
- <description>
- Returns the raw content of [member bbcode_text].
- </description>
- </method>
<method name="get_total_character_count" qualifiers="const">
<return type="int">
</return>
@@ -88,34 +75,6 @@
Returns the number of visible lines.
</description>
</method>
- <method name="is_meta_underlined" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the label underlines meta tags such as [url]{text}[/url].
- </description>
- </method>
- <method name="is_scroll_active" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line].
- </description>
- </method>
- <method name="is_scroll_following" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the window scrolls down to display new content automatically.
- </description>
- </method>
- <method name="is_selection_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the label allows text selection.
- </description>
- </method>
<method name="newline">
<return type="void">
</return>
@@ -234,51 +193,6 @@
Scrolls the window's top line to match [code]line[/code].
</description>
</method>
- <method name="set_meta_underline">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] will underline meta tags such as the [url] bbcode. Default value: [code]true[/code].
- </description>
- </method>
- <method name="set_scroll_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
- <description>
- If [code]false[/code] the vertical scrollbar is hidden. Default value: [code]true[/code].
- </description>
- </method>
- <method name="set_scroll_follow">
- <return type="void">
- </return>
- <argument index="0" name="follow" type="bool">
- </argument>
- <description>
- If [code]true[/code] the window scrolls to reveal new content. Default value: [code]false[/code].
- </description>
- </method>
- <method name="set_selection_enabled">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- If [code]true[/code] text can be selected.
- </description>
- </method>
- <method name="set_tab_size">
- <return type="void">
- </return>
- <argument index="0" name="spaces" type="int">
- </argument>
- <description>
- Sets the current tab length in spaces. Use with [method push_indent] to redefine indent length.
- </description>
- </method>
<method name="set_table_column_expand">
<return type="void">
</return>
@@ -294,15 +208,6 @@
Columns with a [code]false[/code] expand will not contribute to the total ratio.
</description>
</method>
- <method name="set_text">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <description>
- Clears the tag stack and adds a raw text tag to the top of it. Does not parse bbcodes. Does not modify [member bbcode_text].
- </description>
- </method>
</methods>
<members>
<member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode">
@@ -311,12 +216,31 @@
<member name="bbcode_text" type="String" setter="set_bbcode" getter="get_bbcode">
The label's text in BBCode format. Is not representative of manual modifications to the internal tag stack. Erases changes made by other methods when edited.
</member>
+ <member name="meta_underlined" type="bool" setter="set_meta_underline" getter="is_meta_underlined">
+ If [code]true[/code], the label underlines meta tags such as [url]{text}[/url]. Default value: [code]true[/code].
+ </member>
<member name="override_selected_font_color" type="bool" setter="set_override_selected_font_color" getter="is_overriding_selected_font_color">
If [code]true[/code] the label uses the custom font color. Default value: [code]false[/code].
</member>
<member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible">
The text's visibility, as a [float] between 0.0 and 1.0.
</member>
+ <member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active">
+ If [code]true[/code], the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line]. Default value: [code]true[/code].
+ </member>
+ <member name="scroll_following" type="bool" setter="set_scroll_follow" getter="is_scroll_following">
+ If [code]true[/code], the window scrolls down to display new content automatically. Default value: [code]false[/code].
+ </member>
+ <member name="selection_enabled" type="bool" setter="set_selection_enabled" getter="is_selection_enabled">
+ If [code]true[/code], the label allows text selection.
+ </member>
+ <member name="tab_size" type="int" setter="set_tab_size" getter="get_tab_size">
+ The number of spaces associated with a single tab length. Does not affect "\t" in text tags, only indent tags.
+ </member>
+ <member name="text" type="String" setter="set_text" getter="get_text">
+ The raw text of the label.
+ When set, clears the tag stack and adds a raw text tag to the top of it. Does not parse bbcodes. Does not modify [member bbcode_text].
+ </member>
<member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters">
The restricted number of characters to display in the label.
</member>
diff --git a/doc/classes/RigidBody.xml b/doc/classes/RigidBody.xml
index 3c54f29c15..ad5da50dd6 100644
--- a/doc/classes/RigidBody.xml
+++ b/doc/classes/RigidBody.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RigidBody" inherits="PhysicsBody" category="Core" version="3.0-beta">
+<class name="RigidBody" inherits="PhysicsBody" category="Core" version="3.0-stable">
<brief_description>
Physics Body whose position is determined through physics simulation in 3D space.
</brief_description>
@@ -11,6 +11,7 @@
As a warning, don't change RigidBody's position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop will yield strange behavior.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
@@ -32,14 +33,14 @@
<argument index="1" name="impulse" type="Vector3">
</argument>
<description>
- Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates.
+ Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the position are in global coordinates, and the position is relative to the object's origin.
</description>
</method>
<method name="get_colliding_bodies" qualifiers="const">
<return type="Array">
</return>
<description>
- Return a list of the bodies colliding with this one. By default, number of max contacts reported is at 0 , see [method set_max_contacts_reported] to increase it.
+ Return a list of the bodies colliding with this one. By default, number of max contacts reported is at 0 , see [method set_max_contacts_reported] to increase it. Note that 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">
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index c11e118df5..67ae92c664 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RigidBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta">
+<class name="RigidBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable">
<brief_description>
A body that is controlled by the 2D physics engine.
</brief_description>
@@ -49,50 +49,11 @@
Applies a positioned impulse to the body (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied instantaneously. Both the impulse and the offset from the body origin are in global coordinates.
</description>
</method>
- <method name="get_applied_force" qualifiers="const">
- <return type="Vector2">
- </return>
- <description>
- Returns the body's total applied force.
- </description>
- </method>
- <method name="get_applied_torque" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the body's total applied torque.
- </description>
- </method>
<method name="get_colliding_bodies" qualifiers="const">
<return type="Array">
</return>
<description>
- Returns a list of the bodies colliding with this one. Use [member contacts_reported] to set the maximum number reported. You must also set [member contact_monitor] to [code]true[/code].
- </description>
- </method>
- <method name="get_inertia" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the body's moment of inertia, which is computed automatically from the body's mass and assigned [Shape2D]s during the physics frame. Note that it will not yet have a value in the [code]_ready()[/code] function.
- </description>
- </method>
- <method name="set_applied_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector2">
- </argument>
- <description>
- Sets the applied force vector. This is the equivalent of firing a rocket: the force is applied constantly.
- </description>
- </method>
- <method name="set_applied_torque">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="float">
- </argument>
- <description>
- Sets the applied torque.
+ Returns a list of the bodies colliding with this one. Use [member contacts_reported] to set the maximum number reported. You must also set [member contact_monitor] to [code]true[/code]. Note that 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">
@@ -104,15 +65,6 @@
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>
</method>
- <method name="set_inertia">
- <return type="void">
- </return>
- <argument index="0" name="inertia" type="float">
- </argument>
- <description>
- Set the body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it.
- </description>
- </method>
<method name="test_motion">
<return type="bool">
</return>
@@ -134,6 +86,12 @@
<member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity">
The body's rotational velocity.
</member>
+ <member name="applied_force" type="Vector2" setter="set_applied_force" getter="get_applied_force">
+ The body's total applied force.
+ </member>
+ <member name="applied_torque" type="float" setter="set_applied_torque" getter="get_applied_torque">
+ The body's total applied torque.
+ </member>
<member name="bounce" type="float" setter="set_bounce" getter="get_bounce">
The body's bounciness. Default value: [code]0[/code].
</member>
@@ -159,6 +117,9 @@
<member name="gravity_scale" type="float" setter="set_gravity_scale" getter="get_gravity_scale">
Multiplies the gravity applied to the body. The body's gravity is calculated from the "Default Gravity" value in "Project &gt; Project Settings &gt; Physics &gt; 2d" and/or any additional gravity vector applied by [Area2D]s. Default value: [code]1[/code].
</member>
+ <member name="inertia" type="float" setter="set_inertia" getter="get_inertia">
+ The body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it.
+ </member>
<member name="linear_damp" type="float" setter="set_linear_damp" getter="get_linear_damp">
Damps the body's [member linear_velocity]. If [code]-1[/code] the body will use the "Default Linear Damp" in "Project &gt; Project Settings &gt; Physics &gt; 2d". Default value: [code]-1[/code].
</member>
diff --git a/doc/classes/SceneState.xml b/doc/classes/SceneState.xml
index f5cf2dbee4..6fec02c392 100644
--- a/doc/classes/SceneState.xml
+++ b/doc/classes/SceneState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SceneState" inherits="Reference" category="Core" version="3.0-beta">
+<class name="SceneState" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
A script interface to a scene file's data.
</brief_description>
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index a78fe03cab..0fe220ae48 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SceneTree" inherits="MainLoop" category="Core" version="3.0-beta">
+<class name="SceneTree" inherits="MainLoop" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scene_tree.html
+ http://docs.godotengine.org/en/3.0/tutorials/viewports/multiple_resolutions.html
</tutorials>
<demos>
</demos>
@@ -57,18 +59,6 @@
<description>
</description>
</method>
- <method name="get_current_scene" qualifiers="const">
- <return type="Node">
- </return>
- <description>
- </description>
- </method>
- <method name="get_edited_scene_root" qualifiers="const">
- <return type="Node">
- </return>
- <description>
- </description>
- </method>
<method name="get_frame" qualifiers="const">
<return type="int">
</return>
@@ -101,12 +91,6 @@
<description>
</description>
</method>
- <method name="get_root" qualifiers="const">
- <return type="Viewport">
- </return>
- <description>
- </description>
- </method>
<method name="get_rpc_sender_id" qualifiers="const">
<return type="int">
</return>
@@ -128,18 +112,6 @@
Returns true if there is a [NetworkedMultiplayerPeer] set (with [method SceneTree.set_network_peer]).
</description>
</method>
- <method name="is_debugging_collisions_hint" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="is_debugging_navigation_hint" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="is_input_handled">
<return type="bool">
</return>
@@ -153,24 +125,6 @@
Returns true if this SceneTree's [NetworkedMultiplayerPeer] is in server mode (listening for connections).
</description>
</method>
- <method name="is_paused" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="is_refusing_new_network_connections" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="is_using_font_oversampling" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="notify_group">
<return type="void">
</return>
@@ -221,38 +175,6 @@
<description>
</description>
</method>
- <method name="set_current_scene">
- <return type="void">
- </return>
- <argument index="0" name="child_node" type="Node">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_debug_collisions_hint">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_debug_navigation_hint">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_edited_scene_root">
- <return type="void">
- </return>
- <argument index="0" name="scene" type="Node">
- </argument>
- <description>
- </description>
- </method>
<method name="set_group">
<return type="void">
</return>
@@ -285,27 +207,10 @@
<description>
</description>
</method>
- <method name="set_network_peer">
- <return type="void">
- </return>
- <argument index="0" name="peer" type="NetworkedMultiplayerPeer">
- </argument>
- <description>
- Set the peer object to handle the RPC system (effectively enabling networking). Depending on the peer itself, the SceneTree will become a network server (check with [method is_network_server()]) and will set root node's network mode to master (see NETWORK_MODE_* constants in [Node]), or it will become a regular peer with root node set to slave. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to SceneTree's signals.
- </description>
- </method>
- <method name="set_pause">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_refuse_new_network_connections">
+ <method name="set_quit_on_go_back">
<return type="void">
</return>
- <argument index="0" name="refuse" type="bool">
+ <argument index="0" name="enabled" type="bool">
</argument>
<description>
</description>
@@ -324,15 +229,28 @@
<description>
</description>
</method>
- <method name="set_use_font_oversampling">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="current_scene" type="Node" setter="set_current_scene" getter="get_current_scene">
+ </member>
+ <member name="debug_collisions_hint" type="bool" setter="set_debug_collisions_hint" getter="is_debugging_collisions_hint">
+ </member>
+ <member name="debug_navigation_hint" type="bool" setter="set_debug_navigation_hint" getter="is_debugging_navigation_hint">
+ </member>
+ <member name="edited_scene_root" type="Node" setter="set_edited_scene_root" getter="get_edited_scene_root">
+ </member>
+ <member name="network_peer" type="NetworkedMultiplayerPeer" setter="set_network_peer" getter="get_network_peer">
+ The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the SceneTree will become a network server (check with [method is_network_server()]) and will set root node's network mode to master (see NETWORK_MODE_* constants in [Node]), or it will become a regular peer with root node set to slave. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to SceneTree's signals.
+ </member>
+ <member name="paused" type="bool" setter="set_pause" getter="is_paused">
+ </member>
+ <member name="refuse_new_network_connections" type="bool" setter="set_refuse_new_network_connections" getter="is_refusing_new_network_connections">
+ </member>
+ <member name="root" type="Viewport" setter="" getter="get_root">
+ </member>
+ <member name="use_font_oversampling" type="bool" setter="set_use_font_oversampling" getter="is_using_font_oversampling">
+ </member>
+ </members>
<signals>
<signal name="connected_to_server">
<description>
@@ -402,13 +320,13 @@
</signal>
</signals>
<constants>
- <constant name="GROUP_CALL_DEFAULT" value="0" enum="CallGroupFlags">
+ <constant name="GROUP_CALL_DEFAULT" value="0" enum="GroupCallFlags">
</constant>
- <constant name="GROUP_CALL_REVERSE" value="1" enum="CallGroupFlags">
+ <constant name="GROUP_CALL_REVERSE" value="1" enum="GroupCallFlags">
</constant>
- <constant name="GROUP_CALL_REALTIME" value="2" enum="CallGroupFlags">
+ <constant name="GROUP_CALL_REALTIME" value="2" enum="GroupCallFlags">
</constant>
- <constant name="GROUP_CALL_UNIQUE" value="4" enum="CallGroupFlags">
+ <constant name="GROUP_CALL_UNIQUE" value="4" enum="GroupCallFlags">
</constant>
<constant name="STRETCH_MODE_DISABLED" value="0" enum="StretchMode">
</constant>
diff --git a/doc/classes/SceneTreeTimer.xml b/doc/classes/SceneTreeTimer.xml
index 0fdcb26e6e..f6b262d225 100644
--- a/doc/classes/SceneTreeTimer.xml
+++ b/doc/classes/SceneTreeTimer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SceneTreeTimer" inherits="Reference" category="Core" version="3.0-beta">
+<class name="SceneTreeTimer" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,21 +9,11 @@
<demos>
</demos>
<methods>
- <method name="get_time_left" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="set_time_left">
- <return type="void">
- </return>
- <argument index="0" name="time" type="float">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="time_left" type="float" setter="set_time_left" getter="get_time_left">
+ </member>
+ </members>
<signals>
<signal name="timeout">
<description>
diff --git a/doc/classes/Script.xml b/doc/classes/Script.xml
index c7df24879e..787d2c24bf 100644
--- a/doc/classes/Script.xml
+++ b/doc/classes/Script.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Script" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Script" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A class stored as a resource.
</brief_description>
@@ -8,6 +8,7 @@
The 'new' method of a script subclass creates a new instance. [method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/step_by_step/scripting.html
</tutorials>
<demos>
</demos>
@@ -31,13 +32,6 @@
<description>
</description>
</method>
- <method name="get_source_code" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the script source code, or an empty string if source code is not available.
- </description>
- </method>
<method name="has_script_signal" qualifiers="const">
<return type="bool">
</return>
@@ -79,16 +73,12 @@
Reloads the script's class implementation. Returns an error code.
</description>
</method>
- <method name="set_source_code">
- <return type="void">
- </return>
- <argument index="0" name="source" type="String">
- </argument>
- <description>
- Sets the script source code. Does not reload the class implementation.
- </description>
- </method>
</methods>
+ <members>
+ <member name="source_code" type="String" setter="set_source_code" getter="get_source_code">
+ The script source code, or an empty string if source code is not available. When set, does not reload the class implementation automatically.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml
index 81b0b3d0c3..89a8200d66 100644
--- a/doc/classes/ScriptEditor.xml
+++ b/doc/classes/ScriptEditor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ScriptEditor" inherits="PanelContainer" category="Core" version="3.0-beta">
+<class name="ScriptEditor" inherits="PanelContainer" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -12,11 +12,11 @@
<method name="can_drop_data_fw" qualifiers="const">
<return type="bool">
</return>
- <argument index="0" name="arg0" type="Vector2">
+ <argument index="0" name="point" type="Vector2">
</argument>
- <argument index="1" name="arg1" type="Variant">
+ <argument index="1" name="data" type="Variant">
</argument>
- <argument index="2" name="arg2" type="Control">
+ <argument index="2" name="from" type="Control">
</argument>
<description>
</description>
@@ -24,11 +24,11 @@
<method name="drop_data_fw">
<return type="void">
</return>
- <argument index="0" name="arg0" type="Vector2">
+ <argument index="0" name="point" type="Vector2">
</argument>
- <argument index="1" name="arg1" type="Variant">
+ <argument index="1" name="data" type="Variant">
</argument>
- <argument index="2" name="arg2" type="Control">
+ <argument index="2" name="from" type="Control">
</argument>
<description>
</description>
@@ -43,9 +43,9 @@
<method name="get_drag_data_fw">
<return type="Variant">
</return>
- <argument index="0" name="arg0" type="Vector2">
+ <argument index="0" name="point" type="Vector2">
</argument>
- <argument index="1" name="arg1" type="Control">
+ <argument index="1" name="from" type="Control">
</argument>
<description>
</description>
diff --git a/doc/classes/ScrollBar.xml b/doc/classes/ScrollBar.xml
index f3c124b1ff..53b20e55d5 100644
--- a/doc/classes/ScrollBar.xml
+++ b/doc/classes/ScrollBar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ScrollBar" inherits="Range" category="Core" version="3.0-beta">
+<class name="ScrollBar" inherits="Range" category="Core" version="3.0-stable">
<brief_description>
Base class for scroll bars.
</brief_description>
diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml
index 87ad7d57f5..a1e6441d1c 100644
--- a/doc/classes/ScrollContainer.xml
+++ b/doc/classes/ScrollContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ScrollContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="ScrollContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
A helper node for displaying scrollable elements (e.g. lists).
</brief_description>
@@ -11,43 +11,19 @@
<demos>
</demos>
<methods>
- <method name="get_h_scroll" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Return current horizontal scroll value.
- </description>
- </method>
- <method name="get_v_scroll" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Return current vertical scroll value.
- </description>
- </method>
- <method name="set_h_scroll">
- <return type="void">
- </return>
- <argument index="0" name="val" type="int">
- </argument>
- <description>
- Set horizontal scroll value.
- </description>
- </method>
- <method name="set_v_scroll">
- <return type="void">
- </return>
- <argument index="0" name="val" type="int">
- </argument>
- <description>
- Set vertical scroll value.
- </description>
- </method>
</methods>
<members>
- <member name="scroll_horizontal" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled">
+ <member name="scroll_horizontal" type="int" setter="set_h_scroll" getter="get_h_scroll">
+ The current horizontal scroll value.
</member>
- <member name="scroll_vertical" type="bool" setter="set_enable_v_scroll" getter="is_v_scroll_enabled">
+ <member name="scroll_horizontal_enabled" type="bool" setter="set_enable_h_scroll" getter="is_h_scroll_enabled">
+ If [code]true[/code], enables horizontal scrolling.
+ </member>
+ <member name="scroll_vertical" type="int" setter="set_v_scroll" getter="get_v_scroll">
+ The current horizontal scroll value.
+ </member>
+ <member name="scroll_vertical_enabled" type="bool" setter="set_enable_v_scroll" getter="is_v_scroll_enabled">
+ If [code]true[/code], enables vertical scrolling.
</member>
</members>
<constants>
diff --git a/doc/classes/SegmentShape2D.xml b/doc/classes/SegmentShape2D.xml
index dc02859251..56d9fe6d31 100644
--- a/doc/classes/SegmentShape2D.xml
+++ b/doc/classes/SegmentShape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SegmentShape2D" inherits="Shape2D" category="Core" version="3.0-beta">
+<class name="SegmentShape2D" inherits="Shape2D" category="Core" version="3.0-stable">
<brief_description>
Segment shape for 2D collisions.
</brief_description>
diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml
index c8206ff2c2..3d6f894f52 100644
--- a/doc/classes/Semaphore.xml
+++ b/doc/classes/Semaphore.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Semaphore" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Semaphore" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
A synchronization Semaphore.
</brief_description>
diff --git a/doc/classes/Separator.xml b/doc/classes/Separator.xml
index ead641f860..20cf870d75 100644
--- a/doc/classes/Separator.xml
+++ b/doc/classes/Separator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Separator" inherits="Control" category="Core" version="3.0-beta">
+<class name="Separator" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Base class for separators.
</brief_description>
diff --git a/doc/classes/Shader.xml b/doc/classes/Shader.xml
index 082c48dfce..28f06f0caa 100644
--- a/doc/classes/Shader.xml
+++ b/doc/classes/Shader.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Shader" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Shader" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
To be changed, ignore.
</brief_description>
@@ -7,16 +7,11 @@
To be changed, ignore.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/shading/index.html
</tutorials>
<demos>
</demos>
<methods>
- <method name="get_code" qualifiers="const">
- <return type="String">
- </return>
- <description>
- </description>
- </method>
<method name="get_default_texture_param" qualifiers="const">
<return type="Texture">
</return>
@@ -39,14 +34,6 @@
<description>
</description>
</method>
- <method name="set_code">
- <return type="void">
- </return>
- <argument index="0" name="code" type="String">
- </argument>
- <description>
- </description>
- </method>
<method name="set_default_texture_param">
<return type="void">
</return>
@@ -58,6 +45,10 @@
</description>
</method>
</methods>
+ <members>
+ <member name="code" type="String" setter="set_code" getter="get_code">
+ </member>
+ </members>
<constants>
<constant name="MODE_SPATIAL" value="0" enum="Mode">
</constant>
diff --git a/doc/classes/ShaderMaterial.xml b/doc/classes/ShaderMaterial.xml
index 096d6d4332..893746ec31 100644
--- a/doc/classes/ShaderMaterial.xml
+++ b/doc/classes/ShaderMaterial.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ShaderMaterial" inherits="Material" category="Core" version="3.0-beta">
+<class name="ShaderMaterial" inherits="Material" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,12 +9,6 @@
<demos>
</demos>
<methods>
- <method name="get_shader" qualifiers="const">
- <return type="Shader">
- </return>
- <description>
- </description>
- </method>
<method name="get_shader_param" qualifiers="const">
<return type="Variant">
</return>
@@ -23,14 +17,6 @@
<description>
</description>
</method>
- <method name="set_shader">
- <return type="void">
- </return>
- <argument index="0" name="shader" type="Shader">
- </argument>
- <description>
- </description>
- </method>
<method name="set_shader_param">
<return type="void">
</return>
@@ -42,6 +28,10 @@
</description>
</method>
</methods>
+ <members>
+ <member name="shader" type="Shader" setter="set_shader" getter="get_shader">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/Shape.xml b/doc/classes/Shape.xml
index 512961ed75..986d567c12 100644
--- a/doc/classes/Shape.xml
+++ b/doc/classes/Shape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Shape" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Shape" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Base class for all 3D shape resources.
</brief_description>
@@ -7,6 +7,7 @@
Base class for all 3D shape resources. All 3D shapes that inherit from this can be set into a [PhysicsBody] or [Area].
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Shape2D.xml b/doc/classes/Shape2D.xml
index d4d043dfd8..d2366faa7f 100644
--- a/doc/classes/Shape2D.xml
+++ b/doc/classes/Shape2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Shape2D" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Shape2D" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Base class for all 2D Shapes.
</brief_description>
@@ -7,6 +7,7 @@
Base class for all 2D Shapes. All 2D shape types inherit from this.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/physics_introduction.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/ShortCut.xml b/doc/classes/ShortCut.xml
index ce6a001279..f0908cfa44 100644
--- a/doc/classes/ShortCut.xml
+++ b/doc/classes/ShortCut.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ShortCut" inherits="Resource" category="Core" version="3.0-beta">
+<class name="ShortCut" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A shortcut for binding input.
</brief_description>
diff --git a/doc/classes/Skeleton.xml b/doc/classes/Skeleton.xml
index 8bcc80de32..33022cca14 100644
--- a/doc/classes/Skeleton.xml
+++ b/doc/classes/Skeleton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Skeleton" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="Skeleton" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Skeleton for characters and animated objects.
</brief_description>
diff --git a/doc/classes/Sky.xml b/doc/classes/Sky.xml
index 33f4a6059c..3cd3957f40 100644
--- a/doc/classes/Sky.xml
+++ b/doc/classes/Sky.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Sky" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Sky" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
The base class for [PanoramaSky] and [ProceduralSky].
</brief_description>
diff --git a/doc/classes/Slider.xml b/doc/classes/Slider.xml
index 565d10497b..84c51572c3 100644
--- a/doc/classes/Slider.xml
+++ b/doc/classes/Slider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Slider" inherits="Range" category="Core" version="3.0-beta">
+<class name="Slider" inherits="Range" category="Core" version="3.0-stable">
<brief_description>
Base class for GUI Sliders.
</brief_description>
diff --git a/doc/classes/SliderJoint.xml b/doc/classes/SliderJoint.xml
index 4c794306e4..4507668292 100644
--- a/doc/classes/SliderJoint.xml
+++ b/doc/classes/SliderJoint.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SliderJoint" inherits="Joint" category="Core" version="3.0-beta">
+<class name="SliderJoint" inherits="Joint" category="Core" version="3.0-stable">
<brief_description>
Piston kind of slider between two bodies in 3D.
</brief_description>
@@ -59,7 +59,7 @@
The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
</member>
<member name="linear_limit/softness" type="float" setter="set_param" getter="get_param">
- A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
</member>
<member name="linear_limit/upper_distance" type="float" setter="set_param" getter="get_param">
The maximum difference between the pivot points on their x-axis before damping happens.
@@ -71,16 +71,16 @@
The amount of restitution inside the slider limits.
</member>
<member name="linear_motion/softness" type="float" setter="set_param" getter="get_param">
- A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</member>
<member name="linear_ortho/damping" type="float" setter="set_param" getter="get_param">
- The amount of damping when movement is accross axes orthogonal to the slider.
+ The amount of damping when movement is across axes orthogonal to the slider.
</member>
<member name="linear_ortho/restitution" type="float" setter="set_param" getter="get_param">
- The amount of restitution when movement is accross axes orthogonal to the slider.
+ The amount of restitution when movement is across axes orthogonal to the slider.
</member>
<member name="linear_ortho/softness" type="float" setter="set_param" getter="get_param">
- A factor applied to the movement accross axes orthogonal to the slider.
+ A factor applied to the movement across axes orthogonal to the slider.
</member>
</members>
<constants>
@@ -91,7 +91,7 @@
The minimum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2" enum="Param">
- A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3" enum="Param">
The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost.
@@ -100,7 +100,7 @@
The amount of damping once the slider limits are surpassed.
</constant>
<constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5" enum="Param">
- A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
+ A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6" enum="Param">
The amount of restitution inside the slider limits.
@@ -109,13 +109,13 @@
The amount of damping inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="Param">
- A factor applied to the movement accross axes orthogonal to the slider.
+ A factor applied to the movement across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="Param">
- The amount of restitution when movement is accross axes orthogonal to the slider.
+ The amount of restitution when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="Param">
- The amount of damping when movement is accross axes orthogonal to the slider.
+ The amount of damping when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11" enum="Param">
The upper limit of rotation in the slider.
diff --git a/doc/classes/Spatial.xml b/doc/classes/Spatial.xml
index ea04192a5e..26f6f4003b 100644
--- a/doc/classes/Spatial.xml
+++ b/doc/classes/Spatial.xml
@@ -1,23 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Spatial" inherits="Node" category="Core" version="3.0-beta">
+<class name="Spatial" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Most basic 3D game object, parent of all 3D related nodes.
</brief_description>
<description>
Most basic 3D game object, with a 3D [Transform] and visibility settings. All other 3D game objects inherit from Spatial. Use Spatial as a parent node to move, scale, rotate and show/hide children in a 3D project.
+
+ Affine operations (rotate, scale, translate) happen in parent's local coordinate system, unless the Spatial object is set as top level. Affine operations in this coordinate system correspond to direct affine operations on the Spatial's transform. The word local below refers to this coordinate system. The coordinate system that is attached to the Spatial object itself is referred to as object-local coordinate system.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/introduction_to_3d.html
</tutorials>
<demos>
</demos>
<methods>
- <method name="get_gizmo" qualifiers="const">
- <return type="SpatialGizmo">
- </return>
- <description>
- Returns the SpatialGizmo for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor.
- </description>
- </method>
<method name="get_parent_spatial" qualifiers="const">
<return type="Spatial">
</return>
@@ -35,12 +31,20 @@
<method name="global_rotate">
<return type="void">
</return>
- <argument index="0" name="normal" type="Vector3">
+ <argument index="0" name="axis" type="Vector3">
</argument>
- <argument index="1" name="radians" type="float">
+ <argument index="1" name="angle" type="float">
+ </argument>
+ <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>
<description>
- Rotates the current node along normal [Vector3] by angle in radians in Global space.
</description>
</method>
<method name="global_translate">
@@ -49,7 +53,7 @@
<argument index="0" name="offset" type="Vector3">
</argument>
<description>
- Moves the node by [Vector3] offset in Global space.
+ Moves the global (world) transformation by [Vector3] offset. The offset is in global coordinate system.
</description>
</method>
<method name="hide">
@@ -115,63 +119,74 @@
<return type="void">
</return>
<description>
- Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation. Performs orthonormalization on this node [Transform3D].
+ 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="normal" type="Vector3">
+ <argument index="0" name="axis" type="Vector3">
</argument>
- <argument index="1" name="radians" type="float">
+ <argument index="1" name="angle" type="float">
</argument>
<description>
- Rotates the node in local space on given normal [Vector3] by angle in radians.
+ 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>
+ <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="radians" type="float">
+ <argument index="0" name="angle" type="float">
</argument>
<description>
- Rotates the node in local space on X axis by angle in radians.
+ 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="radians" type="float">
+ <argument index="0" name="angle" type="float">
</argument>
<description>
- Rotates the node in local space on Y axis by angle in radians.
+ 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="radians" type="float">
+ <argument index="0" name="angle" type="float">
</argument>
<description>
- Rotates the node in local space on Z axis by angle in radians.
+ Rotates the local transformation around the Z axis by angle in radians.
</description>
</method>
- <method name="set_as_toplevel">
+ <method name="scale_object_local">
<return type="void">
</return>
- <argument index="0" name="enable" type="bool">
+ <argument index="0" name="scale" type="Vector3">
</argument>
<description>
- Makes the node ignore its parents transformations. Node transformations are only in global space.
+ Scales the local transformation by given 3D scale factors in object-local coordinate system.
</description>
</method>
- <method name="set_gizmo">
+ <method name="set_as_toplevel">
<return type="void">
</return>
- <argument index="0" name="gizmo" type="SpatialGizmo">
+ <argument index="0" name="enable" type="bool">
</argument>
<description>
- Set [SpatialGizmo] for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor.
+ Makes the node ignore its parents transformations. Node transformations are only in global space.
</description>
</method>
<method name="set_identity">
@@ -242,6 +257,14 @@
Changes the node's position by given offset [Vector3].
</description>
</method>
+ <method name="translate_object_local">
+ <return type="void">
+ </return>
+ <argument index="0" name="offset" type="Vector3">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="update_gizmo">
<return type="void">
</return>
@@ -251,20 +274,25 @@
</method>
</methods>
<members>
+ <member name="gizmo" type="SpatialGizmo" setter="set_gizmo" getter="get_gizmo">
+ The SpatialGizmo for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor.
+ </member>
<member name="global_transform" type="Transform" setter="set_global_transform" getter="get_global_transform">
World space (global) [Transform] of this node.
</member>
<member name="rotation" type="Vector3" setter="set_rotation" getter="get_rotation">
- Local euler rotation in radians of this node.
+ Rotation part of the local transformation, specified in terms of YXZ-Euler angles in the format (X-angle, Y-angle, Z-angle), in radians.
+
+ Note that in the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three indepdent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful.
</member>
<member name="rotation_degrees" type="Vector3" setter="set_rotation_degrees" getter="get_rotation_degrees">
- Local euler rotation in degrees of this node.
+ Rotation part of the local transformation, specified in terms of YXZ-Euler angles in the format (X-angle, Y-angle, Z-angle), in degrees.
</member>
<member name="scale" type="Vector3" setter="set_scale" getter="get_scale">
- Local scale of this node.
+ Scale part of the local transformation.
</member>
<member name="transform" type="Transform" setter="set_transform" getter="get_transform">
- Local space [Transform] of this node.
+ Local space [Transform] of this node, with respect to the parent node.
</member>
<member name="translation" type="Vector3" setter="set_translation" getter="get_translation">
Local translation of this node.
diff --git a/doc/classes/SpatialGizmo.xml b/doc/classes/SpatialGizmo.xml
index 8f614c6737..cf6f0efd46 100644
--- a/doc/classes/SpatialGizmo.xml
+++ b/doc/classes/SpatialGizmo.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpatialGizmo" inherits="Reference" category="Core" version="3.0-beta">
+<class name="SpatialGizmo" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/SpatialMaterial.xml b/doc/classes/SpatialMaterial.xml
index 403a6dc930..eef18c9892 100644
--- a/doc/classes/SpatialMaterial.xml
+++ b/doc/classes/SpatialMaterial.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpatialMaterial" inherits="Material" category="Core" version="3.0-beta">
+<class name="SpatialMaterial" inherits="Material" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/spatial_material.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/SpatialVelocityTracker.xml b/doc/classes/SpatialVelocityTracker.xml
index a58049a141..276b82899b 100644
--- a/doc/classes/SpatialVelocityTracker.xml
+++ b/doc/classes/SpatialVelocityTracker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpatialVelocityTracker" inherits="Reference" category="Core" version="3.0-beta">
+<class name="SpatialVelocityTracker" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -15,12 +15,6 @@
<description>
</description>
</method>
- <method name="is_tracking_physics_step" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="reset">
<return type="void">
</return>
@@ -29,14 +23,6 @@
<description>
</description>
</method>
- <method name="set_track_physics_step">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
<method name="update_position">
<return type="void">
</return>
@@ -46,6 +32,10 @@
</description>
</method>
</methods>
+ <members>
+ <member name="track_physics_step" type="bool" setter="set_track_physics_step" getter="is_tracking_physics_step">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/SphereMesh.xml b/doc/classes/SphereMesh.xml
index 25ebaf1aaa..9f2d613267 100644
--- a/doc/classes/SphereMesh.xml
+++ b/doc/classes/SphereMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SphereMesh" inherits="PrimitiveMesh" category="Core" version="3.0-beta">
+<class name="SphereMesh" inherits="PrimitiveMesh" category="Core" version="3.0-stable">
<brief_description>
Class representing a spherical [PrimitiveMesh].
</brief_description>
diff --git a/doc/classes/SphereShape.xml b/doc/classes/SphereShape.xml
index c26d069310..a8df924bde 100644
--- a/doc/classes/SphereShape.xml
+++ b/doc/classes/SphereShape.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SphereShape" inherits="Shape" category="Core" version="3.0-beta">
+<class name="SphereShape" inherits="Shape" category="Core" version="3.0-stable">
<brief_description>
Sphere shape for 3D collisions.
</brief_description>
diff --git a/doc/classes/SpinBox.xml b/doc/classes/SpinBox.xml
index 806d36717a..1762a66302 100644
--- a/doc/classes/SpinBox.xml
+++ b/doc/classes/SpinBox.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpinBox" inherits="Range" category="Core" version="3.0-beta">
+<class name="SpinBox" inherits="Range" category="Core" version="3.0-stable">
<brief_description>
Numerical input text field.
</brief_description>
diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml
index 835a226a50..3a7f22693a 100644
--- a/doc/classes/SplitContainer.xml
+++ b/doc/classes/SplitContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SplitContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="SplitContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
Container for splitting and adjusting.
</brief_description>
diff --git a/doc/classes/SpotLight.xml b/doc/classes/SpotLight.xml
index c66646114f..00991e75bc 100644
--- a/doc/classes/SpotLight.xml
+++ b/doc/classes/SpotLight.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpotLight" inherits="Light" category="Core" version="3.0-beta">
+<class name="SpotLight" inherits="Light" category="Core" version="3.0-stable">
<brief_description>
Spotlight [Light], such as a reflector spotlight or a lantern.
</brief_description>
@@ -7,6 +7,7 @@
A SpotLight light is a type of [Light] node that emits lights in a specific direction, in the shape of a cone. The light is attenuated through the distance and this attenuation can be configured by changing the energy, radius and attenuation parameters of [Light]. TODO: Image of a spotlight.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/lights_and_shadows.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/Sprite.xml b/doc/classes/Sprite.xml
index 655e98b3ed..c1afb35e09 100644
--- a/doc/classes/Sprite.xml
+++ b/doc/classes/Sprite.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Sprite" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="Sprite" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
General purpose Sprite node.
</brief_description>
diff --git a/doc/classes/Sprite3D.xml b/doc/classes/Sprite3D.xml
index d727725a95..ca0bd212aa 100644
--- a/doc/classes/Sprite3D.xml
+++ b/doc/classes/Sprite3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Sprite3D" inherits="SpriteBase3D" category="Core" version="3.0-beta">
+<class name="Sprite3D" inherits="SpriteBase3D" category="Core" version="3.0-stable">
<brief_description>
2D Sprite node in 3D world.
</brief_description>
diff --git a/doc/classes/SpriteBase3D.xml b/doc/classes/SpriteBase3D.xml
index 580a467d6b..d91314e236 100644
--- a/doc/classes/SpriteBase3D.xml
+++ b/doc/classes/SpriteBase3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpriteBase3D" inherits="GeometryInstance" category="Core" version="3.0-beta">
+<class name="SpriteBase3D" inherits="GeometryInstance" category="Core" version="3.0-stable">
<brief_description>
2D Sprite node in 3D environment.
</brief_description>
diff --git a/doc/classes/SpriteFrames.xml b/doc/classes/SpriteFrames.xml
index 883a6d4fa8..f76212b0d2 100644
--- a/doc/classes/SpriteFrames.xml
+++ b/doc/classes/SpriteFrames.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SpriteFrames" inherits="Resource" category="Core" version="3.0-beta">
+<class name="SpriteFrames" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Sprite frame library for AnimatedSprite.
</brief_description>
diff --git a/doc/classes/StaticBody.xml b/doc/classes/StaticBody.xml
index dd105589a6..e5b9d1c0d9 100644
--- a/doc/classes/StaticBody.xml
+++ b/doc/classes/StaticBody.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StaticBody" inherits="PhysicsBody" category="Core" version="3.0-beta">
+<class name="StaticBody" inherits="PhysicsBody" category="Core" version="3.0-stable">
<brief_description>
Static body for 3D Physics.
</brief_description>
diff --git a/doc/classes/StaticBody2D.xml b/doc/classes/StaticBody2D.xml
index bf670a344f..d9e750f4f6 100644
--- a/doc/classes/StaticBody2D.xml
+++ b/doc/classes/StaticBody2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StaticBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-beta">
+<class name="StaticBody2D" inherits="PhysicsBody2D" category="Core" version="3.0-stable">
<brief_description>
Static body for 2D Physics.
</brief_description>
diff --git a/doc/classes/StreamPeer.xml b/doc/classes/StreamPeer.xml
index d757b6f2d8..49aa26a601 100644
--- a/doc/classes/StreamPeer.xml
+++ b/doc/classes/StreamPeer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamPeer" inherits="Reference" category="Core" version="3.0-beta">
+<class name="StreamPeer" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Abstraction and base class for stream-based protocols.
</brief_description>
@@ -105,7 +105,7 @@
<return type="int">
</return>
<description>
- Get an unsigned 16 bit value from the stream.
+ Get an unsigned 64 bit value from the stream.
</description>
</method>
<method name="get_u8">
@@ -131,17 +131,10 @@
Get a Variant from the stream.
</description>
</method>
- <method name="is_big_endian_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Return whether this [code]StreamPeer[/code] is using big-endian format.
- </description>
- </method>
<method name="put_16">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put a signed 16 bit value into the stream.
@@ -150,7 +143,7 @@
<method name="put_32">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put a signed 32 bit value into the stream.
@@ -159,7 +152,7 @@
<method name="put_64">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put a signed 64 bit value into the stream.
@@ -168,7 +161,7 @@
<method name="put_8">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put a signed byte into the stream.
@@ -186,7 +179,7 @@
<method name="put_double">
<return type="void">
</return>
- <argument index="0" name="val" type="float">
+ <argument index="0" name="value" type="float">
</argument>
<description>
Put a double-precision float into the stream.
@@ -195,7 +188,7 @@
<method name="put_float">
<return type="void">
</return>
- <argument index="0" name="val" type="float">
+ <argument index="0" name="value" type="float">
</argument>
<description>
Put a single-precision float into the stream.
@@ -213,7 +206,7 @@
<method name="put_u16">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put an unsigned 16 bit value into the stream.
@@ -222,7 +215,7 @@
<method name="put_u32">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put an unsigned 32 bit value into the stream.
@@ -231,7 +224,7 @@
<method name="put_u64">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put an unsigned 64 bit value into the stream.
@@ -240,7 +233,7 @@
<method name="put_u8">
<return type="void">
</return>
- <argument index="0" name="val" type="int">
+ <argument index="0" name="value" type="int">
</argument>
<description>
Put an unsigned byte into the stream.
@@ -249,7 +242,7 @@
<method name="put_utf8_string">
<return type="void">
</return>
- <argument index="0" name="val" type="String">
+ <argument index="0" name="value" type="String">
</argument>
<description>
Put a zero-terminated utf8 string into the stream.
@@ -258,22 +251,18 @@
<method name="put_var">
<return type="void">
</return>
- <argument index="0" name="val" type="Variant">
+ <argument index="0" name="value" type="Variant">
</argument>
<description>
Put a Variant into the stream.
</description>
</method>
- <method name="set_big_endian">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Set this [code]StreamPeer[/code] to use big-endian format. Default is false.
- </description>
- </method>
</methods>
+ <members>
+ <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian_enabled">
+ If [code]true[/code], this [code]StreamPeer[/code] will using big-endian format for encoding and decoding.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/StreamPeerBuffer.xml b/doc/classes/StreamPeerBuffer.xml
index 66696ed416..2c95a8a3cf 100644
--- a/doc/classes/StreamPeerBuffer.xml
+++ b/doc/classes/StreamPeerBuffer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamPeerBuffer" inherits="StreamPeer" category="Core" version="3.0-beta">
+<class name="StreamPeerBuffer" inherits="StreamPeer" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -21,12 +21,6 @@
<description>
</description>
</method>
- <method name="get_data_array" qualifiers="const">
- <return type="PoolByteArray">
- </return>
- <description>
- </description>
- </method>
<method name="get_position" qualifiers="const">
<return type="int">
</return>
@@ -55,15 +49,11 @@
<description>
</description>
</method>
- <method name="set_data_array">
- <return type="void">
- </return>
- <argument index="0" name="data" type="PoolByteArray">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="data_array" type="PoolByteArray" setter="set_data_array" getter="get_data_array">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/StreamPeerSSL.xml b/doc/classes/StreamPeerSSL.xml
index 55cb39e137..0c60213e49 100644
--- a/doc/classes/StreamPeerSSL.xml
+++ b/doc/classes/StreamPeerSSL.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamPeerSSL" inherits="StreamPeer" category="Core" version="3.0-beta">
+<class name="StreamPeerSSL" inherits="StreamPeer" category="Core" version="3.0-stable">
<brief_description>
SSL Stream peer.
</brief_description>
@@ -7,6 +7,7 @@
SSL Stream peer. This object can be used to connect to SSL servers.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/networking/ssl_certificates.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/StreamPeerTCP.xml b/doc/classes/StreamPeerTCP.xml
index 4c9812587a..73e9b97367 100644
--- a/doc/classes/StreamPeerTCP.xml
+++ b/doc/classes/StreamPeerTCP.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamPeerTCP" inherits="StreamPeer" category="Core" version="3.0-beta">
+<class name="StreamPeerTCP" inherits="StreamPeer" category="Core" version="3.0-stable">
<brief_description>
TCP Stream peer.
</brief_description>
@@ -29,6 +29,16 @@
Disconnect from host.
</description>
</method>
+ <method name="set_no_delay">
+ <return type="void">
+ </return>
+ <argument index="0" name="enabled" type="bool">
+ </argument>
+ <description>
+ Disable Nagle algorithm to improve latency for small packets.
+ Note that for applications that send large packets, or need to transfer a lot of data, this can reduce total bandwidth.
+ </description>
+ </method>
<method name="get_connected_host" qualifiers="const">
<return type="String">
</return>
diff --git a/doc/classes/StreamTexture.xml b/doc/classes/StreamTexture.xml
index 2e15070a8f..c37b5d6fe4 100644
--- a/doc/classes/StreamTexture.xml
+++ b/doc/classes/StreamTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StreamTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="StreamTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
A .stex texture.
</brief_description>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 8bbd52b417..bad4ada144 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="String" category="Built-In Types" version="3.0-beta">
+<class name="String" category="Built-In Types" version="3.0-stable">
<brief_description>
Built-in string class.
</brief_description>
@@ -277,6 +277,7 @@
<return type="String">
</return>
<description>
+ Removes indentation from string.
</description>
</method>
<method name="empty">
@@ -321,7 +322,7 @@
<argument index="0" name="what" type="String">
</argument>
<description>
- Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+ Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found.
</description>
</method>
<method name="findn">
@@ -343,7 +344,7 @@
<argument index="1" name="placeholder" type="String" default="{_}">
</argument>
<description>
- Formats the string by replacing all occurences of [code]placeholder[/code] with [code]values[/code].
+ Formats the string by replacing all occurrences of [code]placeholder[/code] with [code]values[/code].
</description>
</method>
<method name="get_base_dir">
diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml
index 2759b5f430..a816b6a030 100644
--- a/doc/classes/StyleBox.xml
+++ b/doc/classes/StyleBox.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StyleBox" inherits="Resource" category="Core" version="3.0-beta">
+<class name="StyleBox" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Base class for drawing stylized boxes for the UI.
</brief_description>
diff --git a/doc/classes/StyleBoxEmpty.xml b/doc/classes/StyleBoxEmpty.xml
index 70d801e699..cd0bd9bf9d 100644
--- a/doc/classes/StyleBoxEmpty.xml
+++ b/doc/classes/StyleBoxEmpty.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StyleBoxEmpty" inherits="StyleBox" category="Core" version="3.0-beta">
+<class name="StyleBoxEmpty" inherits="StyleBox" category="Core" version="3.0-stable">
<brief_description>
Empty stylebox (does not display anything).
</brief_description>
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index 16a1e72fce..2f26032c45 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StyleBoxFlat" inherits="StyleBox" category="Core" version="3.0-beta">
+<class name="StyleBoxFlat" inherits="StyleBox" category="Core" version="3.0-stable">
<brief_description>
Customizable Stylebox with a given set of parameters. (no texture required)
</brief_description>
diff --git a/doc/classes/StyleBoxLine.xml b/doc/classes/StyleBoxLine.xml
index e18af2334c..ddabe9aede 100644
--- a/doc/classes/StyleBoxLine.xml
+++ b/doc/classes/StyleBoxLine.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StyleBoxLine" inherits="StyleBox" category="Core" version="3.0-beta">
+<class name="StyleBoxLine" inherits="StyleBox" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,24 +9,12 @@
<demos>
</demos>
<methods>
- <method name="get_grow" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="set_grow">
- <return type="void">
- </return>
- <argument index="0" name="grow" type="float">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
<member name="color" type="Color" setter="set_color" getter="get_color">
</member>
+ <member name="grow" type="float" setter="set_grow" getter="get_grow">
+ </member>
<member name="thickness" type="int" setter="set_thickness" getter="get_thickness">
</member>
<member name="vertical" type="bool" setter="set_vertical" getter="is_vertical">
diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml
index 2a7077bbff..8bac0fc77e 100644
--- a/doc/classes/StyleBoxTexture.xml
+++ b/doc/classes/StyleBoxTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="StyleBoxTexture" inherits="StyleBox" category="Core" version="3.0-beta">
+<class name="StyleBoxTexture" inherits="StyleBox" category="Core" version="3.0-stable">
<brief_description>
Texture Based 3x3 scale style.
</brief_description>
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 0916d0b928..64978a8bef 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SurfaceTool" inherits="Reference" category="Core" version="3.0-beta">
+<class name="SurfaceTool" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Helper tool to create geometry.
</brief_description>
diff --git a/doc/classes/TCP_Server.xml b/doc/classes/TCP_Server.xml
index d3715ff545..b3db65de59 100644
--- a/doc/classes/TCP_Server.xml
+++ b/doc/classes/TCP_Server.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TCP_Server" inherits="Reference" category="Core" version="3.0-beta">
+<class name="TCP_Server" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
TCP Server.
</brief_description>
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index 350dd11e4d..9806c03349 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TabContainer" inherits="Control" category="Core" version="3.0-beta">
+<class name="TabContainer" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Tabbed Container.
</brief_description>
diff --git a/doc/classes/Tabs.xml b/doc/classes/Tabs.xml
index fbda1aedb4..e4df4d0a31 100644
--- a/doc/classes/Tabs.xml
+++ b/doc/classes/Tabs.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Tabs" inherits="Control" category="Core" version="3.0-beta">
+<class name="Tabs" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Tabs Control.
</brief_description>
@@ -35,12 +35,6 @@
<description>
</description>
</method>
- <method name="get_tab_align" qualifiers="const">
- <return type="int" enum="Tabs.TabAlign">
- </return>
- <description>
- </description>
- </method>
<method name="get_tab_count" qualifiers="const">
<return type="int">
</return>
@@ -105,14 +99,6 @@
<description>
</description>
</method>
- <method name="set_tab_align">
- <return type="void">
- </return>
- <argument index="0" name="align" type="int" enum="Tabs.TabAlign">
- </argument>
- <description>
- </description>
- </method>
<method name="set_tab_disabled">
<return type="void">
</return>
@@ -149,6 +135,8 @@
</member>
<member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled">
</member>
+ <member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="Tabs.TabAlign">
+ </member>
<member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="Tabs.CloseButtonDisplayPolicy">
</member>
</members>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index ab722a24c3..f84ebede1c 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TextEdit" inherits="Control" category="Core" version="3.0-beta">
+<class name="TextEdit" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Multiline text editing control.
</brief_description>
@@ -213,7 +213,7 @@
<method name="is_line_hidden" qualifiers="const">
<return type="bool">
</return>
- <argument index="0" name="arg0" type="int">
+ <argument index="0" name="line" type="int">
</argument>
<description>
</description>
@@ -294,24 +294,6 @@
<description>
</description>
</method>
- <method name="set_max_chars">
- <return type="void">
- </return>
- <argument index="0" name="amount" type="int">
- </argument>
- <description>
- Set the maximum amount of characters editable.
- </description>
- </method>
- <method name="set_wrap">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Enable text wrapping when it goes beyond he edge of what is visible.
- </description>
- </method>
<method name="toggle_fold_line">
<return type="void">
</return>
@@ -384,6 +366,9 @@
String value of the [TextEdit].
</member>
<member name="v_scroll_speed" type="float" setter="set_v_scroll_speed" getter="get_v_scroll_speed">
+ If [code]true[/code], enables text wrapping when it goes beyond he edge of what is visible.
+ </member>
+ <member name="wrap_lines" type="bool" setter="set_wrap" getter="is_wrapping">
</member>
</members>
<signals>
diff --git a/doc/classes/Texture.xml b/doc/classes/Texture.xml
index bf27bc4768..f21b41f939 100644
--- a/doc/classes/Texture.xml
+++ b/doc/classes/Texture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Texture" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Texture" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Texture for 2D and 3D.
</brief_description>
@@ -71,13 +71,6 @@
<description>
</description>
</method>
- <method name="get_flags" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Return the current texture flags.
- </description>
- </method>
<method name="get_height" qualifiers="const">
<return type="int">
</return>
@@ -105,17 +98,16 @@
<description>
</description>
</method>
- <method name="set_flags">
- <return type="void">
- </return>
- <argument index="0" name="flags" type="int">
- </argument>
- <description>
- Change the texture flags.
- </description>
- </method>
</methods>
+ <members>
+ <member name="flags" type="int" setter="set_flags" getter="get_flags">
+ The texture's flags.
+ </member>
+ </members>
<constants>
+ <constant name="FLAGS_DEFAULT" value="7" enum="Flags">
+ Default flags. Generate mipmaps, repeat, and filter are enabled.
+ </constant>
<constant name="FLAG_MIPMAPS" value="1" enum="Flags">
Generate mipmaps, which are smaller versions of the same texture to use when zoomed out, keeping the aspect ratio.
</constant>
@@ -125,9 +117,6 @@
<constant name="FLAG_FILTER" value="4" enum="Flags">
Magnifying filter, to enable smooth zooming in of the texture.
</constant>
- <constant name="FLAGS_DEFAULT" value="7" enum="Flags">
- Default flags. Generate mipmaps, repeat, and filter are enabled.
- </constant>
<constant name="FLAG_ANISOTROPIC_FILTER" value="8" enum="Flags">
Anisotropic mipmap filtering. Generates smaller versions of the same texture with different aspect ratios.
More effective on planes often shown going to the horrizon as those textures (Walls or Ground for example) get squashed in the viewport to different aspect ratios and regular mipmaps keep the aspect ratio so they don't optimize storage that well in those cases.
diff --git a/doc/classes/TextureButton.xml b/doc/classes/TextureButton.xml
index 9074966f4f..3bda04fe58 100644
--- a/doc/classes/TextureButton.xml
+++ b/doc/classes/TextureButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TextureButton" inherits="BaseButton" category="Core" version="3.0-beta">
+<class name="TextureButton" inherits="BaseButton" category="Core" version="3.0-stable">
<brief_description>
Texture-based button. Supports Pressed, Hover, Disabled and Focused states.
</brief_description>
diff --git a/doc/classes/TextureProgress.xml b/doc/classes/TextureProgress.xml
index c3046d7877..2456653786 100644
--- a/doc/classes/TextureProgress.xml
+++ b/doc/classes/TextureProgress.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TextureProgress" inherits="Range" category="Core" version="3.0-beta">
+<class name="TextureProgress" inherits="Range" category="Core" version="3.0-stable">
<brief_description>
Texture-based progress bar. Useful for loading screens and life or stamina bars.
</brief_description>
diff --git a/doc/classes/TextureRect.xml b/doc/classes/TextureRect.xml
index c1a5902448..8b0fc09a6d 100644
--- a/doc/classes/TextureRect.xml
+++ b/doc/classes/TextureRect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TextureRect" inherits="Control" category="Core" version="3.0-beta">
+<class name="TextureRect" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Draws a sprite or a texture inside a User Interface. The texture can tile or not.
</brief_description>
diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml
index f6d3b97181..037f8cbd48 100644
--- a/doc/classes/Theme.xml
+++ b/doc/classes/Theme.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Theme" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Theme" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Theme for controls.
</brief_description>
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index c9b1d872bc..c3d1d1b24f 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Thread" inherits="Reference" category="Core" version="3.0-beta">
+<class name="Thread" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
A unit of execution in a process.
</brief_description>
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index a09f6b6dc3..058a92d99c 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TileMap" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="TileMap" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Node for 2D tile-based maps.
</brief_description>
@@ -7,6 +7,7 @@
Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list of tiles (textures plus optional collision, navigation, and/or occluder shapes) which are used to create grid-based maps.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/2d/using_tilemaps.html
</tutorials>
<demos>
</demos>
@@ -185,7 +186,7 @@
<method name="update_bitmask_area">
<return type="void">
</return>
- <argument index="0" name="arg0" type="Vector2">
+ <argument index="0" name="position" type="Vector2">
</argument>
<description>
Applies autotiling rules to the cell (and its adjacent cells) referenced by its grid-based X and Y coordinates.
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 3dbf172c5a..95a5e55176 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TileSet" inherits="Resource" category="Core" version="3.0-beta">
+<class name="TileSet" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Tile library for tilemaps.
</brief_description>
@@ -39,7 +39,7 @@
<method name="autotile_get_bitmask_mode" qualifiers="const">
<return type="int" enum="TileSet.BitmaskMode">
</return>
- <argument index="0" name="arg0" type="int">
+ <argument index="0" name="id" type="int">
</argument>
<description>
</description>
@@ -47,9 +47,9 @@
<method name="autotile_set_bitmask_mode">
<return type="void">
</return>
- <argument index="0" name="mode" type="int">
+ <argument index="0" name="id" type="int">
</argument>
- <argument index="1" name="arg1" type="int" enum="TileSet.BitmaskMode">
+ <argument index="1" name="mode" type="int" enum="TileSet.BitmaskMode">
</argument>
<description>
</description>
diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml
index 09071b2ad1..383d3199f5 100644
--- a/doc/classes/Timer.xml
+++ b/doc/classes/Timer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Timer" inherits="Node" category="Core" version="3.0-beta">
+<class name="Timer" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
A countdown timer.
</brief_description>
@@ -11,20 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_time_left" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the timer's remaining time in seconds. Returns 0 if the timer is inactive.
- </description>
- </method>
- <method name="is_paused" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the timer is paused.
- </description>
- </method>
<method name="is_stopped" qualifiers="const">
<return type="bool">
</return>
@@ -32,15 +18,6 @@
Returns [code]true[/code] if the timer is stopped.
</description>
</method>
- <method name="set_paused">
- <return type="void">
- </return>
- <argument index="0" name="paused" type="bool">
- </argument>
- <description>
- Pauses the timer. If [code]paused[/code] is [code]true[/code], the timer will not process until it is started or unpaused again, even if [method start] is called.
- </description>
- </method>
<method name="start">
<return type="void">
</return>
@@ -64,9 +41,15 @@
<member name="one_shot" type="bool" setter="set_one_shot" getter="is_one_shot">
If [code]true[/code], Timer will stop when reaching 0. If [code]false[/code], it will restart. Default value: [code]false[/code].
</member>
+ <member name="paused" type="bool" setter="set_paused" getter="is_paused">
+ If [code]true[/code], the timer is paused and will not process until it is unpaused again, even if [method start] is called.
+ </member>
<member name="process_mode" type="int" setter="set_timer_process_mode" getter="get_timer_process_mode" enum="Timer.TimerProcessMode">
Processing mode. Uses TIMER_PROCESS_* constants as value.
</member>
+ <member name="time_left" type="float" setter="" getter="get_time_left">
+ The timer's remaining time in seconds. Returns 0 if the timer is inactive.
+ </member>
<member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time">
Wait time in seconds.
</member>
diff --git a/doc/classes/ToolButton.xml b/doc/classes/ToolButton.xml
index 512bbbf3f0..6597dc96e0 100644
--- a/doc/classes/ToolButton.xml
+++ b/doc/classes/ToolButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ToolButton" inherits="Button" category="Core" version="3.0-beta">
+<class name="ToolButton" inherits="Button" category="Core" version="3.0-stable">
<brief_description>
Flat button helper class.
</brief_description>
diff --git a/doc/classes/TouchScreenButton.xml b/doc/classes/TouchScreenButton.xml
index 776765f84d..c187274a9d 100644
--- a/doc/classes/TouchScreenButton.xml
+++ b/doc/classes/TouchScreenButton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TouchScreenButton" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="TouchScreenButton" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Button for touch screen devices.
</brief_description>
diff --git a/doc/classes/Transform.xml b/doc/classes/Transform.xml
index 83003cb357..cf1c9ea032 100644
--- a/doc/classes/Transform.xml
+++ b/doc/classes/Transform.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Transform" category="Built-In Types" version="3.0-beta">
+<class name="Transform" category="Built-In Types" version="3.0-stable">
<brief_description>
3D Transformation. 3x4 matrix.
</brief_description>
@@ -7,6 +7,7 @@
Represents one or many transformations in 3D space such as translation, rotation, or scaling. It consists of a [Basis] "basis" and an [Vector3] "origin". It is similar to a 3x4 matrix.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
@@ -142,7 +143,7 @@
<argument index="0" name="v" type="var">
</argument>
<description>
- Transforms the given vector "v" by this transform.
+ Transforms the given [Vector3], [Plane], or [AABB] by this transform.
</description>
</method>
<method name="xform_inv">
@@ -151,7 +152,7 @@
<argument index="0" name="v" type="var">
</argument>
<description>
- Inverse-transforms the given vector "v" by this transform.
+ Inverse-transforms the given [Vector3], [Plane], or [AABB] by this transform.
</description>
</method>
</methods>
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index f4717aa995..e20f48ba14 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Transform2D" category="Built-In Types" version="3.0-beta">
+<class name="Transform2D" category="Built-In Types" version="3.0-stable">
<brief_description>
2D Transformation. 3x2 matrix.
</brief_description>
@@ -52,18 +52,18 @@
</description>
</method>
<method name="basis_xform">
- <return type="Transform2D">
+ <return type="Vector2">
</return>
- <argument index="0" name="v" type="var">
+ <argument index="0" name="v" type="Vector2">
</argument>
<description>
Transforms the given vector by this transform's basis (no translation).
</description>
</method>
<method name="basis_xform_inv">
- <return type="Transform2D">
+ <return type="Vector2">
</return>
- <argument index="0" name="v" type="var">
+ <argument index="0" name="v" type="Vector2">
</argument>
<description>
Inverse-transforms the given vector by this transform's basis (no translation).
@@ -143,21 +143,21 @@
</description>
</method>
<method name="xform">
- <return type="Transform2D">
+ <return type="var">
</return>
<argument index="0" name="v" type="var">
</argument>
<description>
- Transforms the given vector "v" by this transform.
+ Transforms the given [Vector2] or [Rect2] by this transform.
</description>
</method>
<method name="xform_inv">
- <return type="Transform2D">
+ <return type="var">
</return>
<argument index="0" name="v" type="var">
</argument>
<description>
- Inverse-transforms the given vector "v" by this transform.
+ Inverse-transforms the given [Vector2] or [Rect2] by this transform.
</description>
</method>
</methods>
diff --git a/doc/classes/Translation.xml b/doc/classes/Translation.xml
index cb49c66383..53106f9c08 100644
--- a/doc/classes/Translation.xml
+++ b/doc/classes/Translation.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Translation" inherits="Resource" category="Core" version="3.0-beta">
+<class name="Translation" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Language Translation.
</brief_description>
diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml
index c9b5b46525..5b61f46f96 100644
--- a/doc/classes/TranslationServer.xml
+++ b/doc/classes/TranslationServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TranslationServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="TranslationServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Server that manages all translations. Translations can be set to it and removed from it.
</brief_description>
diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml
index 11bd3b3b86..09af7ee49a 100644
--- a/doc/classes/Tree.xml
+++ b/doc/classes/Tree.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Tree" inherits="Control" category="Core" version="3.0-beta">
+<class name="Tree" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Control to show a tree of items.
</brief_description>
@@ -41,6 +41,8 @@
</return>
<argument index="0" name="parent" type="Object" default="null">
</argument>
+ <argument index="1" name="idx" type="int" default="-1">
+ </argument>
<description>
Create an item in the tree and add it as the last child of [code]parent[/code]. If parent is not given, it will be added as the root's last child, or it'll the be the root itself if the tree is empty.
</description>
@@ -52,20 +54,6 @@
Makes the currently selected item visible. This will scroll the tree to make sure the selected item is visible.
</description>
</method>
- <method name="get_allow_reselect" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if a cell that is currently already selected may be selected again.
- </description>
- </method>
- <method name="get_allow_rmb_select" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if a right click can select items.
- </description>
- </method>
<method name="get_column_at_position" qualifiers="const">
<return type="int">
</return>
@@ -93,13 +81,6 @@
Returns the column's width in pixels.
</description>
</method>
- <method name="get_columns" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the amount of columns.
- </description>
- </method>
<method name="get_custom_popup_rect" qualifiers="const">
<return type="Rect2">
</return>
@@ -107,13 +88,6 @@
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_mode_flags" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the current drop mode's flags.
- </description>
- </method>
<method name="get_drop_section_at_position" qualifiers="const">
<return type="int">
</return>
@@ -200,31 +174,6 @@
Returns the current selection's column.
</description>
</method>
- <method name="is_folding_hidden" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if the folding arrow is hidden.
- </description>
- </method>
- <method name="set_allow_reselect">
- <return type="void">
- </return>
- <argument index="0" name="allow" type="bool">
- </argument>
- <description>
- If [code]true[/code] the currently selected cell may be selected again.
- </description>
- </method>
- <method name="set_allow_rmb_select">
- <return type="void">
- </return>
- <argument index="0" name="allow" type="bool">
- </argument>
- <description>
- If [code]true[/code] a right mouse button click can select items.
- </description>
- </method>
<method name="set_column_expand">
<return type="void">
</return>
@@ -267,52 +216,30 @@
If [code]true[/code] column titles are visible.
</description>
</method>
- <method name="set_columns">
- <return type="void">
- </return>
- <argument index="0" name="amount" type="int">
- </argument>
- <description>
- Set the amount of columns.
- </description>
- </method>
- <method name="set_drop_mode_flags">
- <return type="void">
- </return>
- <argument index="0" name="flags" type="int">
- </argument>
- <description>
- Set the drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants.
- </description>
- </method>
- <method name="set_hide_folding">
- <return type="void">
- </return>
- <argument index="0" name="hide" type="bool">
- </argument>
- <description>
- If [code]true[/code] the folding arrow is hidden.
- </description>
- </method>
- <method name="set_hide_root">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] the tree's root is hidden.
- </description>
- </method>
- <method name="set_select_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Tree.SelectMode">
- </argument>
- <description>
- Allow single or multiple selection. See the [code]SELECT_*[/code] constants.
- </description>
- </method>
</methods>
+ <members>
+ <member name="allow_reselect" type="bool" setter="set_allow_reselect" getter="get_allow_reselect">
+ If [code]true[/code] the currently selected cell may be selected again.
+ </member>
+ <member name="allow_rmb_select" type="bool" setter="set_allow_rmb_select" getter="get_allow_rmb_select">
+ If [code]true[/code] a right mouse button click can select items.
+ </member>
+ <member name="columns" type="int" setter="set_columns" getter="get_columns">
+ The amount of columns.
+ </member>
+ <member name="drop_mode_flags" type="int" setter="set_drop_mode_flags" getter="get_drop_mode_flags">
+ The drop mode as an OR combination of flags. See [code]DROP_MODE_*[/code] constants.
+ </member>
+ <member name="hide_folding" type="bool" setter="set_hide_folding" getter="is_folding_hidden">
+ If [code]true[/code] the folding arrow is hidden.
+ </member>
+ <member name="hide_root" type="bool" setter="set_hide_root" getter="is_root_hidden">
+ If [code]true[/code] the tree's root is hidden.
+ </member>
+ <member name="select_mode" type="int" setter="set_select_mode" getter="get_select_mode" enum="Tree.SelectMode">
+ Allow single or multiple selection. See the [code]SELECT_*[/code] constants.
+ </member>
+ </members>
<signals>
<signal name="button_pressed">
<argument index="0" name="item" type="Object">
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index 421185fe51..c41cfac37c 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TreeItem" inherits="Object" category="Core" version="3.0-beta">
+<class name="TreeItem" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Control for a single item inside a [Tree].
</brief_description>
@@ -111,13 +111,6 @@
Returns the custom background color of column [code]column[/code].
</description>
</method>
- <method name="get_custom_minimum_height" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Returns the custom minimum height.
- </description>
- </method>
<method name="get_expand_right" qualifiers="const">
<return type="bool">
</return>
@@ -260,13 +253,6 @@
Returns [code]true[/code] if the given column is checked.
</description>
</method>
- <method name="is_collapsed">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if this TreeItem is collapsed.
- </description>
- </method>
<method name="is_custom_set_as_button" qualifiers="const">
<return type="bool">
</return>
@@ -284,13 +270,6 @@
Returns [code]true[/code] if column [code]column[/code] is editable.
</description>
</method>
- <method name="is_folding_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns [code]true[/code] if folding is disabled for this TreeItem.
- </description>
- </method>
<method name="is_selectable" qualifiers="const">
<return type="bool">
</return>
@@ -376,15 +355,6 @@
If [code]true[/code] the column [code]column[/code] is checked.
</description>
</method>
- <method name="set_collapsed">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- If [code]true[/code] the TreeItem is collapsed.
- </description>
- </method>
<method name="set_custom_as_button">
<return type="void">
</return>
@@ -432,24 +402,6 @@
Sets the given column's custom draw callback to [code]callback[/code] method on [code]object[/code].
</description>
</method>
- <method name="set_custom_minimum_height">
- <return type="void">
- </return>
- <argument index="0" name="height" type="int">
- </argument>
- <description>
- Sets the custom minimum height of this TreeItem.
- </description>
- </method>
- <method name="set_disable_folding">
- <return type="void">
- </return>
- <argument index="0" name="disable" type="bool">
- </argument>
- <description>
- If [code]true[/code] folding is disabled for this TreeItem.
- </description>
- </method>
<method name="set_editable">
<return type="void">
</return>
@@ -585,6 +537,17 @@
</description>
</method>
</methods>
+ <members>
+ <member name="collapsed" type="bool" setter="set_collapsed" getter="is_collapsed">
+ If [code]true[/code] the TreeItem is collapsed.
+ </member>
+ <member name="custom_minimum_height" type="int" setter="set_custom_minimum_height" getter="get_custom_minimum_height">
+ The custom minimum height.
+ </member>
+ <member name="disable_folding" type="bool" setter="set_disable_folding" getter="is_folding_disabled">
+ If [code]true[/code] folding is disabled for this TreeItem.
+ </member>
+ </members>
<constants>
<constant name="CELL_MODE_STRING" value="0" enum="TreeCellMode">
Cell contains a string.
diff --git a/doc/classes/TriangleMesh.xml b/doc/classes/TriangleMesh.xml
index adc9e00536..0a4ea1fa8f 100644
--- a/doc/classes/TriangleMesh.xml
+++ b/doc/classes/TriangleMesh.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TriangleMesh" inherits="Reference" category="Core" version="3.0-beta">
+<class name="TriangleMesh" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml
index a11580860a..d843c8341f 100644
--- a/doc/classes/Tween.xml
+++ b/doc/classes/Tween.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Tween" inherits="Node" category="Core" version="3.0-beta">
+<class name="Tween" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Node useful for animations with unknown start and end points.
</brief_description>
@@ -78,13 +78,6 @@
Returns the time needed for all tweens to end in seconds, measured from the start. Thus, if you have two tweens, one ending 10 seconds after the start and the other - 20 seconds, it would return 20 seconds, as by that time all tweens would have finished.
</description>
</method>
- <method name="get_speed_scale" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Returns the speed that has been set from editor GUI or [method set_repeat].
- </description>
- </method>
<method name="interpolate_callback">
<return type="bool">
</return>
@@ -186,13 +179,6 @@
Returns true if any tweens are currently running, and false otherwise. Note that this method doesn't consider tweens that have ended.
</description>
</method>
- <method name="is_repeat" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns true if repeat has been set from editor GUI or [method set_repeat].
- </description>
- </method>
<method name="remove">
<return type="bool">
</return>
@@ -265,24 +251,6 @@
Activate/deactivate the tween. You can use this for pausing animations, though [method stop_all] and [method resume_all] might be more fit for this.
</description>
</method>
- <method name="set_repeat">
- <return type="void">
- </return>
- <argument index="0" name="repeat" type="bool">
- </argument>
- <description>
- Make the tween repeat after all tweens have finished.
- </description>
- </method>
- <method name="set_speed_scale">
- <return type="void">
- </return>
- <argument index="0" name="speed" type="float">
- </argument>
- <description>
- Set the speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this.
- </description>
- </method>
<method name="start">
<return type="bool">
</return>
@@ -371,12 +339,18 @@
<members>
<member name="playback_process_mode" type="int" setter="set_tween_process_mode" getter="get_tween_process_mode" enum="Tween.TweenProcessMode">
</member>
+ <member name="playback_speed" type="float" setter="set_speed_scale" getter="get_speed_scale">
+ The speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this.
+ </member>
+ <member name="repeat" type="bool" setter="set_repeat" getter="is_repeat">
+ If [code]true[/code], the tween will repeat.
+ </member>
</members>
<signals>
<signal name="tween_completed">
<argument index="0" name="object" type="Object">
</argument>
- <argument index="1" name="key" type="String">
+ <argument index="1" name="key" type="NodePath">
</argument>
<description>
This signal is emitted when a tween ends.
@@ -385,7 +359,7 @@
<signal name="tween_started">
<argument index="0" name="object" type="Object">
</argument>
- <argument index="1" name="key" type="String">
+ <argument index="1" name="key" type="NodePath">
</argument>
<description>
This signal is emitted when a tween starts.
@@ -394,7 +368,7 @@
<signal name="tween_step">
<argument index="0" name="object" type="Object">
</argument>
- <argument index="1" name="key" type="String">
+ <argument index="1" name="key" type="NodePath">
</argument>
<argument index="2" name="elapsed" type="float">
</argument>
diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml
index f0d69b9b7f..c95723e083 100644
--- a/doc/classes/UndoRedo.xml
+++ b/doc/classes/UndoRedo.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="UndoRedo" inherits="Object" category="Core" version="3.0-beta">
+<class name="UndoRedo" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Helper to manage UndoRedo in the editor or custom tools.
</brief_description>
@@ -108,12 +108,6 @@
Get the name of the current action.
</description>
</method>
- <method name="get_max_steps" qualifiers="const">
- <return type="int">
- </return>
- <description>
- </description>
- </method>
<method name="get_version" qualifiers="const">
<return type="int">
</return>
@@ -128,14 +122,6 @@
<description>
</description>
</method>
- <method name="set_max_steps">
- <return type="void">
- </return>
- <argument index="0" name="max_steps" type="int">
- </argument>
- <description>
- </description>
- </method>
<method name="undo">
<return type="void">
</return>
diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml
index 7c943d5e5d..f92335eef1 100644
--- a/doc/classes/VBoxContainer.xml
+++ b/doc/classes/VBoxContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VBoxContainer" inherits="BoxContainer" category="Core" version="3.0-beta">
+<class name="VBoxContainer" inherits="BoxContainer" category="Core" version="3.0-stable">
<brief_description>
Vertical box container.
</brief_description>
diff --git a/doc/classes/VScrollBar.xml b/doc/classes/VScrollBar.xml
index 23ded3a4b7..d533db98be 100644
--- a/doc/classes/VScrollBar.xml
+++ b/doc/classes/VScrollBar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VScrollBar" inherits="ScrollBar" category="Core" version="3.0-beta">
+<class name="VScrollBar" inherits="ScrollBar" category="Core" version="3.0-stable">
<brief_description>
Vertical version of [ScrollBar], which goes from left (min) to right (max).
</brief_description>
diff --git a/doc/classes/VSeparator.xml b/doc/classes/VSeparator.xml
index 931560855b..c6082a905d 100644
--- a/doc/classes/VSeparator.xml
+++ b/doc/classes/VSeparator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VSeparator" inherits="Separator" category="Core" version="3.0-beta">
+<class name="VSeparator" inherits="Separator" category="Core" version="3.0-stable">
<brief_description>
Vertical version of [Separator].
</brief_description>
diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml
index ed8940ed4e..b91c8a7c2a 100644
--- a/doc/classes/VSlider.xml
+++ b/doc/classes/VSlider.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VSlider" inherits="Slider" category="Core" version="3.0-beta">
+<class name="VSlider" inherits="Slider" category="Core" version="3.0-stable">
<brief_description>
Vertical slider.
</brief_description>
diff --git a/doc/classes/VSplitContainer.xml b/doc/classes/VSplitContainer.xml
index 22f6bb449b..e6e6e189e8 100644
--- a/doc/classes/VSplitContainer.xml
+++ b/doc/classes/VSplitContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VSplitContainer" inherits="SplitContainer" category="Core" version="3.0-beta">
+<class name="VSplitContainer" inherits="SplitContainer" category="Core" version="3.0-stable">
<brief_description>
Vertical split container.
</brief_description>
diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml
index 12cbd276a1..f27f358015 100644
--- a/doc/classes/Variant.xml
+++ b/doc/classes/Variant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Variant" category="Core" version="3.0-beta">
+<class name="Variant" category="Core" version="3.0-stable">
<brief_description>
The most important data type in Godot.
</brief_description>
diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml
index 976cdbbd90..6a87bbf66c 100644
--- a/doc/classes/Vector2.xml
+++ b/doc/classes/Vector2.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Vector2" category="Built-In Types" version="3.0-beta">
+<class name="Vector2" category="Built-In Types" version="3.0-stable">
<brief_description>
Vector used for 2D Math.
</brief_description>
@@ -7,6 +7,7 @@
2-element structure that can be used to represent positions in 2d-space, or any other pair of numeric values.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
@@ -92,7 +93,7 @@
<argument index="3" name="t" type="float">
</argument>
<description>
- Cubicly interpolates between this Vector and "b", using "pre_a" and "post_b" as handles, and returning the result at position "t".
+ Cubicly interpolates between this Vector and "b", using "pre_a" and "post_b" as handles, and returning the result at position "t". "t" should be a float of 0.0-1.0, a percentage of how far along the interpolation is.
</description>
</method>
<method name="distance_squared_to">
@@ -158,7 +159,7 @@
<argument index="1" name="t" type="float">
</argument>
<description>
- Returns the result of the linear interpolation between this vector and "b", by amount "t".
+ Returns the result of the linear interpolation between this vector and "b", by amount "t". "t" should be a float of 0.0-1.0, a percentage of how far along the interpolation is.
</description>
</method>
<method name="normalized">
diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml
index acb41297a7..050285af02 100644
--- a/doc/classes/Vector3.xml
+++ b/doc/classes/Vector3.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Vector3" category="Built-In Types" version="3.0-beta">
+<class name="Vector3" category="Built-In Types" version="3.0-stable">
<brief_description>
Vector class, which performs basic 3D vector math operations.
</brief_description>
@@ -7,6 +7,7 @@
Vector3 is one of the core classes of the engine, and includes several built-in helper functions to perform basic vector math operations.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/math/index.html
</tutorials>
<demos>
</demos>
@@ -77,7 +78,7 @@
<argument index="3" name="t" type="float">
</argument>
<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 (t).
+ 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 (t). (t) should be a float of 0.0-1.0, a percentage of how far along the interpolation is.
</description>
</method>
<method name="distance_squared_to">
@@ -150,7 +151,7 @@
<argument index="1" name="t" type="float">
</argument>
<description>
- Linearly interpolates the vector to a given one (b), by the given amount (t).
+ Linearly interpolates the vector to a given one (b), by the given amount (t). (t) should be a float of 0.0-1.0, a percentage of how far along the interpolation is.
</description>
</method>
<method name="max_axis">
diff --git a/doc/classes/VehicleBody.xml b/doc/classes/VehicleBody.xml
index 77916a7e9f..fe58806344 100644
--- a/doc/classes/VehicleBody.xml
+++ b/doc/classes/VehicleBody.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VehicleBody" inherits="PhysicsBody" category="Core" version="3.0-beta">
+<class name="VehicleBody" inherits="RigidBody" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,27 +9,12 @@
<demos>
</demos>
<methods>
- <method name="get_linear_velocity" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- Returns the VehicleBody's velocity vector. To get the absolute speed in scalar value, get the length of the return vector in pixels/second. Example:
- [codeblock]
- # vehicle is an instance of VehicleBody
- var speed = vehicle.get_linear_velocity().length()
- [/codeblock]
- </description>
- </method>
</methods>
<members>
<member name="brake" type="float" setter="set_brake" getter="get_brake">
</member>
<member name="engine_force" type="float" setter="set_engine_force" getter="get_engine_force">
</member>
- <member name="friction" type="float" setter="set_friction" getter="get_friction">
- </member>
- <member name="mass" type="float" setter="set_mass" getter="get_mass">
- </member>
<member name="steering" type="float" setter="set_steering" getter="get_steering">
</member>
</members>
diff --git a/doc/classes/VehicleWheel.xml b/doc/classes/VehicleWheel.xml
index 7c384886cb..e36a1abe9d 100644
--- a/doc/classes/VehicleWheel.xml
+++ b/doc/classes/VehicleWheel.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VehicleWheel" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="VehicleWheel" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/VideoPlayer.xml b/doc/classes/VideoPlayer.xml
index 281dc1f071..55755ca5df 100644
--- a/doc/classes/VideoPlayer.xml
+++ b/doc/classes/VideoPlayer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VideoPlayer" inherits="Control" category="Core" version="3.0-beta">
+<class name="VideoPlayer" inherits="Control" category="Core" version="3.0-stable">
<brief_description>
Control to play video files.
</brief_description>
@@ -11,13 +11,6 @@
<demos>
</demos>
<methods>
- <method name="get_buffering_msec" qualifiers="const">
- <return type="int">
- </return>
- <description>
- Get the amount of milliseconds to store in buffer while playing.
- </description>
- </method>
<method name="get_stream_name" qualifiers="const">
<return type="String">
</return>
@@ -25,13 +18,6 @@
Get the name of the video stream.
</description>
</method>
- <method name="get_stream_position" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Get the current position of the stream, in seconds.
- </description>
- </method>
<method name="get_video_texture">
<return type="Texture">
</return>
@@ -39,13 +25,6 @@
Get the current frame of the video as a [Texture].
</description>
</method>
- <method name="get_volume" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Get the volume of the audio track as a linear value.
- </description>
- </method>
<method name="is_playing" qualifiers="const">
<return type="bool">
</return>
@@ -60,33 +39,6 @@
Start the video playback.
</description>
</method>
- <method name="set_buffering_msec">
- <return type="void">
- </return>
- <argument index="0" name="msec" type="int">
- </argument>
- <description>
- Set the amount of milliseconds to buffer during playback.
- </description>
- </method>
- <method name="set_stream_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="float">
- </argument>
- <description>
- Set the current position of the stream, in seconds.
- </description>
- </method>
- <method name="set_volume">
- <return type="void">
- </return>
- <argument index="0" name="volume" type="float">
- </argument>
- <description>
- Set the audio volume as a linear value.
- </description>
- </method>
<method name="stop">
<return type="void">
</return>
@@ -100,6 +52,9 @@
</member>
<member name="autoplay" type="bool" setter="set_autoplay" getter="has_autoplay">
</member>
+ <member name="buffering_msec" type="int" setter="set_buffering_msec" getter="get_buffering_msec">
+ The amount of milliseconds to store in buffer while playing.
+ </member>
<member name="bus" type="String" setter="set_bus" getter="get_bus">
</member>
<member name="expand" type="bool" setter="set_expand" getter="has_expand">
@@ -108,6 +63,12 @@
</member>
<member name="stream" type="VideoStream" setter="set_stream" getter="get_stream">
</member>
+ <member name="stream_position" type="float" setter="set_stream_position" getter="get_stream_position">
+ The current position of the stream, in seconds.
+ </member>
+ <member name="volume" type="float" setter="set_volume" getter="get_volume">
+ The volume of the audio track as a linear value.
+ </member>
<member name="volume_db" type="float" setter="set_volume_db" getter="get_volume_db">
</member>
</members>
diff --git a/doc/classes/VideoStream.xml b/doc/classes/VideoStream.xml
index 9f0d9afa43..a4e4ee3452 100644
--- a/doc/classes/VideoStream.xml
+++ b/doc/classes/VideoStream.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VideoStream" inherits="Resource" category="Core" version="3.0-beta">
+<class name="VideoStream" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index ad3903d549..0698a61529 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Viewport" inherits="Node" category="Core" version="3.0-beta">
+<class name="Viewport" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
Creates a sub-view into the screen.
</brief_description>
@@ -12,6 +12,8 @@
Finally, viewports can also behave as render targets, in which case they will not be visible unless the associated texture is used to draw.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/2d/2d_transforms.html
+ http://docs.godotengine.org/en/3.0/tutorials/viewports/index.html
</tutorials>
<demos>
</demos>
@@ -37,13 +39,6 @@
Return the active 3D camera.
</description>
</method>
- <method name="get_canvas_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <description>
- Get the canvas transform of the viewport.
- </description>
- </method>
<method name="get_final_transform" qualifiers="const">
<return type="Transform2D">
</return>
@@ -51,13 +46,6 @@
Get the total transform of the viewport.
</description>
</method>
- <method name="get_global_canvas_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <description>
- Get the global canvas transform of the viewport.
- </description>
- </method>
<method name="get_mouse_position" qualifiers="const">
<return type="Vector2">
</return>
@@ -71,6 +59,7 @@
<argument index="0" name="info" type="int" enum="Viewport.RenderInfo">
</argument>
<description>
+ Get the specific information about the viewport from rendering pipeline.
</description>
</method>
<method name="get_size_override" qualifiers="const">
@@ -101,13 +90,6 @@
Return the final, visible rect in global screen coordinates.
</description>
</method>
- <method name="get_world_2d" qualifiers="const">
- <return type="World2D">
- </return>
- <description>
- Return the 2D world of the viewport.
- </description>
- </method>
<method name="gui_get_drag_data" qualifiers="const">
<return type="Variant">
</return>
@@ -152,24 +134,6 @@
<description>
</description>
</method>
- <method name="set_canvas_transform">
- <return type="void">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
- <description>
- Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport.
- </description>
- </method>
- <method name="set_global_canvas_transform">
- <return type="void">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
- <description>
- Set the global canvas transform of the viewport. The canvas transform is relative to this.
- </description>
- </method>
<method name="set_size_override">
<return type="void">
</return>
@@ -192,14 +156,6 @@
Set whether the size override affects stretch as well.
</description>
</method>
- <method name="set_world_2d">
- <return type="void">
- </return>
- <argument index="0" name="world_2d" type="World2D">
- </argument>
- <description>
- </description>
- </method>
<method name="unhandled_input">
<return type="void">
</return>
@@ -227,50 +183,82 @@
</methods>
<members>
<member name="arvr" type="bool" setter="set_use_arvr" getter="use_arvr">
+ If [code]true[/code] the viewport will be used in AR/VR process. Default value: [code]false[/code].
</member>
<member name="audio_listener_enable_2d" type="bool" setter="set_as_audio_listener_2d" getter="is_audio_listener_2d">
+ If [code]true[/code] the viewport will process 2D audio streams. Default value: [code]false[/code].
</member>
<member name="audio_listener_enable_3d" type="bool" setter="set_as_audio_listener" getter="is_audio_listener">
+ If [code]true[/code] the viewport will process 3D audio streams. Default value: [code]false[/code].
+ </member>
+ <member name="canvas_transform" type="Transform2D" setter="set_canvas_transform" getter="get_canvas_transform">
+ The canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport.
</member>
<member name="debug_draw" type="int" setter="set_debug_draw" getter="get_debug_draw" enum="Viewport.DebugDraw">
+ The overlay mode for test rendered geometry in debug purposes. Default value: [code]DEBUG_DRAW_DISABLED[/code].
</member>
<member name="disable_3d" type="bool" setter="set_disable_3d" getter="is_3d_disabled">
+ If [code]true[/code] the viewport will disable 3D rendering. For actual disabling use [code]usage[/code]. Default value: [code]false[/code].
+ </member>
+ <member name="global_canvas_transform" type="Transform2D" setter="set_global_canvas_transform" getter="get_global_canvas_transform">
+ The global canvas transform of the viewport. The canvas transform is relative to this.
</member>
<member name="gui_disable_input" type="bool" setter="set_disable_input" getter="is_input_disabled">
+ If [code]true[/code] the viewport will not receive input event. Default value: [code]false[/code].
</member>
<member name="gui_snap_controls_to_pixels" type="bool" setter="set_snap_controls_to_pixels" getter="is_snap_controls_to_pixels_enabled">
+ If [code]true[/code] the GUI controls on the viewport will lay pixel perfectly. Default value: [code]true[/code].
</member>
<member name="hdr" type="bool" setter="set_hdr" getter="get_hdr">
+ If [code]true[/code] the viewport rendering will receive benefits from High Dynamic Range algorithm. Default value: [code]true[/code].
</member>
<member name="msaa" type="int" setter="set_msaa" getter="get_msaa" enum="Viewport.MSAA">
+ The multisample anti-aliasing mode. Default value: [code]MSAA_DISABLED[/code].
</member>
<member name="own_world" type="bool" setter="set_use_own_world" getter="is_using_own_world">
+ If [code]true[/code] the viewport will use [World] defined in [code]world[/code] property. Default value: [code]false[/code].
</member>
<member name="physics_object_picking" type="bool" setter="set_physics_object_picking" getter="get_physics_object_picking">
+ If [code]true[/code] the objects rendered by viewport become subjects of mouse picking process. Default value: [code]false[/code].
</member>
<member name="render_target_clear_mode" type="int" setter="set_clear_mode" getter="get_clear_mode" enum="Viewport.ClearMode">
+ The clear mode when viewport used as a render target. Default value: [code]CLEAR_MODE_ALWAYS[/code].
</member>
<member name="render_target_update_mode" type="int" setter="set_update_mode" getter="get_update_mode" enum="Viewport.UpdateMode">
+ The update mode when viewport used as a render target. Default value: [code]UPDATE_WHEN_VISIBLE[/code].
</member>
<member name="render_target_v_flip" type="bool" setter="set_vflip" getter="get_vflip">
+ If [code]true[/code] the result of rendering will be flipped vertically. Default value: [code]false[/code].
</member>
<member name="shadow_atlas_quad_0" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv">
+ The subdivision amount of first quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_4[/code].
</member>
<member name="shadow_atlas_quad_1" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv">
+ The subdivision amount of second quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_4[/code].
</member>
<member name="shadow_atlas_quad_2" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv">
+ The subdivision amount of third quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_16[/code].
</member>
<member name="shadow_atlas_quad_3" type="int" setter="set_shadow_atlas_quadrant_subdiv" getter="get_shadow_atlas_quadrant_subdiv" enum="Viewport.ShadowAtlasQuadrantSubdiv">
+ The subdivision amount of fourth quadrant on shadow atlas. Default value: [code]SHADOW_ATLAS_QUADRANT_SUBDIV_64[/code].
</member>
<member name="shadow_atlas_size" type="int" setter="set_shadow_atlas_size" getter="get_shadow_atlas_size">
+ The resolution of shadow atlas. Both width and height is equal to one value.
</member>
<member name="size" type="Vector2" setter="set_size" getter="get_size">
+ The width and height of viewport.
</member>
<member name="transparent_bg" type="bool" setter="set_transparent_background" getter="has_transparent_background">
+ If [code]true[/code] the viewport should render its background as transparent. Default value: [code]false[/code].
</member>
<member name="usage" type="int" setter="set_usage" getter="get_usage" enum="Viewport.Usage">
+ The rendering mode of viewport. Default value: [code]USAGE_3D[/code].
</member>
<member name="world" type="World" setter="set_world" getter="get_world">
+ The custom [World] which can be used as 3D environment source.
+ </member>
+ <member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d">
+ The custom [World2D] which can be used as 2D environment source.
</member>
</members>
<signals>
@@ -291,6 +279,7 @@
Update the render target only when it is visible. This is the default value.
</constant>
<constant name="UPDATE_ALWAYS" value="3" enum="UpdateMode">
+ Always update the render target.
</constant>
<constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED" value="0" enum="ShadowAtlasQuadrantSubdiv">
</constant>
@@ -307,30 +296,42 @@
<constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_1024" value="6" enum="ShadowAtlasQuadrantSubdiv">
</constant>
<constant name="SHADOW_ATLAS_QUADRANT_SUBDIV_MAX" value="7" enum="ShadowAtlasQuadrantSubdiv">
+ Enum limiter. Do not use it directly.
</constant>
<constant name="RENDER_INFO_OBJECTS_IN_FRAME" value="0" enum="RenderInfo">
+ Amount of objects in frame.
</constant>
<constant name="RENDER_INFO_VERTICES_IN_FRAME" value="1" enum="RenderInfo">
+ Amount of vertices in frame.
</constant>
<constant name="RENDER_INFO_MATERIAL_CHANGES_IN_FRAME" value="2" enum="RenderInfo">
+ Amount of material changes in frame.
</constant>
<constant name="RENDER_INFO_SHADER_CHANGES_IN_FRAME" value="3" enum="RenderInfo">
+ Amount of shader changes in frame.
</constant>
<constant name="RENDER_INFO_SURFACE_CHANGES_IN_FRAME" value="4" enum="RenderInfo">
+ Amount of surface changes in frame.
</constant>
<constant name="RENDER_INFO_DRAW_CALLS_IN_FRAME" value="5" enum="RenderInfo">
+ Amount of draw calls in frame.
</constant>
<constant name="RENDER_INFO_MAX" value="6" enum="RenderInfo">
+ Enum limiter. Do not use it directly.
</constant>
<constant name="DEBUG_DRAW_DISABLED" value="0" enum="DebugDraw">
+ Objects are displayed normally.
</constant>
<constant name="DEBUG_DRAW_UNSHADED" value="1" enum="DebugDraw">
+ Objects are displayed without light information.
</constant>
<constant name="DEBUG_DRAW_OVERDRAW" value="2" enum="DebugDraw">
</constant>
<constant name="DEBUG_DRAW_WIREFRAME" value="3" enum="DebugDraw">
+ Objects are displayed in wireframe style.
</constant>
<constant name="MSAA_DISABLED" value="0" enum="MSAA">
+ Multisample anti-aliasing mode disabled. This is the default value.
</constant>
<constant name="MSAA_2X" value="1" enum="MSAA">
</constant>
diff --git a/doc/classes/ViewportContainer.xml b/doc/classes/ViewportContainer.xml
index 19d4e462c9..a2cd9a0217 100644
--- a/doc/classes/ViewportContainer.xml
+++ b/doc/classes/ViewportContainer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ViewportContainer" inherits="Container" category="Core" version="3.0-beta">
+<class name="ViewportContainer" inherits="Container" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/ViewportTexture.xml b/doc/classes/ViewportTexture.xml
index e6a2b212bf..5943759c55 100644
--- a/doc/classes/ViewportTexture.xml
+++ b/doc/classes/ViewportTexture.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ViewportTexture" inherits="Texture" category="Core" version="3.0-beta">
+<class name="ViewportTexture" inherits="Texture" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/VisibilityEnabler.xml b/doc/classes/VisibilityEnabler.xml
index 67137e1408..faf0451bae 100644
--- a/doc/classes/VisibilityEnabler.xml
+++ b/doc/classes/VisibilityEnabler.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisibilityEnabler" inherits="VisibilityNotifier" category="Core" version="3.0-beta">
+<class name="VisibilityEnabler" inherits="VisibilityNotifier" category="Core" version="3.0-stable">
<brief_description>
Enable certain nodes only when visible.
</brief_description>
diff --git a/doc/classes/VisibilityEnabler2D.xml b/doc/classes/VisibilityEnabler2D.xml
index 45e15eb4b3..acd9d86c2a 100644
--- a/doc/classes/VisibilityEnabler2D.xml
+++ b/doc/classes/VisibilityEnabler2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisibilityEnabler2D" inherits="VisibilityNotifier2D" category="Core" version="3.0-beta">
+<class name="VisibilityEnabler2D" inherits="VisibilityNotifier2D" category="Core" version="3.0-stable">
<brief_description>
Enable certain nodes only when visible.
</brief_description>
diff --git a/doc/classes/VisibilityNotifier.xml b/doc/classes/VisibilityNotifier.xml
index 9e1c326633..94b08b78ed 100644
--- a/doc/classes/VisibilityNotifier.xml
+++ b/doc/classes/VisibilityNotifier.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisibilityNotifier" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="VisibilityNotifier" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Detects when the node is visible on screen.
</brief_description>
diff --git a/doc/classes/VisibilityNotifier2D.xml b/doc/classes/VisibilityNotifier2D.xml
index 327812db23..bcd52cf9ca 100644
--- a/doc/classes/VisibilityNotifier2D.xml
+++ b/doc/classes/VisibilityNotifier2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisibilityNotifier2D" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="VisibilityNotifier2D" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Detects when the node is visible on screen.
</brief_description>
diff --git a/doc/classes/VisualInstance.xml b/doc/classes/VisualInstance.xml
index bd66880719..1c54cb53ac 100644
--- a/doc/classes/VisualInstance.xml
+++ b/doc/classes/VisualInstance.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualInstance" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="VisualInstance" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml
index 0cba132de8..a546b86c57 100644
--- a/doc/classes/VisualServer.xml
+++ b/doc/classes/VisualServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualServer" inherits="Object" category="Core" version="3.0-beta">
+<class name="VisualServer" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
Server for anything visible.
</brief_description>
@@ -204,7 +204,7 @@
<argument index="4" name="antialiased" type="bool" default="false">
</argument>
<description>
- Adds a polyline, which is a line from mutliple points with a width, to the [CanvasItem]'s draw commands.
+ Adds a polyline, which is a line from multiple points with a width, to the [CanvasItem]'s draw commands.
</description>
</method>
<method name="canvas_item_add_primitive">
@@ -504,26 +504,26 @@
Sets if the canvas item (including its children) is visible.
</description>
</method>
- <method name="canvas_item_set_z">
+ <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="z" type="int">
+ <argument index="1" name="enabled" type="bool">
</argument>
<description>
- Sets the [CanvasItem]'s z order position.
+ 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_as_relative_to_parent">
+ <method name="canvas_item_set_z_index">
<return type="void">
</return>
<argument index="0" name="item" type="RID">
</argument>
- <argument index="1" name="enabled" type="bool">
+ <argument index="1" name="z_index" type="int">
</argument>
<description>
- If this is enabled, the z-position of the parent will be added to the childrens z-position.
+ 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">
@@ -669,7 +669,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
- The shadow mask. binary about wich layers this canvas light affects wich canvas item's shadows. See [LightOccluder2D] for more information on light masks.
+ The shadow mask. binary about which layers this canvas light affects which canvas item's shadows. See [LightOccluder2D] for more information on light masks.
</description>
</method>
<method name="canvas_light_set_layer_range">
@@ -913,7 +913,7 @@
Syncronizes threads.
</description>
</method>
- <method name="free">
+ <method name="free_rid">
<return type="void">
</return>
<argument index="0" name="rid" type="RID">
@@ -1506,7 +1506,7 @@
<argument index="1" name="cube_side" type="int" enum="VisualServer.CubeMapSide" default="0">
</argument>
<description>
- Returns a copy of a texture's image unless it's a CubeMap, in wich case it returns the [RID] of the image at one of the cubes sides.
+ Returns a copy of a texture's image unless it's a CubeMap, in which case it returns the [RID] of the image at one of the cubes sides.
</description>
</method>
<method name="texture_get_flags" qualifiers="const">
@@ -2155,10 +2155,10 @@
Primitive to draw consists of triangles.
</constant>
<constant name="PRIMITIVE_TRIANGLE_STRIP" value="5" enum="PrimitiveType">
- Primitive to draw consists of a triangle strip (the last 3 verticies are always combined to make a triangle).
+ Primitive to draw consists of a triangle strip (the last 3 vertices are always combined to make a triangle).
</constant>
<constant name="PRIMITIVE_TRIANGLE_FAN" value="6" enum="PrimitiveType">
- Primitive to draw consists of a triangle strip (the last 2 verticies are always combined with the first to make a triangle).
+ Primitive to draw consists of a triangle strip (the last 2 vertices are always combined with the first to make a triangle).
</constant>
<constant name="PRIMITIVE_MAX" value="7" enum="PrimitiveType">
Marks the primitive types endpoint. used internally.
diff --git a/doc/classes/WeakRef.xml b/doc/classes/WeakRef.xml
index 0641dc1349..0c4801b66e 100644
--- a/doc/classes/WeakRef.xml
+++ b/doc/classes/WeakRef.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="WeakRef" inherits="Reference" category="Core" version="3.0-beta">
+<class name="WeakRef" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Holds an [Object], but does not contribute to the reference count if the object is a reference.
</brief_description>
diff --git a/doc/classes/WindowDialog.xml b/doc/classes/WindowDialog.xml
index 5bdcfe238d..891e489be5 100644
--- a/doc/classes/WindowDialog.xml
+++ b/doc/classes/WindowDialog.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="WindowDialog" inherits="Popup" category="Core" version="3.0-beta">
+<class name="WindowDialog" inherits="Popup" category="Core" version="3.0-stable">
<brief_description>
Base class for window dialogs.
</brief_description>
diff --git a/doc/classes/World.xml b/doc/classes/World.xml
index 9011d39669..cad286a1ac 100644
--- a/doc/classes/World.xml
+++ b/doc/classes/World.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="World" inherits="Resource" category="Core" version="3.0-beta">
+<class name="World" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Class that has everything pertaining to a world.
</brief_description>
@@ -7,39 +7,28 @@
Class that has everything pertaining to a world. A physics space, a visual scenario and a sound space. Spatial nodes register their resources into the current world.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html
</tutorials>
<demos>
</demos>
<methods>
- <method name="get_direct_space_state">
- <return type="PhysicsDirectSpaceState">
- </return>
- <description>
- Returns the World's physics space.
- </description>
- </method>
- <method name="get_scenario" qualifiers="const">
- <return type="RID">
- </return>
- <description>
- Returns the World's visual scenario.
- </description>
- </method>
- <method name="get_space" qualifiers="const">
- <return type="RID">
- </return>
- <description>
- Returns the World's sound space.
- </description>
- </method>
</methods>
<members>
+ <member name="direct_space_state" type="PhysicsDirectSpaceState" setter="" getter="get_direct_space_state">
+ The World's physics direct space state, used for making various queries. Might be used only during [code]_physics_process[/code].
+ </member>
<member name="environment" type="Environment" setter="set_environment" getter="get_environment">
The World's [Environment].
</member>
<member name="fallback_environment" type="Environment" setter="set_fallback_environment" getter="get_fallback_environment">
The World's fallback_environment will be used if the World's [Environment] fails or is missing.
</member>
+ <member name="scenario" type="RID" setter="" getter="get_scenario">
+ The World's visual scenario.
+ </member>
+ <member name="space" type="RID" setter="" getter="get_space">
+ The World's physics space.
+ </member>
</members>
<constants>
</constants>
diff --git a/doc/classes/World2D.xml b/doc/classes/World2D.xml
index 93c88968ac..1a2745e6cb 100644
--- a/doc/classes/World2D.xml
+++ b/doc/classes/World2D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="World2D" inherits="Resource" category="Core" version="3.0-beta">
+<class name="World2D" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
Class that has everything pertaining to a 2D world.
</brief_description>
@@ -7,32 +7,23 @@
Class that has everything pertaining to a 2D world. A physics space, a visual scenario and a sound space. 2D nodes register their resources into the current 2D world.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/physics/ray-casting.html
</tutorials>
<demos>
</demos>
<methods>
- <method name="get_canvas">
- <return type="RID">
- </return>
- <description>
- Retrieve the [RID] of this world's canvas resource. Used by the [VisualServer] for 2D drawing.
- </description>
- </method>
- <method name="get_direct_space_state">
- <return type="Physics2DDirectSpaceState">
- </return>
- <description>
- Retrieve the state of this world's physics space. This allows arbitrary querying for collision.
- </description>
- </method>
- <method name="get_space">
- <return type="RID">
- </return>
- <description>
- Retrieve the [RID] of this world's physics space resource. Used by the [Physics2DServer] for 2D physics, treating it as both a space and an area.
- </description>
- </method>
</methods>
+ <members>
+ <member name="canvas" type="RID" setter="" getter="get_canvas">
+ The [RID] of this world's canvas resource. Used by the [VisualServer] for 2D drawing.
+ </member>
+ <member name="direct_space_state" type="Physics2DDirectSpaceState" setter="" getter="get_direct_space_state">
+ The state of this world's physics space. This allows arbitrary querying for collision.
+ </member>
+ <member name="space" type="RID" setter="" getter="get_space">
+ The [RID] of this world's physics space resource. Used by the [Physics2DServer] for 2D physics, treating it as both a space and an area.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index 44f2086e51..468e618e72 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -1,12 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="WorldEnvironment" inherits="Node" category="Core" version="3.0-beta">
+<class name="WorldEnvironment" inherits="Node" category="Core" version="3.0-stable">
<brief_description>
- Sets environment properties for the entire scene
+ Default environment properties for the entire scene (post-processing effects, lightning and background settings).
</brief_description>
<description>
- The [code]WorldEnvironment[/code] node can be added to a scene in order to set default [Environment] variables for the scene. The [code]WorldEnvironment[/code] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [code]WorldEnvironment[/code] may be instanced in a given scene at a time. The [code]WorldEnvironment[/code] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox).
+ The [code]WorldEnvironment[/code] node is used to configure the default [Environment] for the scene.
+ The parameters defined in the [code]WorldEnvironment[/code] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [code]WorldEnvironment[/code] may be instanced in a given scene at a time.
+ The [code]WorldEnvironment[/code] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox). Usually, these are added in order to improve the realism/color balance of the scene.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/environment_and_post_processing.html
</tutorials>
<demos>
</demos>
@@ -14,6 +17,7 @@
</methods>
<members>
<member name="environment" type="Environment" setter="set_environment" getter="get_environment">
+ The [Environment] resource used by this [code]WorldEnvironment[/code], defining the default properties.
</member>
</members>
<constants>
diff --git a/doc/classes/XMLParser.xml b/doc/classes/XMLParser.xml
index 2665e594e0..a404074401 100644
--- a/doc/classes/XMLParser.xml
+++ b/doc/classes/XMLParser.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XMLParser" inherits="Reference" category="Core" version="3.0-beta">
+<class name="XMLParser" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Low-level class for creating parsers for XML files.
</brief_description>
diff --git a/doc/classes/YSort.xml b/doc/classes/YSort.xml
index b1a8980141..e4818df62b 100644
--- a/doc/classes/YSort.xml
+++ b/doc/classes/YSort.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="YSort" inherits="Node2D" category="Core" version="3.0-beta">
+<class name="YSort" inherits="Node2D" category="Core" version="3.0-stable">
<brief_description>
Sort all child nodes based on their Y positions.
</brief_description>
diff --git a/doc/classes/bool.xml b/doc/classes/bool.xml
index 2437d53bda..cce5dd3b45 100644
--- a/doc/classes/bool.xml
+++ b/doc/classes/bool.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="bool" category="Built-In Types" version="3.0-beta">
+<class name="bool" category="Built-In Types" version="3.0-stable">
<brief_description>
Boolean built-in type
</brief_description>
diff --git a/doc/classes/float.xml b/doc/classes/float.xml
index e7c46beb37..812bd9b3a9 100644
--- a/doc/classes/float.xml
+++ b/doc/classes/float.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="float" category="Built-In Types" version="3.0-beta">
+<class name="float" category="Built-In Types" version="3.0-stable">
<brief_description>
Float built-in type
</brief_description>
diff --git a/doc/classes/int.xml b/doc/classes/int.xml
index a59bce0309..49b8b3949a 100644
--- a/doc/classes/int.xml
+++ b/doc/classes/int.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="int" category="Built-In Types" version="3.0-beta">
+<class name="int" category="Built-In Types" version="3.0-stable">
<brief_description>
Integer built-in type.
</brief_description>
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index cd0108019b..492f3b6d54 100644
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -276,6 +276,15 @@ def make_type(t):
return ':ref:`' + t + '<class_' + t.lower() + '>`'
return t
+def make_enum(t):
+ global class_names
+ p = t.find(".")
+ if p >= 0:
+ c = t[0:p]
+ e = t[p+1:]
+ if c in class_names:
+ return ':ref:`' + e + '<enum_' + c.lower() + '_' + e.lower() + '>`'
+ return t
def make_method(
f,
@@ -470,7 +479,10 @@ def make_rst_class(node):
# Leading two spaces necessary to prevent breaking the <ul>
f.write(" .. _class_" + name + "_" + c.attrib['name'] + ":\n\n")
s = '- '
- s += make_type(c.attrib['type']) + ' '
+ if 'enum' in c.attrib:
+ s += make_enum(c.attrib['enum']) + ' '
+ else:
+ s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '':
s += ' - ' + rstize_text(c.text.strip(), name)
@@ -478,9 +490,20 @@ def make_rst_class(node):
f.write('\n')
constants = node.find('constants')
+ consts = []
+ enum_names = set()
+ enums = []
if constants != None and len(list(constants)) > 0:
- f.write(make_heading('Numeric Constants', '-'))
for c in list(constants):
+ if 'enum' in c.attrib:
+ enum_names.add(c.attrib['enum'])
+ enums.append(c)
+ else:
+ consts.append(c)
+
+ if len(consts) > 0:
+ f.write(make_heading('Numeric Constants', '-'))
+ for c in list(consts):
s = '- '
s += '**' + c.attrib['name'] + '**'
if 'value' in c.attrib:
@@ -489,6 +512,24 @@ def make_rst_class(node):
s += ' --- ' + rstize_text(c.text.strip(), name)
f.write(s + '\n')
f.write('\n')
+
+ if len(enum_names) > 0:
+ f.write(make_heading('Enums', '-'))
+ for e in enum_names:
+ f.write(" .. _enum_" + name + "_" + e + ":\n\n")
+ f.write("enum **" + e + "**\n\n")
+ for c in enums:
+ if c.attrib['enum'] != e:
+ continue
+ s = '- '
+ s += '**' + c.attrib['name'] + '**'
+ if 'value' in c.attrib:
+ s += ' = **' + c.attrib['value'] + '**'
+ if c.text.strip() != '':
+ s += ' --- ' + rstize_text(c.text.strip(), name)
+ f.write(s + '\n')
+ f.write('\n')
+ f.write('\n')
descr = node.find('description')
if descr != None and descr.text.strip() != '':
diff --git a/drivers/alsa/audio_driver_alsa.cpp b/drivers/alsa/audio_driver_alsa.cpp
index b54a1ce0fc..0bb03d23ea 100644
--- a/drivers/alsa/audio_driver_alsa.cpp
+++ b/drivers/alsa/audio_driver_alsa.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_alsa.h"
#ifdef ALSA_ENABLED
diff --git a/drivers/alsa/audio_driver_alsa.h b/drivers/alsa/audio_driver_alsa.h
index 8fcc368b65..8ed60dfdc7 100644
--- a/drivers/alsa/audio_driver_alsa.h
+++ b/drivers/alsa/audio_driver_alsa.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "servers/audio_server.h"
#ifdef ALSA_ENABLED
diff --git a/drivers/convex_decomp/b2d_decompose.cpp b/drivers/convex_decomp/b2d_decompose.cpp
index 07be20979d..d1f7a4d3c3 100644
--- a/drivers/convex_decomp/b2d_decompose.cpp
+++ b/drivers/convex_decomp/b2d_decompose.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "b2d_decompose.h"
#include "thirdparty/b2d_convexdecomp/b2Polygon.h"
diff --git a/drivers/convex_decomp/b2d_decompose.h b/drivers/convex_decomp/b2d_decompose.h
index 117fd2b5b0..068689d73d 100644
--- a/drivers/convex_decomp/b2d_decompose.h
+++ b/drivers/convex_decomp/b2d_decompose.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef B2D_DECOMPOSE_H
#define B2D_DECOMPOSE_H
diff --git a/drivers/coreaudio/audio_driver_coreaudio.cpp b/drivers/coreaudio/audio_driver_coreaudio.cpp
index 4e940e91c9..6db9aebeed 100644
--- a/drivers/coreaudio/audio_driver_coreaudio.cpp
+++ b/drivers/coreaudio/audio_driver_coreaudio.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef COREAUDIO_ENABLED
#include "audio_driver_coreaudio.h"
diff --git a/drivers/coreaudio/audio_driver_coreaudio.h b/drivers/coreaudio/audio_driver_coreaudio.h
index d04d789a70..51256085d8 100644
--- a/drivers/coreaudio/audio_driver_coreaudio.h
+++ b/drivers/coreaudio/audio_driver_coreaudio.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef COREAUDIO_ENABLED
#ifndef AUDIO_DRIVER_COREAUDIO_H
diff --git a/drivers/gl_context/context_gl.cpp b/drivers/gl_context/context_gl.cpp
index 8cb5c3e8c6..aa36658698 100644
--- a/drivers/gl_context/context_gl.cpp
+++ b/drivers/gl_context/context_gl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "context_gl.h"
#if defined(OPENGL_ENABLED) || defined(GLES_ENABLED)
diff --git a/drivers/gl_context/context_gl.h b/drivers/gl_context/context_gl.h
index e6cb586bca..60781a3453 100644
--- a/drivers/gl_context/context_gl.h
+++ b/drivers/gl_context/context_gl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTEXT_GL_H
#define CONTEXT_GL_H
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index 52269a44fe..37a2450377 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rasterizer_canvas_gles3.h"
#include "os/os.h"
#include "project_settings.h"
@@ -1174,28 +1175,46 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
} else {
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE);
}
} break;
case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_ADD: {
glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_SRC_ALPHA, GL_ONE);
+ } else {
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_ZERO, GL_ONE);
+ }
} break;
case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_SUB: {
glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_SRC_ALPHA, GL_ONE);
+ } else {
+ glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE, GL_ZERO, GL_ONE);
+ }
} break;
case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_MUL: {
glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_DST_COLOR, GL_ZERO);
+ if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
+ glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_DST_ALPHA, GL_ZERO);
+ } else {
+ glBlendFuncSeparate(GL_DST_COLOR, GL_ZERO, GL_ZERO, GL_ONE);
+ }
+
} break;
case RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_PMALPHA: {
glBlendEquation(GL_FUNC_ADD);
- glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ if (storage->frame.current_rt && storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_TRANSPARENT]) {
+ glBlendFuncSeparate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+ } else {
+ glBlendFuncSeparate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE);
+ }
+
} break;
}
diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h
index f4d97bd727..9f1a9466f1 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.h
+++ b/drivers/gles3/rasterizer_canvas_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RASTERIZERCANVASGLES3_H
#define RASTERIZERCANVASGLES3_H
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index 5f3b42abf6..b43deab58f 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rasterizer_gles3.h"
#include "gl_context/context_gl.h"
@@ -338,6 +339,15 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re
RasterizerStorageGLES3::RenderTarget *rt = storage->render_target_owner.getornull(p_render_target);
ERR_FAIL_COND(!rt);
+#if 1
+
+ Size2 win_size = OS::get_singleton()->get_window_size();
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, rt->fbo);
+ glReadBuffer(GL_COLOR_ATTACHMENT0);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
+ glBlitFramebuffer(0, 0, rt->width, rt->height, p_screen_rect.position.x, win_size.height - p_screen_rect.position.y - p_screen_rect.size.height, p_screen_rect.position.x + p_screen_rect.size.width, win_size.height - p_screen_rect.position.y, GL_COLOR_BUFFER_BIT, GL_NEAREST);
+
+#else
canvas->canvas_begin();
glDisable(GL_BLEND);
glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES3::system_fbo);
@@ -350,6 +360,7 @@ void RasterizerGLES3::blit_render_target_to_screen(RID p_render_target, const Re
canvas->draw_generic_textured_rect(p_screen_rect, Rect2(0, 0, 1, -1));
glBindTexture(GL_TEXTURE_2D, 0);
canvas->canvas_end();
+#endif
}
void RasterizerGLES3::end_frame(bool p_swap_buffers) {
diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h
index a8342104cc..5213101778 100644
--- a/drivers/gles3/rasterizer_gles3.h
+++ b/drivers/gles3/rasterizer_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RASTERIZERGLES3_H
#define RASTERIZERGLES3_H
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index ed29cc2de6..da6df7198d 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rasterizer_scene_gles3.h"
#include "math_funcs.h"
#include "os/os.h"
@@ -2229,7 +2230,7 @@ void RasterizerSceneGLES3::_add_geometry(RasterizerStorageGLES3::Geometry *p_geo
void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_depth_pass, bool p_shadow_pass) {
- bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture;
+ bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture || p_material->shader->spatial.uses_depth_texture;
bool has_blend_alpha = p_material->shader->spatial.blend_mode != RasterizerStorageGLES3::Shader::Spatial::BLEND_MODE_MIX;
bool has_alpha = has_base_alpha || has_blend_alpha;
@@ -2253,7 +2254,7 @@ void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::G
if (p_depth_pass) {
- if (has_blend_alpha || (has_base_alpha && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))
+ if (has_blend_alpha || p_material->shader->spatial.uses_depth_texture || (has_base_alpha && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))
return; //bye
if (!p_material->shader->spatial.uses_alpha_scissor && !p_material->shader->spatial.writes_modelview_or_projection && !p_material->shader->spatial.uses_vertex && !p_material->shader->spatial.uses_discard && p_material->shader->spatial.depth_draw_mode != RasterizerStorageGLES3::Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS) {
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index 07a58c2945..1b99e119ce 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RASTERIZERSCENEGLES3_H
#define RASTERIZERSCENEGLES3_H
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 5ce544ecfb..0fc095a868 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rasterizer_storage_gles3.h"
#include "project_settings.h"
#include "rasterizer_canvas_gles3.h"
@@ -875,11 +876,34 @@ Ref<Image> RasterizerStorageGLES3::texture_get_data(RID p_texture, VS::CubeMapSi
}
}
+ Image::Format img_format;
+
+ //convert special case RGB10_A2 to RGBA8 because it's not a supported image format
+ if (texture->gl_internal_format_cache == GL_RGB10_A2) {
+
+ img_format = Image::FORMAT_RGBA8;
+
+ uint32_t *ptr = (uint32_t *)wb.ptr();
+ uint32_t num_pixels = data_size / 4;
+
+ for (int ofs = 0; ofs < num_pixels; ofs++) {
+ uint32_t px = ptr[ofs];
+ uint32_t a = px >> 30 & 0xFF;
+
+ ptr[ofs] = (px >> 2 & 0xFF) |
+ (px >> 12 & 0xFF) << 8 |
+ (px >> 22 & 0xFF) << 16 |
+ (a | a << 2 | a << 4 | a << 6) << 24;
+ }
+ } else {
+ img_format = texture->format;
+ }
+
wb = PoolVector<uint8_t>::Write();
data.resize(data_size);
- Image *img = memnew(Image(texture->alloc_width, texture->alloc_height, texture->mipmaps > 1 ? true : false, texture->format, data));
+ Image *img = memnew(Image(texture->alloc_width, texture->alloc_height, texture->mipmaps > 1 ? true : false, img_format, data));
return Ref<Image>(img);
#else
@@ -1618,6 +1642,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const {
p_shader->spatial.uses_time = false;
p_shader->spatial.uses_vertex_lighting = false;
p_shader->spatial.uses_screen_texture = false;
+ p_shader->spatial.uses_depth_texture = false;
p_shader->spatial.uses_vertex = false;
p_shader->spatial.writes_modelview_or_projection = false;
p_shader->spatial.uses_world_coordinates = false;
@@ -1649,6 +1674,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const {
shaders.actions_scene.usage_flag_pointers["SSS_STRENGTH"] = &p_shader->spatial.uses_sss;
shaders.actions_scene.usage_flag_pointers["DISCARD"] = &p_shader->spatial.uses_discard;
shaders.actions_scene.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->spatial.uses_screen_texture;
+ shaders.actions_scene.usage_flag_pointers["DEPTH_TEXTURE"] = &p_shader->spatial.uses_depth_texture;
shaders.actions_scene.usage_flag_pointers["TIME"] = &p_shader->spatial.uses_time;
shaders.actions_scene.write_flag_pointers["MODELVIEW_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection;
@@ -2181,10 +2207,15 @@ _FORCE_INLINE_ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataTy
Transform2D v = value;
GLfloat *gui = (GLfloat *)data;
+ //in std140 members of mat2 are treated as vec4s
gui[0] = v.elements[0][0];
gui[1] = v.elements[0][1];
- gui[2] = v.elements[1][0];
- gui[3] = v.elements[1][1];
+ gui[2] = 0;
+ gui[3] = 0;
+ gui[4] = v.elements[1][0];
+ gui[5] = v.elements[1][1];
+ gui[6] = 0;
+ gui[7] = 0;
} break;
case ShaderLanguage::TYPE_MAT3: {
@@ -2359,9 +2390,15 @@ _FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type,
case ShaderLanguage::TYPE_MAT2: {
GLfloat *gui = (GLfloat *)data;
- for (int i = 0; i < 2; i++) {
- gui[i] = value[i].real;
- }
+ //in std140 members of mat2 are treated as vec4s
+ gui[0] = value[0].real;
+ gui[1] = value[1].real;
+ gui[2] = 0;
+ gui[3] = 0;
+ gui[4] = value[2].real;
+ gui[5] = value[3].real;
+ gui[6] = 0;
+ gui[7] = 0;
} break;
case ShaderLanguage::TYPE_MAT3: {
@@ -2415,11 +2452,14 @@ _FORCE_INLINE_ static void _fill_std140_ubo_empty(ShaderLanguage::DataType type,
case ShaderLanguage::TYPE_BVEC4:
case ShaderLanguage::TYPE_IVEC4:
case ShaderLanguage::TYPE_UVEC4:
- case ShaderLanguage::TYPE_VEC4:
- case ShaderLanguage::TYPE_MAT2: {
+ case ShaderLanguage::TYPE_VEC4: {
zeromem(data, 16);
} break;
+ case ShaderLanguage::TYPE_MAT2: {
+
+ zeromem(data, 32);
+ } break;
case ShaderLanguage::TYPE_MAT3: {
zeromem(data, 48);
@@ -5329,7 +5369,7 @@ void RasterizerStorageGLES3::particles_set_emitting(RID p_particles, bool p_emit
Particles *particles = particles_owner.getornull(p_particles);
ERR_FAIL_COND(!particles);
if (p_emitting != particles->emitting) {
- // Restart is overriden by set_emitting
+ // Restart is overridden by set_emitting
particles->restart_request = false;
}
particles->emitting = p_emitting;
@@ -5677,6 +5717,7 @@ void RasterizerStorageGLES3::_particles_process(Particles *p_particles, float p_
SWAP(p_particles->particle_buffers[0], p_particles->particle_buffers[1]);
SWAP(p_particles->particle_vaos[0], p_particles->particle_vaos[1]);
+ glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0);
glBindVertexArray(0);
/* //debug particles :D
glBindBuffer(GL_ARRAY_BUFFER, p_particles->particle_buffers[0]);
@@ -6903,6 +6944,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) {
// delete the texture
GIProbe *gi_probe = gi_probe_owner.get(p_rid);
+ gi_probe->instance_remove_deps();
gi_probe_owner.free(p_rid);
memdelete(gi_probe);
@@ -6918,6 +6960,7 @@ bool RasterizerStorageGLES3::free(RID p_rid) {
// delete the texture
LightmapCapture *lightmap_capture = lightmap_capture_data_owner.get(p_rid);
+ lightmap_capture->instance_remove_deps();
gi_probe_owner.free(p_rid);
memdelete(lightmap_capture);
@@ -6943,6 +6986,11 @@ bool RasterizerStorageGLES3::free(RID p_rid) {
glDeleteTextures(1, &cls->distance);
canvas_light_shadow_owner.free(p_rid);
memdelete(cls);
+ } else if (particles_owner.owns(p_rid)) {
+ Particles *particles = particles_owner.get(p_rid);
+ particles->instance_remove_deps();
+ particles_owner.free(p_rid);
+ memdelete(particles);
} else {
return false;
}
@@ -7242,8 +7290,6 @@ void RasterizerStorageGLES3::initialize() {
config.force_vertex_shading = GLOBAL_GET("rendering/quality/shading/force_vertex_shading");
- GLOBAL_DEF("rendering/quality/depth_prepass/disable", false);
-
String renderer = (const char *)glGetString(GL_RENDERER);
config.no_depth_prepass = !bool(GLOBAL_GET("rendering/quality/depth_prepass/enable"));
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 4ef4926a1a..ef2b247266 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RASTERIZERSTORAGEGLES3_H
#define RASTERIZERSTORAGEGLES3_H
@@ -472,6 +473,7 @@ public:
bool uses_discard;
bool uses_sss;
bool uses_screen_texture;
+ bool uses_depth_texture;
bool uses_time;
bool writes_modelview_or_projection;
bool uses_vertex_lighting;
@@ -1180,7 +1182,7 @@ public:
clear = true;
inactive = true;
- inactive_time = false;
+ inactive_time = 0.0;
glGenBuffers(2, particle_buffers);
glGenVertexArrays(2, particle_vaos);
diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp
index 8b8a7dd807..f1d7085d54 100644
--- a/drivers/gles3/shader_compiler_gles3.cpp
+++ b/drivers/gles3/shader_compiler_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_compiler_gles3.h"
#include "os/os.h"
@@ -55,6 +56,41 @@ static int _get_datatype_size(SL::DataType p_type) {
case SL::TYPE_VOID: return 0;
case SL::TYPE_BOOL: return 4;
case SL::TYPE_BVEC2: return 8;
+ case SL::TYPE_BVEC3: return 12;
+ case SL::TYPE_BVEC4: return 16;
+ case SL::TYPE_INT: return 4;
+ case SL::TYPE_IVEC2: return 8;
+ case SL::TYPE_IVEC3: return 12;
+ case SL::TYPE_IVEC4: return 16;
+ case SL::TYPE_UINT: return 4;
+ case SL::TYPE_UVEC2: return 8;
+ case SL::TYPE_UVEC3: return 12;
+ case SL::TYPE_UVEC4: return 16;
+ case SL::TYPE_FLOAT: return 4;
+ case SL::TYPE_VEC2: return 8;
+ case SL::TYPE_VEC3: return 12;
+ case SL::TYPE_VEC4: return 16;
+ case SL::TYPE_MAT2:
+ return 32; //4 * 4 + 4 * 4
+ case SL::TYPE_MAT3:
+ return 48; // 4 * 4 + 4 * 4 + 4 * 4
+ case SL::TYPE_MAT4: return 64;
+ case SL::TYPE_SAMPLER2D: return 16;
+ case SL::TYPE_ISAMPLER2D: return 16;
+ case SL::TYPE_USAMPLER2D: return 16;
+ case SL::TYPE_SAMPLERCUBE: return 16;
+ }
+
+ ERR_FAIL_V(0);
+}
+
+static int _get_datatype_alignment(SL::DataType p_type) {
+
+ switch (p_type) {
+
+ case SL::TYPE_VOID: return 0;
+ case SL::TYPE_BOOL: return 4;
+ case SL::TYPE_BVEC2: return 8;
case SL::TYPE_BVEC3: return 16;
case SL::TYPE_BVEC4: return 16;
case SL::TYPE_INT: return 4;
@@ -70,8 +106,8 @@ static int _get_datatype_size(SL::DataType p_type) {
case SL::TYPE_VEC3: return 16;
case SL::TYPE_VEC4: return 16;
case SL::TYPE_MAT2: return 16;
- case SL::TYPE_MAT3: return 48;
- case SL::TYPE_MAT4: return 64;
+ case SL::TYPE_MAT3: return 16;
+ case SL::TYPE_MAT4: return 16;
case SL::TYPE_SAMPLER2D: return 16;
case SL::TYPE_ISAMPLER2D: return 16;
case SL::TYPE_USAMPLER2D: return 16;
@@ -80,7 +116,6 @@ static int _get_datatype_size(SL::DataType p_type) {
ERR_FAIL_V(0);
}
-
static String _interpstr(SL::DataInterpolation p_interp) {
switch (p_interp) {
@@ -266,7 +301,7 @@ void ShaderCompilerGLES3::_dump_function_deps(SL::ShaderNode *p_node, const Stri
}
}
-String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions) {
+String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning) {
String code;
@@ -340,7 +375,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
}
uniform_defines[E->get().order] = ucode;
uniform_sizes[E->get().order] = _get_datatype_size(E->get().type);
- uniform_alignments[E->get().order] = MIN(16, _get_datatype_size(E->get().type));
+ uniform_alignments[E->get().order] = _get_datatype_alignment(E->get().type);
}
p_actions.uniforms->insert(E->key(), E->get());
@@ -349,6 +384,27 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
for (int i = 0; i < max_uniforms; i++) {
r_gen_code.uniforms += uniform_defines[i];
}
+#if 1
+ // add up
+ int offset = 0;
+ for (int i = 0; i < uniform_sizes.size(); i++) {
+
+ int align = offset % uniform_alignments[i];
+
+ if (align != 0) {
+ offset += uniform_alignments[i] - align;
+ }
+
+ r_gen_code.uniform_offsets.push_back(offset);
+
+ offset += uniform_sizes[i];
+ }
+
+ r_gen_code.uniform_total_size = offset;
+ if (r_gen_code.uniform_total_size % 16 != 0) { //UBO sizes must be multiples of 16
+ r_gen_code.uniform_total_size += r_gen_code.uniform_total_size % 16;
+ }
+#else
// add up
for (int i = 0; i < uniform_sizes.size(); i++) {
@@ -388,6 +444,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
} else {
r_gen_code.uniform_total_size = 0;
}
+#endif
for (Map<StringName, SL::ShaderNode::Varying>::Element *E = pnode->varyings.front(); E; E = E->next()) {
@@ -406,7 +463,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
//code for functions
for (int i = 0; i < pnode->functions.size(); i++) {
SL::FunctionNode *fnode = pnode->functions[i].function;
- function_code[fnode->name] = _dump_node_code(fnode->body, p_level + 1, r_gen_code, p_actions, p_default_actions);
+ function_code[fnode->name] = _dump_node_code(fnode->body, p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning);
}
//place functions in actual code
@@ -454,7 +511,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
for (int i = 0; i < bnode->statements.size(); i++) {
- String scode = _dump_node_code(bnode->statements[i], p_level, r_gen_code, p_actions, p_default_actions);
+ String scode = _dump_node_code(bnode->statements[i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
if (bnode->statements[i]->type == SL::Node::TYPE_CONTROL_FLOW || bnode->single_statement) {
code += scode; //use directly
@@ -480,7 +537,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
declaration += _mkid(vdnode->declarations[i].name);
if (vdnode->declarations[i].initializer) {
declaration += "=";
- declaration += _dump_node_code(vdnode->declarations[i].initializer, p_level, r_gen_code, p_actions, p_default_actions);
+ declaration += _dump_node_code(vdnode->declarations[i].initializer, p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
}
}
@@ -489,6 +546,10 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
case SL::Node::TYPE_VARIABLE: {
SL::VariableNode *vnode = (SL::VariableNode *)p_node;
+ if (p_assigning && p_actions.write_flag_pointers.has(vnode->name)) {
+ *p_actions.write_flag_pointers[vnode->name] = true;
+ }
+
if (p_default_actions.usage_defines.has(vnode->name) && !used_name_defines.has(vnode->name)) {
String define = p_default_actions.usage_defines[vnode->name];
if (define.begins_with("@")) {
@@ -539,24 +600,18 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
case SL::OP_ASSIGN_BIT_AND:
case SL::OP_ASSIGN_BIT_OR:
case SL::OP_ASSIGN_BIT_XOR:
- if (onode->arguments[0]->type == SL::Node::TYPE_VARIABLE) {
- SL::VariableNode *vnode = (SL::VariableNode *)onode->arguments[0];
- if (p_actions.write_flag_pointers.has(vnode->name)) {
- *p_actions.write_flag_pointers[vnode->name] = true;
- }
- }
- code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions);
+ code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, true) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
break;
case SL::OP_BIT_INVERT:
case SL::OP_NEGATE:
case SL::OP_NOT:
case SL::OP_DECREMENT:
case SL::OP_INCREMENT:
- code = _opstr(onode->op) + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions);
+ code = _opstr(onode->op) + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
break;
case SL::OP_POST_DECREMENT:
case SL::OP_POST_INCREMENT:
- code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op);
+ code = _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + _opstr(onode->op);
break;
case SL::OP_CALL:
case SL::OP_CONSTRUCT: {
@@ -583,31 +638,31 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
for (int i = 1; i < onode->arguments.size(); i++) {
if (i > 1)
code += ", ";
- code += _dump_node_code(onode->arguments[i], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
}
code += ")";
} break;
case SL::OP_INDEX: {
- code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
code += "[";
- code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
code += "]";
} break;
case SL::OP_SELECT_IF: {
- code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
code += "?";
- code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
code += ":";
- code += _dump_node_code(onode->arguments[2], p_level, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(onode->arguments[2], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
} break;
default: {
- code = "(" + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions) + ")";
+ code = "(" + _dump_node_code(onode->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + _opstr(onode->op) + _dump_node_code(onode->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")";
break;
}
}
@@ -617,29 +672,29 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
SL::ControlFlowNode *cfnode = (SL::ControlFlowNode *)p_node;
if (cfnode->flow_op == SL::FLOW_OP_IF) {
- code += _mktab(p_level) + "if (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ")\n";
- code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions);
+ code += _mktab(p_level) + "if (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")\n";
+ code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning);
if (cfnode->blocks.size() == 2) {
code += _mktab(p_level) + "else\n";
- code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning);
}
} else if (cfnode->flow_op == SL::FLOW_OP_WHILE) {
- code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ")\n";
- code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions);
+ code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")\n";
+ code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning);
} else if (cfnode->flow_op == SL::FLOW_OP_FOR) {
- String left = _dump_node_code(cfnode->blocks[0], p_level, r_gen_code, p_actions, p_default_actions);
- String middle = _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions);
- String right = _dump_node_code(cfnode->expressions[1], p_level, r_gen_code, p_actions, p_default_actions);
+ String left = _dump_node_code(cfnode->blocks[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
+ String middle = _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
+ String right = _dump_node_code(cfnode->expressions[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
code += _mktab(p_level) + "for (" + left + ";" + middle + ";" + right + ")\n";
- code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions);
+ code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning);
} else if (cfnode->flow_op == SL::FLOW_OP_RETURN) {
if (cfnode->expressions.size()) {
- code = "return " + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions) + ";";
+ code = "return " + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ";";
} else {
code = "return;";
}
@@ -657,7 +712,7 @@ String ShaderCompilerGLES3::_dump_node_code(SL::Node *p_node, int p_level, Gener
} break;
case SL::Node::TYPE_MEMBER: {
SL::MemberNode *mnode = (SL::MemberNode *)p_node;
- code = _dump_node_code(mnode->owner, p_level, r_gen_code, p_actions, p_default_actions) + "." + mnode->name;
+ code = _dump_node_code(mnode->owner, p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + "." + mnode->name;
} break;
}
@@ -693,7 +748,7 @@ Error ShaderCompilerGLES3::compile(VS::ShaderMode p_mode, const String &p_code,
used_rmode_defines.clear();
used_flag_pointers.clear();
- _dump_node_code(parser.get_shader(), 1, r_gen_code, *p_actions, actions[p_mode]);
+ _dump_node_code(parser.get_shader(), 1, r_gen_code, *p_actions, actions[p_mode], false);
if (r_gen_code.uniform_total_size) { //uniforms used?
int md = sizeof(float) * 4;
@@ -716,7 +771,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
actions[VS::SHADER_CANVAS_ITEM].renames["WORLD_MATRIX"] = "modelview_matrix";
actions[VS::SHADER_CANVAS_ITEM].renames["PROJECTION_MATRIX"] = "projection_matrix";
- actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] == "extra_matrix";
+ actions[VS::SHADER_CANVAS_ITEM].renames["EXTRA_MATRIX"] = "extra_matrix";
actions[VS::SHADER_CANVAS_ITEM].renames["TIME"] = "time";
actions[VS::SHADER_CANVAS_ITEM].renames["AT_LIGHT_PASS"] = "at_light_pass";
actions[VS::SHADER_CANVAS_ITEM].renames["INSTANCE_CUSTOM"] = "instance_custom";
diff --git a/drivers/gles3/shader_compiler_gles3.h b/drivers/gles3/shader_compiler_gles3.h
index 0d79b0f4cc..85e8e02b8e 100644
--- a/drivers/gles3/shader_compiler_gles3.h
+++ b/drivers/gles3/shader_compiler_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADERCOMPILERGLES3_H
#define SHADERCOMPILERGLES3_H
@@ -77,7 +78,7 @@ private:
};
void _dump_function_deps(ShaderLanguage::ShaderNode *p_node, const StringName &p_for_func, const Map<StringName, String> &p_func_code, String &r_to_add, Set<StringName> &added);
- String _dump_node_code(ShaderLanguage::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions);
+ String _dump_node_code(ShaderLanguage::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning);
StringName current_func_name;
StringName vertex_name;
diff --git a/drivers/gles3/shader_gles3.cpp b/drivers/gles3/shader_gles3.cpp
index 6f7b58e922..08b8a1cc26 100644
--- a/drivers/gles3/shader_gles3.cpp
+++ b/drivers/gles3/shader_gles3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_gles3.h"
#include "print_string.h"
diff --git a/drivers/gles3/shader_gles3.h b/drivers/gles3/shader_gles3.h
index 95119a9718..996655615e 100644
--- a/drivers/gles3/shader_gles3.h
+++ b/drivers/gles3/shader_gles3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_GLES3_H
#define SHADER_GLES3_H
diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl
index 0b8230234b..f436ef06f7 100644
--- a/drivers/gles3/shaders/canvas.glsl
+++ b/drivers/gles3/shaders/canvas.glsl
@@ -42,7 +42,7 @@ uniform highp mat4 modelview_matrix;
uniform highp mat4 extra_matrix;
-out mediump vec2 uv_interp;
+out highp vec2 uv_interp;
out mediump vec4 color_interp;
#ifdef USE_NINEPATCH
@@ -207,7 +207,7 @@ uniform mediump sampler2D color_texture; // texunit:0
uniform highp vec2 color_texpixel_size;
uniform mediump sampler2D normal_texture; // texunit:1
-in mediump vec2 uv_interp;
+in highp vec2 uv_interp;
in mediump vec4 color_interp;
@@ -285,7 +285,7 @@ MATERIAL_UNIFORMS
FRAGMENT_SHADER_GLOBALS
-void light_compute(inout vec3 light,vec3 light_vec,float light_height,vec4 light_color,vec2 light_uv,vec4 shadow,vec3 normal,vec2 uv,vec2 screen_uv,vec4 color) {
+void light_compute(inout vec4 light,vec2 light_vec,float light_height,vec4 light_color,vec2 light_uv,vec4 shadow,vec3 normal,vec2 uv,vec2 screen_uv,vec4 color) {
#if defined(USE_LIGHT_SHADER_CODE)
diff --git a/drivers/gles3/shaders/copy.glsl b/drivers/gles3/shaders/copy.glsl
index 743fe122d1..1b7c626d3c 100644
--- a/drivers/gles3/shaders/copy.glsl
+++ b/drivers/gles3/shaders/copy.glsl
@@ -131,7 +131,7 @@ void main() {
#elif defined(USE_ASYM_PANO)
- // When an assymetrical projection matrix is used (applicable for stereoscopic rendering i.e. VR) we need to do this calculation per fragment to get a perspective correct result.
+ // When an asymmetrical projection matrix is used (applicable for stereoscopic rendering i.e. VR) we need to do this calculation per fragment to get a perspective correct result.
// Note that we're ignoring the x-offset for IPD, with Z sufficiently in the distance it becomes neglectible, as a result we could probably just set cube_normal.z to -1.
// The Matrix[2][0] (= asym_proj.x) and Matrix[2][1] (= asym_proj.z) values are what provide the right shift in the image.
@@ -161,7 +161,7 @@ void main() {
#ifdef SRGB_TO_LINEAR
- color.rgb = mix(pow((color.rgb + vec3(0.055)) * (1.0 / (1 + 0.055)),vec3(2.4)),color.rgb * (1.0 / 12.92),lessThan(color.rgb,vec3(0.04045)));
+ color.rgb = mix(pow((color.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)),vec3(2.4)),color.rgb * (1.0 / 12.92),lessThan(color.rgb,vec3(0.04045)));
#endif
#ifdef DEBUG_GRADIENT
diff --git a/drivers/gles3/shaders/effect_blur.glsl b/drivers/gles3/shaders/effect_blur.glsl
index b5f98a1244..c8567b4d53 100644
--- a/drivers/gles3/shaders/effect_blur.glsl
+++ b/drivers/gles3/shaders/effect_blur.glsl
@@ -214,7 +214,7 @@ void main() {
vec4 color_accum = vec4(0.0);
- float max_accum=0;
+ float max_accum=0.0;
for(int i=0;i<dof_kernel_size;i++) {
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index 6427e3d967..d3644bffdd 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -445,8 +445,7 @@ VERTEX_SHADER_CODE
vtx.z=(distance/shadow_dual_paraboloid_render_zfar);
vtx.z=vtx.z * 2.0 - 1.0;
- vertex.xyz=vtx;
- vertex.w=1.0;
+ vertex_interp = vtx;
#else
@@ -905,7 +904,7 @@ float G_GGX_anisotropic_2cos(float cos_theta_m, float alpha_x, float alpha_y, fl
float sin2 = (1.0-cos2);
float s_x = alpha_x * cos_phi;
float s_y = alpha_y * sin_phi;
- return 1.0 / (cos_theta_m + sqrt(cos2 + (s_x*s_x + s_y*s_y)*sin2 ));
+ return 1.0 / max(cos_theta_m + sqrt(cos2 + (s_x*s_x + s_y*s_y)*sin2 ), 0.001);
}
float D_GGX_anisotropic(float cos_theta_m, float alpha_x, float alpha_y, float cos_phi, float sin_phi) {
@@ -914,7 +913,7 @@ float D_GGX_anisotropic(float cos_theta_m, float alpha_x, float alpha_y, float c
float r_x = cos_phi/alpha_x;
float r_y = sin_phi/alpha_y;
float d = cos2 + sin2*(r_x * r_x + r_y * r_y);
- return 1.0 / (M_PI * alpha_x * alpha_y * d * d );
+ return 1.0 / max(M_PI * alpha_x * alpha_y * d * d, 0.001);
}
@@ -1308,7 +1307,7 @@ void reflection_process(int idx, vec3 vertex, vec3 normal,vec3 binormal, vec3 ta
//make blend more rounded
blend=mix(length(inner_pos),blend,blend);
blend*=blend;
- blend=1.001-blend;
+ blend=max(0.0, 1.0-blend);
if (reflections[idx].params.x>0.0){// compute reflection
@@ -1476,9 +1475,9 @@ void gi_probe_compute(mediump sampler3D probe, mat4 probe_xform, vec3 bounds,vec
return;
}
- //vec3 blendv = probe_pos/bounds * 2.0 - 1.0;
- //float blend = 1.001-max(blendv.x,max(blendv.y,blendv.z));
- float blend=1.0;
+ vec3 blendv = abs(probe_pos/bounds * 2.0 - 1.0);
+ float blend = clamp(1.0-max(blendv.x,max(blendv.y,blendv.z)), 0.0, 1.0);
+ //float blend=1.0;
float max_distance = length(bounds);
@@ -1649,7 +1648,7 @@ void main() {
#if defined(ENABLE_NORMALMAP)
- vec3 normalmap = vec3(0.0);
+ vec3 normalmap = vec3(0.5);
#endif
float normaldepth=1.0;
@@ -2004,7 +2003,7 @@ FRAGMENT_SHADER_CODE
}
#ifndef USE_LIGHTMAP
if (ambient_accum.a>0.0) {
- ambient_light+=ambient_accum.rgb/ambient_accum.a;
+ ambient_light=ambient_accum.rgb/ambient_accum.a;
}
#endif
diff --git a/drivers/png/image_loader_png.cpp b/drivers/png/image_loader_png.cpp
index 4f43006cb0..3f512af8d5 100644
--- a/drivers/png/image_loader_png.cpp
+++ b/drivers/png/image_loader_png.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_png.h"
#include "os/os.h"
diff --git a/drivers/png/image_loader_png.h b/drivers/png/image_loader_png.h
index 155240a048..48f48e6bea 100644
--- a/drivers/png/image_loader_png.h
+++ b/drivers/png/image_loader_png.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_PNG_H
#define IMAGE_LOADER_PNG_H
diff --git a/drivers/png/resource_saver_png.cpp b/drivers/png/resource_saver_png.cpp
index 7f5300bb39..270ae36e1e 100644
--- a/drivers/png/resource_saver_png.cpp
+++ b/drivers/png/resource_saver_png.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_saver_png.h"
#include "core/image.h"
diff --git a/drivers/png/resource_saver_png.h b/drivers/png/resource_saver_png.h
index c921dcf24c..109b4801da 100644
--- a/drivers/png/resource_saver_png.h
+++ b/drivers/png/resource_saver_png.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_SAVER_PNG_H
#define RESOURCE_SAVER_PNG_H
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
index 815b5b47ef..e90245b300 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_pulseaudio.h"
#ifdef PULSEAUDIO_ENABLED
diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.h b/drivers/pulseaudio/audio_driver_pulseaudio.h
index 71d4b42dfe..3bd1146f53 100644
--- a/drivers/pulseaudio/audio_driver_pulseaudio.h
+++ b/drivers/pulseaudio/audio_driver_pulseaudio.h
@@ -27,12 +27,15 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "servers/audio_server.h"
#ifdef PULSEAUDIO_ENABLED
+#ifndef AUDIO_DRIVER_PULSEAUDIO_H
+#define AUDIO_DRIVER_PULSEAUDIO_H
+
#include "core/os/mutex.h"
#include "core/os/thread.h"
+#include "servers/audio_server.h"
#include <pulse/simple.h>
@@ -78,4 +81,6 @@ public:
~AudioDriverPulseAudio();
};
-#endif
+#endif // AUDIO_DRIVER_PULSEAUDIO_H
+
+#endif // PULSEAUDIO_ENABLED
diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp
index 497be89614..c6d36a5749 100644
--- a/drivers/register_driver_types.cpp
+++ b/drivers/register_driver_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_driver_types.h"
#include "core/math/geometry.h"
diff --git a/drivers/register_driver_types.h b/drivers/register_driver_types.h
index 09c9dd898f..ddd1fac093 100644
--- a/drivers/register_driver_types.h
+++ b/drivers/register_driver_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_DRIVER_TYPES_H
#define REGISTER_DRIVER_TYPES_H
diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp
index 2bfa62f30d..ed6f2e24ed 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.cpp
+++ b/drivers/rtaudio/audio_driver_rtaudio.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_rtaudio.h"
#include "os/os.h"
diff --git a/drivers/rtaudio/audio_driver_rtaudio.h b/drivers/rtaudio/audio_driver_rtaudio.h
index 5fd46887c9..2a64652d5f 100644
--- a/drivers/rtaudio/audio_driver_rtaudio.h
+++ b/drivers/rtaudio/audio_driver_rtaudio.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_RTAUDIO_H
#define AUDIO_DRIVER_RTAUDIO_H
diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp
index db398691b0..4a467293fd 100644
--- a/drivers/unix/dir_access_unix.cpp
+++ b/drivers/unix/dir_access_unix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dir_access_unix.h"
#if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED)
diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h
index fdc433fe1d..a55acdbd34 100644
--- a/drivers/unix/dir_access_unix.h
+++ b/drivers/unix/dir_access_unix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_UNIX_H
#define DIR_ACCESS_UNIX_H
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index d4b71b2c05..1ed3999e1e 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_unix.h"
#if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED)
diff --git a/drivers/unix/file_access_unix.h b/drivers/unix/file_access_unix.h
index e096feb775..6f792076b8 100644
--- a/drivers/unix/file_access_unix.h
+++ b/drivers/unix/file_access_unix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_UNIX_H
#define FILE_ACCESS_UNIX_H
diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp
index 11f44f8eb8..032d91f0dc 100644
--- a/drivers/unix/ip_unix.cpp
+++ b/drivers/unix/ip_unix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ip_unix.h"
#if defined(UNIX_ENABLED) || defined(WINDOWS_ENABLED)
diff --git a/drivers/unix/ip_unix.h b/drivers/unix/ip_unix.h
index 4c3d996d9b..d3d1ccfa85 100644
--- a/drivers/unix/ip_unix.h
+++ b/drivers/unix/ip_unix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IP_UNIX_H
#define IP_UNIX_H
diff --git a/drivers/unix/mutex_posix.cpp b/drivers/unix/mutex_posix.cpp
index ab21a66008..1f13720f1e 100644
--- a/drivers/unix/mutex_posix.cpp
+++ b/drivers/unix/mutex_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mutex_posix.h"
#include "os/memory.h"
diff --git a/drivers/unix/mutex_posix.h b/drivers/unix/mutex_posix.h
index c615a39545..a4de1603f3 100644
--- a/drivers/unix/mutex_posix.h
+++ b/drivers/unix/mutex_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MUTEX_POSIX_H
#define MUTEX_POSIX_H
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index cc4d060c02..5f45f06c79 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_unix.h"
#ifdef UNIX_ENABLED
@@ -52,6 +53,7 @@
#if defined(__FreeBSD__) || defined(__OpenBSD__)
#include <sys/param.h>
+#include <sys/sysctl.h>
#endif
#include "project_settings.h"
#include <assert.h>
@@ -297,17 +299,7 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, bo
args.push_back((char *)cs[i].get_data()); // shitty C cast
args.push_back(0);
-#ifdef __FreeBSD__
- if (p_path.find("/")) {
- // exec name contains path so use it
- execv(p_path.utf8().get_data(), &args[0]);
- } else {
- // use program name and search through PATH to find it
- execvp(getprogname(), &args[0]);
- }
-#else
execvp(p_path.utf8().get_data(), &args[0]);
-#endif
// still alive? something failed..
fprintf(stderr, "**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n", p_path.utf8().get_data());
abort();
@@ -362,7 +354,20 @@ String OS_Unix::get_locale() const {
}
Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) {
- p_library_handle = dlopen(p_path.utf8().get_data(), RTLD_NOW);
+
+ String path = p_path;
+
+ if (!FileAccess::exists(path)) {
+ //this code exists so gdnative can load .so files from within the executable path
+ path = get_executable_path().get_base_dir().plus_file(p_path.get_file());
+ }
+
+ if (!FileAccess::exists(path)) {
+ //this code exists so gdnative can load .so files from a standard unix location
+ path = get_executable_path().get_base_dir().plus_file("../lib").plus_file(p_path.get_file());
+ }
+
+ p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
if (!p_library_handle) {
ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror());
ERR_FAIL_V(ERR_CANT_OPEN);
@@ -448,12 +453,23 @@ String OS_Unix::get_executable_path() const {
return OS::get_executable_path();
}
return b;
-#elif defined(__FreeBSD__) || defined(__OpenBSD__)
+#elif defined(__OpenBSD__)
char resolved_path[MAXPATHLEN];
realpath(OS::get_executable_path().utf8().get_data(), resolved_path);
return String(resolved_path);
+#elif defined(__FreeBSD__)
+ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+ char buf[MAXPATHLEN];
+ size_t len = sizeof(buf);
+ if (sysctl(mib, 4, buf, &len, NULL, 0) != 0) {
+ WARN_PRINT("Couldn't get executable path from sysctl");
+ return OS::get_executable_path();
+ }
+ String b;
+ b.parse_utf8(buf);
+ return b;
#elif defined(__APPLE__)
char temp_path[1];
uint32_t buff_size = 1;
diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h
index 7929a791cb..a7c9015330 100644
--- a/drivers/unix/os_unix.h
+++ b/drivers/unix/os_unix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_UNIX_H
#define OS_UNIX_H
@@ -55,7 +56,7 @@ protected:
virtual void initialize_core();
virtual int unix_initialize_audio(int p_audio_driver);
- //virtual void initialize(int p_video_driver,int p_audio_driver);
+ //virtual Error initialize(int p_video_driver,int p_audio_driver);
virtual void finalize_core();
diff --git a/drivers/unix/packet_peer_udp_posix.cpp b/drivers/unix/packet_peer_udp_posix.cpp
index 2e03a106a2..1380c1d88b 100644
--- a/drivers/unix/packet_peer_udp_posix.cpp
+++ b/drivers/unix/packet_peer_udp_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "packet_peer_udp_posix.h"
#ifdef UNIX_ENABLED
diff --git a/drivers/unix/packet_peer_udp_posix.h b/drivers/unix/packet_peer_udp_posix.h
index b8ea4c867a..7f72a9bfc9 100644
--- a/drivers/unix/packet_peer_udp_posix.h
+++ b/drivers/unix/packet_peer_udp_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PACKET_PEER_UDP_POSIX_H
#define PACKET_PEER_UDP_POSIX_H
diff --git a/drivers/unix/rw_lock_posix.cpp b/drivers/unix/rw_lock_posix.cpp
index 6adc2c25f3..4df965cabb 100644
--- a/drivers/unix/rw_lock_posix.cpp
+++ b/drivers/unix/rw_lock_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)
#include "rw_lock_posix.h"
diff --git a/drivers/unix/rw_lock_posix.h b/drivers/unix/rw_lock_posix.h
index 3cf1b8924e..617b9705da 100644
--- a/drivers/unix/rw_lock_posix.h
+++ b/drivers/unix/rw_lock_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RWLOCKPOSIX_H
#define RWLOCKPOSIX_H
diff --git a/drivers/unix/semaphore_posix.cpp b/drivers/unix/semaphore_posix.cpp
index 18b0cd7956..5cabfe4937 100644
--- a/drivers/unix/semaphore_posix.cpp
+++ b/drivers/unix/semaphore_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "semaphore_posix.h"
#if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)
diff --git a/drivers/unix/semaphore_posix.h b/drivers/unix/semaphore_posix.h
index 719fd73880..283174bb2e 100644
--- a/drivers/unix/semaphore_posix.h
+++ b/drivers/unix/semaphore_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEMAPHORE_POSIX_H
#define SEMAPHORE_POSIX_H
diff --git a/drivers/unix/socket_helpers.h b/drivers/unix/socket_helpers.h
index 1cdc4cc65d..5ef9ad3088 100644
--- a/drivers/unix/socket_helpers.h
+++ b/drivers/unix/socket_helpers.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SOCKET_HELPERS_H
#define SOCKET_HELPERS_H
diff --git a/drivers/unix/stream_peer_tcp_posix.cpp b/drivers/unix/stream_peer_tcp_posix.cpp
index 959131d47a..17112e5ab5 100644
--- a/drivers/unix/stream_peer_tcp_posix.cpp
+++ b/drivers/unix/stream_peer_tcp_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef UNIX_ENABLED
#include "stream_peer_tcp_posix.h"
@@ -303,7 +304,7 @@ Error StreamPeerTCPPosix::read(uint8_t *p_buffer, int p_bytes, int &r_received,
return OK;
};
-void StreamPeerTCPPosix::set_nodelay(bool p_enabled) {
+void StreamPeerTCPPosix::set_no_delay(bool p_enabled) {
ERR_FAIL_COND(!is_connected_to_host());
int flag = p_enabled ? 1 : 0;
diff --git a/drivers/unix/stream_peer_tcp_posix.h b/drivers/unix/stream_peer_tcp_posix.h
index bfe6d88977..bcebe57771 100644
--- a/drivers/unix/stream_peer_tcp_posix.h
+++ b/drivers/unix/stream_peer_tcp_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef UNIX_ENABLED
#ifndef STREAM_PEER_TCP_POSIX_H
@@ -76,7 +77,7 @@ public:
virtual Status get_status() const;
virtual void disconnect_from_host();
- virtual void set_nodelay(bool p_enabled);
+ virtual void set_no_delay(bool p_enabled);
static void make_default();
diff --git a/drivers/unix/tcp_server_posix.cpp b/drivers/unix/tcp_server_posix.cpp
index 9f4ce51dc2..07ffe3b00a 100644
--- a/drivers/unix/tcp_server_posix.cpp
+++ b/drivers/unix/tcp_server_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tcp_server_posix.h"
#include "stream_peer_tcp_posix.h"
diff --git a/drivers/unix/tcp_server_posix.h b/drivers/unix/tcp_server_posix.h
index 3bb4a3b5bf..c749314fb3 100644
--- a/drivers/unix/tcp_server_posix.h
+++ b/drivers/unix/tcp_server_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TCP_SERVER_POSIX_H
#define TCP_SERVER_POSIX_H
diff --git a/drivers/unix/thread_posix.cpp b/drivers/unix/thread_posix.cpp
index f19932ae8e..f079ae2ae2 100644
--- a/drivers/unix/thread_posix.cpp
+++ b/drivers/unix/thread_posix.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_posix.h"
#include "script_language.h"
diff --git a/drivers/unix/thread_posix.h b/drivers/unix/thread_posix.h
index c7da800d2b..15c9265e6d 100644
--- a/drivers/unix/thread_posix.h
+++ b/drivers/unix/thread_posix.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_POSIX_H
#define THREAD_POSIX_H
diff --git a/drivers/wasapi/audio_driver_wasapi.cpp b/drivers/wasapi/audio_driver_wasapi.cpp
index cd0e56dcc5..4c80e70a95 100644
--- a/drivers/wasapi/audio_driver_wasapi.cpp
+++ b/drivers/wasapi/audio_driver_wasapi.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WASAPI_ENABLED
#include "audio_driver_wasapi.h"
diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h
index 57efeaf1e4..2b19f0cca1 100644
--- a/drivers/wasapi/audio_driver_wasapi.h
+++ b/drivers/wasapi/audio_driver_wasapi.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_WASAPI_H
#define AUDIO_DRIVER_WASAPI_H
diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp
index 8a470e0717..2e64b55430 100644
--- a/drivers/windows/dir_access_windows.cpp
+++ b/drivers/windows/dir_access_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#if defined(WINDOWS_ENABLED)
#include "dir_access_windows.h"
diff --git a/drivers/windows/dir_access_windows.h b/drivers/windows/dir_access_windows.h
index 845fc9941a..b18c8f5b5d 100644
--- a/drivers/windows/dir_access_windows.h
+++ b/drivers/windows/dir_access_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_WINDOWS_H
#define DIR_ACCESS_WINDOWS_H
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index 5b9cc2ba09..832d75b17d 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -27,9 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#include "file_access_windows.h"
+#include "os/os.h"
#include "shlwapi.h"
#include <windows.h>
@@ -114,25 +116,35 @@ void FileAccessWindows::close() {
//_wunlink(save_path.c_str()); //unlink if exists
//int rename_error = _wrename((save_path+".tmp").c_str(),save_path.c_str());
- bool rename_error;
+ bool rename_error = true;
+ int attempts = 4;
+ while (rename_error && attempts) {
+ // This workaround of trying multiple times is added to deal with paranoid Windows
+ // antiviruses that love reading just written files even if they are not executable, thus
+ // locking the file and preventing renaming from happening.
#ifdef UWP_ENABLED
- // UWP has no PathFileExists, so we check attributes instead
- DWORD fileAttr;
+ // UWP has no PathFileExists, so we check attributes instead
+ DWORD fileAttr;
- fileAttr = GetFileAttributesW(save_path.c_str());
- if (INVALID_FILE_ATTRIBUTES == fileAttr) {
+ fileAttr = GetFileAttributesW(save_path.c_str());
+ if (INVALID_FILE_ATTRIBUTES == fileAttr) {
#else
- if (!PathFileExistsW(save_path.c_str())) {
+ if (!PathFileExistsW(save_path.c_str())) {
#endif
- //creating new file
- rename_error = _wrename((save_path + ".tmp").c_str(), save_path.c_str()) != 0;
- } else {
- //atomic replace for existing file
- rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL);
- }
- if (rename_error && close_fail_notify) {
- close_fail_notify(save_path);
+ //creating new file
+ rename_error = _wrename((save_path + ".tmp").c_str(), save_path.c_str()) != 0;
+ } else {
+ //atomic replace for existing file
+ rename_error = !ReplaceFileW(save_path.c_str(), (save_path + ".tmp").c_str(), NULL, 2 | 4, NULL, NULL);
+ }
+ if (rename_error && close_fail_notify) {
+ close_fail_notify(save_path);
+ }
+ if (rename_error) {
+ attempts--;
+ OS::get_singleton()->delay_usec(1000000); //wait 100msec and try again
+ }
}
save_path = "";
@@ -189,6 +201,7 @@ uint8_t FileAccessWindows::get_8() const {
uint8_t b;
if (fread(&b, 1, 1, f) == 0) {
check_errors();
+ b = '\0';
};
return b;
diff --git a/drivers/windows/file_access_windows.h b/drivers/windows/file_access_windows.h
index b9ec9e34a3..bbdf830c96 100644
--- a/drivers/windows/file_access_windows.h
+++ b/drivers/windows/file_access_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_WINDOWS_H
#define FILE_ACCESS_WINDOWS_H
diff --git a/drivers/windows/mutex_windows.cpp b/drivers/windows/mutex_windows.cpp
index 2d60a22a86..359a79209c 100644
--- a/drivers/windows/mutex_windows.cpp
+++ b/drivers/windows/mutex_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mutex_windows.h"
#include "os/memory.h"
diff --git a/drivers/windows/mutex_windows.h b/drivers/windows/mutex_windows.h
index d6fc85dcc3..4dff2c2456 100644
--- a/drivers/windows/mutex_windows.h
+++ b/drivers/windows/mutex_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MUTEX_WINDOWS_H
#define MUTEX_WINDOWS_H
diff --git a/drivers/windows/packet_peer_udp_winsock.cpp b/drivers/windows/packet_peer_udp_winsock.cpp
index 9901f29e19..609096d02e 100644
--- a/drivers/windows/packet_peer_udp_winsock.cpp
+++ b/drivers/windows/packet_peer_udp_winsock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#include "packet_peer_udp_winsock.h"
diff --git a/drivers/windows/packet_peer_udp_winsock.h b/drivers/windows/packet_peer_udp_winsock.h
index 3f7d090068..8d575c2033 100644
--- a/drivers/windows/packet_peer_udp_winsock.h
+++ b/drivers/windows/packet_peer_udp_winsock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#ifndef PACKET_PEER_UDP_WINSOCK_H
diff --git a/drivers/windows/rw_lock_windows.cpp b/drivers/windows/rw_lock_windows.cpp
index a428b7910f..29c24d3d02 100644
--- a/drivers/windows/rw_lock_windows.cpp
+++ b/drivers/windows/rw_lock_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#if defined(WINDOWS_ENABLED)
#include "rw_lock_windows.h"
diff --git a/drivers/windows/rw_lock_windows.h b/drivers/windows/rw_lock_windows.h
index 1ca2095d6b..fdce28574a 100644
--- a/drivers/windows/rw_lock_windows.h
+++ b/drivers/windows/rw_lock_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RWLOCKWINDOWS_H
#define RWLOCKWINDOWS_H
diff --git a/drivers/windows/semaphore_windows.cpp b/drivers/windows/semaphore_windows.cpp
index 92daacb775..25fced93ce 100644
--- a/drivers/windows/semaphore_windows.cpp
+++ b/drivers/windows/semaphore_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "semaphore_windows.h"
#if defined(WINDOWS_ENABLED)
diff --git a/drivers/windows/semaphore_windows.h b/drivers/windows/semaphore_windows.h
index da0c68f1fc..e099ee437a 100644
--- a/drivers/windows/semaphore_windows.h
+++ b/drivers/windows/semaphore_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEMAPHORE_WINDOWS_H
#define SEMAPHORE_WINDOWS_H
diff --git a/drivers/windows/shell_windows.cpp b/drivers/windows/shell_windows.cpp
index c25df26c48..20e996d776 100644
--- a/drivers/windows/shell_windows.cpp
+++ b/drivers/windows/shell_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#ifdef UWP_ENABLED
diff --git a/drivers/windows/shell_windows.h b/drivers/windows/shell_windows.h
index 18ae7828a1..41cc6b72a2 100644
--- a/drivers/windows/shell_windows.h
+++ b/drivers/windows/shell_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHELL_WINDOWS_H
#define SHELL_WINDOWS_H
diff --git a/drivers/windows/stream_peer_tcp_winsock.cpp b/drivers/windows/stream_peer_tcp_winsock.cpp
index 6bcd5af5a1..55775fc231 100644
--- a/drivers/windows/stream_peer_tcp_winsock.cpp
+++ b/drivers/windows/stream_peer_tcp_winsock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#include "stream_peer_tcp_winsock.h"
@@ -331,7 +332,7 @@ Error StreamPeerTCPWinsock::connect_to_host(const IP_Address &p_host, uint16_t p
return OK;
};
-void StreamPeerTCPWinsock::set_nodelay(bool p_enabled) {
+void StreamPeerTCPWinsock::set_no_delay(bool p_enabled) {
ERR_FAIL_COND(!is_connected_to_host());
int flag = p_enabled ? 1 : 0;
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int));
diff --git a/drivers/windows/stream_peer_tcp_winsock.h b/drivers/windows/stream_peer_tcp_winsock.h
index 53be9d6ac5..a0177d374e 100644
--- a/drivers/windows/stream_peer_tcp_winsock.h
+++ b/drivers/windows/stream_peer_tcp_winsock.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* stream_peer_winsock.h */
+/* stream_peer_tcp_winsock.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#ifndef STREAM_PEER_TCP_WINSOCK_H
@@ -80,7 +81,7 @@ public:
static void make_default();
static void cleanup();
- virtual void set_nodelay(bool p_enabled);
+ virtual void set_no_delay(bool p_enabled);
StreamPeerTCPWinsock();
~StreamPeerTCPWinsock();
diff --git a/drivers/windows/tcp_server_winsock.cpp b/drivers/windows/tcp_server_winsock.cpp
index 3936ee64c7..413a0d19b5 100644
--- a/drivers/windows/tcp_server_winsock.cpp
+++ b/drivers/windows/tcp_server_winsock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#include "tcp_server_winsock.h"
diff --git a/drivers/windows/tcp_server_winsock.h b/drivers/windows/tcp_server_winsock.h
index ffd20bd6b7..a6979db42d 100644
--- a/drivers/windows/tcp_server_winsock.h
+++ b/drivers/windows/tcp_server_winsock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef WINDOWS_ENABLED
#ifndef TCP_SERVER_WINSOCK_H
diff --git a/drivers/windows/thread_windows.cpp b/drivers/windows/thread_windows.cpp
index 062387e3cb..5e0b017a5c 100644
--- a/drivers/windows/thread_windows.cpp
+++ b/drivers/windows/thread_windows.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_windows.h"
#if defined(WINDOWS_ENABLED) && !defined(UWP_ENABLED)
diff --git a/drivers/windows/thread_windows.h b/drivers/windows/thread_windows.h
index 5d26e8fc68..d7a8389d9e 100644
--- a/drivers/windows/thread_windows.h
+++ b/drivers/windows/thread_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_WINDOWS_H
#define THREAD_WINDOWS_H
diff --git a/drivers/xaudio2/audio_driver_xaudio2.cpp b/drivers/xaudio2/audio_driver_xaudio2.cpp
index de71b6daba..6675459313 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.cpp
+++ b/drivers/xaudio2/audio_driver_xaudio2.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_xaudio2.h"
#include "os/os.h"
diff --git a/drivers/xaudio2/audio_driver_xaudio2.h b/drivers/xaudio2/audio_driver_xaudio2.h
index 4fac1ec2b6..42e1adb2b7 100644
--- a/drivers/xaudio2/audio_driver_xaudio2.h
+++ b/drivers/xaudio2/audio_driver_xaudio2.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_XAUDIO2_H
#define AUDIO_DRIVER_XAUDIO2_H
diff --git a/editor/animation_editor.cpp b/editor/animation_editor.cpp
index f73c81ed9c..91aa189c8f 100644
--- a/editor/animation_editor.cpp
+++ b/editor/animation_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_editor.h"
#include "editor/plugins/animation_player_editor_plugin.h"
@@ -1533,7 +1534,7 @@ void AnimationKeyEditor::_track_editor_draw() {
for (Map<SelectedKey, KeyInfo>::Element *E = selection.front(); E; E = E->next()) {
int idx = E->key().track;
- int i = idx - v_scroll->get_value();
+ int i = idx - (int)v_scroll->get_value();
if (i < 0 || i >= fit)
continue;
int y = h + i * h + sep;
@@ -3118,12 +3119,12 @@ void AnimationKeyEditor::set_animation(const Ref<Animation> &p_anim) {
void AnimationKeyEditor::set_root(Node *p_root) {
if (root)
- root->disconnect("tree_exited", this, "_root_removed");
+ root->disconnect("tree_exiting", this, "_root_removed");
root = p_root;
if (root)
- root->connect("tree_exited", this, "_root_removed", make_binds(), CONNECT_ONESHOT);
+ root->connect("tree_exiting", this, "_root_removed", make_binds(), CONNECT_ONESHOT);
}
Node *AnimationKeyEditor::get_root() const {
diff --git a/editor/animation_editor.h b/editor/animation_editor.h
index 56e3f34aac..1e593f237c 100644
--- a/editor/animation_editor.h
+++ b/editor/animation_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_EDITOR_H
#define ANIMATION_EDITOR_H
diff --git a/editor/array_property_edit.cpp b/editor/array_property_edit.cpp
index 3c2fc5c23f..a32a71262f 100644
--- a/editor/array_property_edit.cpp
+++ b/editor/array_property_edit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "array_property_edit.h"
#include "editor_node.h"
diff --git a/editor/array_property_edit.h b/editor/array_property_edit.h
index 6b637f8b52..fe0c4e23ae 100644
--- a/editor/array_property_edit.h
+++ b/editor/array_property_edit.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ARRAY_PROPERTY_EDIT_H
#define ARRAY_PROPERTY_EDIT_H
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 256fe302d7..70334c2343 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "code_editor.h"
#include "editor/editor_scale.h"
@@ -89,10 +90,13 @@ void FindReplaceBar::_notification(int p_what) {
hide_button->set_normal_texture(get_icon("Close", "EditorIcons"));
hide_button->set_hover_texture(get_icon("Close", "EditorIcons"));
hide_button->set_pressed_texture(get_icon("Close", "EditorIcons"));
-
+ hide_button->set_custom_minimum_size(hide_button->get_normal_texture()->get_size());
} else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
set_process_unhandled_input(is_visible_in_tree());
+ if (is_visible_in_tree()) {
+ call_deferred("_update_size");
+ }
} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
find_prev->set_icon(get_icon("MoveUp", "EditorIcons"));
@@ -100,6 +104,7 @@ void FindReplaceBar::_notification(int p_what) {
hide_button->set_normal_texture(get_icon("Close", "EditorIcons"));
hide_button->set_hover_texture(get_icon("Close", "EditorIcons"));
hide_button->set_pressed_texture(get_icon("Close", "EditorIcons"));
+ hide_button->set_custom_minimum_size(hide_button->get_normal_texture()->get_size());
}
}
@@ -108,7 +113,7 @@ void FindReplaceBar::_unhandled_input(const Ref<InputEvent> &p_event) {
Ref<InputEventKey> k = p_event;
if (k.is_valid()) {
- if (k->is_pressed() && (text_edit->has_focus() || text_vbc->is_a_parent_of(get_focus_owner()))) {
+ if (k->is_pressed() && (text_edit->has_focus() || vbc_lineedit->is_a_parent_of(get_focus_owner()))) {
bool accepted = true;
@@ -181,6 +186,7 @@ void FindReplaceBar::_replace() {
void FindReplaceBar::_replace_all() {
+ text_edit->disconnect("text_changed", this, "_editor_text_changed");
// line as x so it gets priority in comparison, column as y
Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column());
Point2i prev_match = Point2(-1, -1);
@@ -254,6 +260,8 @@ void FindReplaceBar::_replace_all() {
text_edit->set_v_scroll(vsval);
set_error(vformat(TTR("Replaced %d occurrence(s)."), rc));
+
+ text_edit->call_deferred("connect", "text_changed", this, "_editor_text_changed");
}
void FindReplaceBar::_get_search_from(int &r_line, int &r_col) {
@@ -355,13 +363,13 @@ void FindReplaceBar::_hide_bar() {
text_edit->set_search_text("");
result_line = -1;
result_col = -1;
- replace_hbc->hide();
- replace_options_hbc->hide();
+ set_error("");
hide();
}
void FindReplaceBar::_show_search() {
+ hide(); // to update size correctly
show();
search_text->grab_focus();
@@ -374,21 +382,24 @@ void FindReplaceBar::_show_search() {
search_text->set_cursor_position(search_text->get_text().length());
search_current();
}
+ call_deferred("_update_size");
}
void FindReplaceBar::popup_search() {
- replace_hbc->hide();
- replace_options_hbc->hide();
+ replace_text->hide();
+ hbc_button_replace->hide();
+ hbc_option_replace->hide();
_show_search();
}
void FindReplaceBar::popup_replace() {
- if (!replace_hbc->is_visible_in_tree() || !replace_options_hbc->is_visible_in_tree()) {
+ if (!replace_text->is_visible_in_tree()) {
replace_text->clear();
- replace_hbc->show();
- replace_options_hbc->show();
+ replace_text->show();
+ hbc_button_replace->show();
+ hbc_option_replace->show();
}
selection_only->set_pressed((text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line()));
@@ -455,7 +466,7 @@ bool FindReplaceBar::is_selection_only() const {
void FindReplaceBar::set_error(const String &p_label) {
- error_label->set_text(p_label);
+ emit_signal("error", p_label);
}
void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) {
@@ -464,6 +475,11 @@ void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) {
text_edit->connect("text_changed", this, "_editor_text_changed");
}
+void FindReplaceBar::_update_size() {
+
+ container->set_custom_minimum_size(Size2(0, hbc->get_size().height));
+}
+
void FindReplaceBar::_bind_methods() {
ClassDB::bind_method("_unhandled_input", &FindReplaceBar::_unhandled_input);
@@ -479,486 +495,101 @@ void FindReplaceBar::_bind_methods() {
ClassDB::bind_method("_replace_all_pressed", &FindReplaceBar::_replace_all);
ClassDB::bind_method("_search_options_changed", &FindReplaceBar::_search_options_changed);
ClassDB::bind_method("_hide_pressed", &FindReplaceBar::_hide_bar);
+ ClassDB::bind_method("_update_size", &FindReplaceBar::_update_size);
ADD_SIGNAL(MethodInfo("search"));
+ ADD_SIGNAL(MethodInfo("error"));
}
FindReplaceBar::FindReplaceBar() {
+ container = memnew(Control);
+ add_child(container);
+ container->set_clip_contents(true);
+ container->set_h_size_flags(SIZE_EXPAND_FILL);
+
replace_all_mode = false;
preserve_cursor = false;
- text_vbc = memnew(VBoxContainer);
- add_child(text_vbc);
-
- HBoxContainer *search_hbc = memnew(HBoxContainer);
- text_vbc->add_child(search_hbc);
-
+ hbc = memnew(HBoxContainer);
+ container->add_child(hbc);
+ hbc->set_anchor_and_margin(MARGIN_RIGHT, 1, 0);
+
+ vbc_lineedit = memnew(VBoxContainer);
+ hbc->add_child(vbc_lineedit);
+ vbc_lineedit->set_h_size_flags(SIZE_EXPAND_FILL);
+ VBoxContainer *vbc_button = memnew(VBoxContainer);
+ hbc->add_child(vbc_button);
+ VBoxContainer *vbc_option = memnew(VBoxContainer);
+ hbc->add_child(vbc_option);
+
+ HBoxContainer *hbc_button_search = memnew(HBoxContainer);
+ vbc_button->add_child(hbc_button_search);
+ hbc_button_replace = memnew(HBoxContainer);
+ vbc_button->add_child(hbc_button_replace);
+
+ HBoxContainer *hbc_option_search = memnew(HBoxContainer);
+ vbc_option->add_child(hbc_option_search);
+ hbc_option_replace = memnew(HBoxContainer);
+ vbc_option->add_child(hbc_option_replace);
+
+ // search toolbar
search_text = memnew(LineEdit);
- search_hbc->add_child(search_text);
- search_text->set_custom_minimum_size(Size2(200, 0));
+ vbc_lineedit->add_child(search_text);
+ search_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
search_text->connect("text_changed", this, "_search_text_changed");
search_text->connect("text_entered", this, "_search_text_entered");
find_prev = memnew(ToolButton);
- search_hbc->add_child(find_prev);
+ hbc_button_search->add_child(find_prev);
find_prev->set_focus_mode(FOCUS_NONE);
find_prev->connect("pressed", this, "_search_prev");
find_next = memnew(ToolButton);
- search_hbc->add_child(find_next);
+ hbc_button_search->add_child(find_next);
find_next->set_focus_mode(FOCUS_NONE);
find_next->connect("pressed", this, "_search_next");
- replace_hbc = memnew(HBoxContainer);
- text_vbc->add_child(replace_hbc);
- replace_hbc->hide();
-
- replace_text = memnew(LineEdit);
- replace_hbc->add_child(replace_text);
- replace_text->set_custom_minimum_size(Size2(200, 0));
- replace_text->connect("text_entered", this, "_replace_text_entered");
-
- replace = memnew(Button);
- replace_hbc->add_child(replace);
- replace->set_text(TTR("Replace"));
- //replace->set_focus_mode(FOCUS_NONE);
- replace->connect("pressed", this, "_replace_pressed");
-
- replace_all = memnew(Button);
- replace_hbc->add_child(replace_all);
- replace_all->set_text(TTR("Replace All"));
- //replace_all->set_focus_mode(FOCUS_NONE);
- replace_all->connect("pressed", this, "_replace_all_pressed");
-
- Control *spacer_split = memnew(Control);
- spacer_split->set_custom_minimum_size(Size2(0, 1));
- text_vbc->add_child(spacer_split);
-
- VBoxContainer *options_vbc = memnew(VBoxContainer);
- add_child(options_vbc);
- options_vbc->set_h_size_flags(SIZE_EXPAND_FILL);
-
- HBoxContainer *search_options = memnew(HBoxContainer);
- options_vbc->add_child(search_options);
-
case_sensitive = memnew(CheckBox);
- search_options->add_child(case_sensitive);
+ hbc_option_search->add_child(case_sensitive);
case_sensitive->set_text(TTR("Match Case"));
case_sensitive->set_focus_mode(FOCUS_NONE);
case_sensitive->connect("toggled", this, "_search_options_changed");
whole_words = memnew(CheckBox);
- search_options->add_child(whole_words);
+ hbc_option_search->add_child(whole_words);
whole_words->set_text(TTR("Whole Words"));
whole_words->set_focus_mode(FOCUS_NONE);
whole_words->connect("toggled", this, "_search_options_changed");
- error_label = memnew(Label);
- search_options->add_child(error_label);
- error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
-
- search_options->add_spacer();
+ // replace toolbar
+ replace_text = memnew(LineEdit);
+ vbc_lineedit->add_child(replace_text);
+ replace_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
+ replace_text->connect("text_entered", this, "_replace_text_entered");
- hide_button = memnew(TextureButton);
- search_options->add_child(hide_button);
- hide_button->set_focus_mode(FOCUS_NONE);
- hide_button->connect("pressed", this, "_hide_pressed");
+ replace = memnew(Button);
+ hbc_button_replace->add_child(replace);
+ replace->set_text(TTR("Replace"));
+ replace->connect("pressed", this, "_replace_pressed");
- replace_options_hbc = memnew(HBoxContainer);
- options_vbc->add_child(replace_options_hbc);
- replace_options_hbc->hide();
+ replace_all = memnew(Button);
+ hbc_button_replace->add_child(replace_all);
+ replace_all->set_text(TTR("Replace All"));
+ replace_all->connect("pressed", this, "_replace_all_pressed");
selection_only = memnew(CheckBox);
- replace_options_hbc->add_child(selection_only);
+ hbc_option_replace->add_child(selection_only);
selection_only->set_text(TTR("Selection Only"));
selection_only->set_focus_mode(FOCUS_NONE);
selection_only->connect("toggled", this, "_search_options_changed");
-}
-
-void FindReplaceDialog::popup_search() {
-
- set_title(TTR("Search"));
- replace_mc->hide();
- replace_label->hide();
- replace_vb->hide();
- skip->hide();
- popup_centered(Point2(300, 190));
- get_ok()->set_text(TTR("Find"));
- search_text->grab_focus();
- if (text_edit->is_selection_active() && (text_edit->get_selection_from_line() == text_edit->get_selection_to_line())) {
- search_text->set_text(text_edit->get_selection_text());
- }
- search_text->select_all();
-
- error_label->set_text("");
-}
-
-void FindReplaceDialog::popup_replace() {
-
- set_title(TTR("Replace"));
- bool do_selection = (text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line());
-
- set_replace_selection_only(do_selection);
-
- if (!do_selection && text_edit->is_selection_active()) {
- search_text->set_text(text_edit->get_selection_text());
- }
-
- replace_mc->show();
- replace_label->show();
- replace_vb->show();
- popup_centered(Point2(300, 300));
- if (search_text->get_text() != "" && replace_text->get_text() == "") {
- search_text->select(0, 0);
- replace_text->grab_focus();
- } else {
- search_text->grab_focus();
- search_text->select_all();
- }
- error_label->set_text("");
-
- if (prompt->is_pressed()) {
- skip->show();
- get_ok()->set_text(TTR("Next"));
- selection_only->set_disabled(true);
-
- } else {
- skip->hide();
- get_ok()->set_text(TTR("Replace"));
- selection_only->set_disabled(false);
- }
-}
-
-void FindReplaceDialog::_search_callback() {
-
- if (is_replace_mode())
- _replace();
- else
- _search();
-}
-
-void FindReplaceDialog::_replace_skip_callback() {
-
- _search();
-}
-
-void FindReplaceDialog::_replace() {
-
- text_edit->begin_complex_operation();
- if (is_replace_all_mode()) {
-
- //line as x so it gets priority in comparison, column as y
- Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column());
- Point2i prev_match = Point2(-1, -1);
-
- bool selection_enabled = text_edit->is_selection_active();
- Point2i selection_begin, selection_end;
- if (selection_enabled) {
- selection_begin = Point2i(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
- selection_end = Point2i(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
- }
- int vsval = text_edit->get_v_scroll();
- //int hsval = text_edit->get_h_scroll();
-
- text_edit->cursor_set_line(0);
- text_edit->cursor_set_column(0);
-
- int rc = 0;
-
- while (_search()) {
-
- if (!text_edit->is_selection_active()) {
- //search selects
- break;
- }
-
- //replace area
- Point2i match_from(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
- Point2i match_to(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
-
- if (match_from < prev_match)
- break; //done
-
- prev_match = match_to;
-
- if (selection_enabled && is_replace_selection_only()) {
-
- if (match_from < selection_begin || match_to > selection_end)
- continue;
-
- //replace but adjust selection bounds
-
- text_edit->insert_text_at_cursor(get_replace_text());
- if (match_to.x == selection_end.x)
- selection_end.y += get_replace_text().length() - get_search_text().length();
- } else {
- //just replace
- text_edit->insert_text_at_cursor(get_replace_text());
- }
- rc++;
- }
- //restore editor state (selection, cursor, scroll)
- text_edit->cursor_set_line(orig_cursor.x);
- text_edit->cursor_set_column(orig_cursor.y);
-
- if (selection_enabled && is_replace_selection_only()) {
- //reselect
- text_edit->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
- } else {
- text_edit->deselect();
- }
-
- text_edit->set_v_scroll(vsval);
- //text_edit->set_h_scroll(hsval);
- error_label->set_text(vformat(TTR("Replaced %d occurrence(s)."), rc));
-
- //hide();
- } else {
-
- if (text_edit->get_selection_text() == get_search_text()) {
-
- text_edit->insert_text_at_cursor(get_replace_text());
- }
-
- _search();
- }
- text_edit->end_complex_operation();
-}
-
-bool FindReplaceDialog::_search() {
-
- String text = get_search_text();
- uint32_t flags = 0;
-
- if (is_whole_words())
- flags |= TextEdit::SEARCH_WHOLE_WORDS;
- if (is_case_sensitive())
- flags |= TextEdit::SEARCH_MATCH_CASE;
- if (is_backwards())
- flags |= TextEdit::SEARCH_BACKWARDS;
-
- int line = text_edit->cursor_get_line(), col = text_edit->cursor_get_column();
-
- if (is_backwards()) {
- col -= 1;
- if (col < 0) {
- line -= 1;
- if (line < 0) {
- line = text_edit->get_line_count() - 1;
- }
- col = text_edit->get_line(line).length();
- }
- }
- bool found = text_edit->search(text, flags, line, col, line, col);
-
- if (found) {
- // print_line("found");
- text_edit->unfold_line(line);
- text_edit->cursor_set_line(line);
- if (is_backwards())
- text_edit->cursor_set_column(col);
- else
- text_edit->cursor_set_column(col + text.length());
- text_edit->select(line, col, line, col + text.length());
- set_error("");
- return true;
- } else {
-
- set_error(TTR("Not found!"));
- return false;
- }
-}
-
-void FindReplaceDialog::_prompt_changed() {
-
- if (prompt->is_pressed()) {
- skip->show();
- get_ok()->set_text(TTR("Next"));
- selection_only->set_disabled(true);
-
- } else {
- skip->hide();
- get_ok()->set_text(TTR("Replace"));
- selection_only->set_disabled(false);
- }
-}
-
-void FindReplaceDialog::_skip_pressed() {
-
- _replace_skip_callback();
-}
-
-bool FindReplaceDialog::is_replace_mode() const {
-
- return replace_text->is_visible_in_tree();
-}
-
-bool FindReplaceDialog::is_replace_all_mode() const {
-
- return !prompt->is_pressed();
-}
-
-bool FindReplaceDialog::is_replace_selection_only() const {
-
- return selection_only->is_pressed();
-}
-void FindReplaceDialog::set_replace_selection_only(bool p_enable) {
-
- selection_only->set_pressed(p_enable);
-}
-
-void FindReplaceDialog::ok_pressed() {
-
- _search_callback();
-}
-
-void FindReplaceDialog::_search_text_entered(const String &p_text) {
-
- if (replace_text->is_visible_in_tree())
- return;
- emit_signal("search");
- _search();
-}
-
-void FindReplaceDialog::_replace_text_entered(const String &p_text) {
-
- if (!replace_text->is_visible_in_tree())
- return;
-
- emit_signal("search");
- _replace();
-}
-
-String FindReplaceDialog::get_search_text() const {
-
- return search_text->get_text();
-}
-String FindReplaceDialog::get_replace_text() const {
-
- return replace_text->get_text();
-}
-bool FindReplaceDialog::is_whole_words() const {
-
- return whole_words->is_pressed();
-}
-bool FindReplaceDialog::is_case_sensitive() const {
-
- return case_sensitive->is_pressed();
-}
-bool FindReplaceDialog::is_backwards() const {
-
- return backwards->is_pressed();
-}
-
-void FindReplaceDialog::set_error(const String &p_error) {
-
- error_label->set_text(p_error);
-}
-
-void FindReplaceDialog::set_text_edit(TextEdit *p_text_edit) {
-
- text_edit = p_text_edit;
-}
-
-void FindReplaceDialog::search_next() {
- _search();
-}
-
-void FindReplaceDialog::_bind_methods() {
-
- ClassDB::bind_method("_search_text_entered", &FindReplaceDialog::_search_text_entered);
- ClassDB::bind_method("_replace_text_entered", &FindReplaceDialog::_replace_text_entered);
- ClassDB::bind_method("_prompt_changed", &FindReplaceDialog::_prompt_changed);
- ClassDB::bind_method("_skip_pressed", &FindReplaceDialog::_skip_pressed);
- ADD_SIGNAL(MethodInfo("search"));
- ADD_SIGNAL(MethodInfo("skip"));
-}
-
-FindReplaceDialog::FindReplaceDialog() {
-
- set_self_modulate(Color(1, 1, 1, 0.8));
-
- VBoxContainer *vb = memnew(VBoxContainer);
- add_child(vb);
-
- search_text = memnew(LineEdit);
- vb->add_margin_child(TTR("Search"), search_text);
- search_text->connect("text_entered", this, "_search_text_entered");
-
- replace_label = memnew(Label);
- replace_label->set_text(TTR("Replace By"));
- vb->add_child(replace_label);
- replace_mc = memnew(MarginContainer);
- vb->add_child(replace_mc);
-
- replace_text = memnew(LineEdit);
- replace_text->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- replace_text->set_begin(Point2(15, 132));
- replace_text->set_end(Point2(-15, 135));
-
- replace_mc->add_child(replace_text);
-
- replace_text->connect("text_entered", this, "_replace_text_entered");
-
- MarginContainer *opt_mg = memnew(MarginContainer);
- vb->add_child(opt_mg);
- VBoxContainer *svb = memnew(VBoxContainer);
- opt_mg->add_child(svb);
-
- svb->add_child(memnew(Label));
-
- whole_words = memnew(CheckButton);
- whole_words->set_text(TTR("Whole Words"));
- svb->add_child(whole_words);
-
- case_sensitive = memnew(CheckButton);
- case_sensitive->set_text(TTR("Case Sensitive"));
- svb->add_child(case_sensitive);
-
- backwards = memnew(CheckButton);
- backwards->set_text(TTR("Backwards"));
- svb->add_child(backwards);
-
- opt_mg = memnew(MarginContainer);
- vb->add_child(opt_mg);
- VBoxContainer *rvb = memnew(VBoxContainer);
- opt_mg->add_child(rvb);
- replace_vb = rvb;
- //rvb ->add_child(memnew(HSeparator));
- rvb->add_child(memnew(Label));
-
- prompt = memnew(CheckButton);
- prompt->set_text(TTR("Prompt On Replace"));
- rvb->add_child(prompt);
- prompt->connect("pressed", this, "_prompt_changed");
-
- selection_only = memnew(CheckButton);
- selection_only->set_text(TTR("Selection Only"));
- rvb->add_child(selection_only);
-
- int margin = get_constant("margin", "Dialogs");
- int button_margin = get_constant("button_margin", "Dialogs");
-
- skip = memnew(Button);
- skip->set_anchor(MARGIN_LEFT, ANCHOR_END);
- skip->set_anchor(MARGIN_TOP, ANCHOR_END);
- skip->set_anchor(MARGIN_RIGHT, ANCHOR_END);
- skip->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
- skip->set_begin(Point2(-70, -button_margin));
- skip->set_end(Point2(-10, -margin));
- skip->set_text(TTR("Skip"));
- add_child(skip);
- skip->connect("pressed", this, "_skip_pressed");
-
- error_label = memnew(Label);
- error_label->set_align(Label::ALIGN_CENTER);
- error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
-
- vb->add_child(error_label);
-
- set_hide_on_ok(false);
+ hide_button = memnew(TextureButton);
+ add_child(hide_button);
+ hide_button->set_focus_mode(FOCUS_NONE);
+ hide_button->connect("pressed", this, "_hide_pressed");
+ hide_button->set_expand(true);
+ hide_button->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
}
/*** CODE EDITOR ****/
@@ -1033,7 +664,7 @@ void CodeTextEditor::_reset_zoom() {
Ref<DynamicFont> font = text_editor->get_font("font"); // reset source font size to default
if (font.is_valid()) {
- EditorSettings::get_singleton()->set("interface/editor/source_font_size", 14);
+ EditorSettings::get_singleton()->set("interface/editor/code_font_size", 14);
font->set_size(14);
}
}
@@ -1097,7 +728,7 @@ bool CodeTextEditor::_add_font_size(int p_delta) {
if (font.is_valid()) {
int new_size = CLAMP(font->get_size() + p_delta, 8 * EDSCALE, 96 * EDSCALE);
if (new_size != font->get_size()) {
- EditorSettings::get_singleton()->set("interface/editor/source_font_size", new_size / EDSCALE);
+ EditorSettings::get_singleton()->set("interface/editor/code_font_size", new_size / EDSCALE);
font->set_size(new_size);
}
@@ -1139,20 +770,7 @@ void CodeTextEditor::set_error(const String &p_error) {
void CodeTextEditor::_update_font() {
- // FONTS
- String editor_font = EDITOR_DEF("text_editor/theme/font", "");
- bool font_overridden = false;
- if (editor_font != "") {
- Ref<Font> fnt = ResourceLoader::load(editor_font);
- if (fnt.is_valid()) {
- text_editor->add_font_override("font", fnt);
- font_overridden = true;
- }
- }
- if (!font_overridden) {
-
- text_editor->add_font_override("font", get_font("source", "EditorFonts"));
- }
+ text_editor->add_font_override("font", get_font("source", "EditorFonts"));
}
void CodeTextEditor::_on_settings_change() {
@@ -1251,11 +869,12 @@ CodeTextEditor::CodeTextEditor() {
error = memnew(Label);
status_bar->add_child(error);
- error->set_clip_text(true); //do not change, or else very long errors can push the whole container to the right
+ error->set_autowrap(true);
error->set_valign(Label::VALIGN_CENTER);
error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
error->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
error->set_h_size_flags(SIZE_EXPAND_FILL); //required for it to display, given now it's clipping contents, do not touch
+ find_replace_bar->connect("error", error, "set_text");
status_bar->add_child(memnew(Label)); //to keep the height if the other labels are not visible
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 6f4e45352b..db2e25b922 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CODE_EDITOR_H
#define CODE_EDITOR_H
@@ -62,12 +63,12 @@ class FindReplaceBar : public HBoxContainer {
GDCLASS(FindReplaceBar, HBoxContainer);
+ Control *container;
LineEdit *search_text;
ToolButton *find_prev;
ToolButton *find_next;
CheckBox *case_sensitive;
CheckBox *whole_words;
- Label *error_label;
TextureButton *hide_button;
LineEdit *replace_text;
@@ -75,9 +76,10 @@ class FindReplaceBar : public HBoxContainer {
Button *replace_all;
CheckBox *selection_only;
- VBoxContainer *text_vbc;
- HBoxContainer *replace_hbc;
- HBoxContainer *replace_options_hbc;
+ HBoxContainer *hbc;
+ VBoxContainer *vbc_lineedit;
+ HBoxContainer *hbc_button_replace;
+ HBoxContainer *hbc_option_replace;
TextEdit *text_edit;
@@ -97,6 +99,7 @@ class FindReplaceBar : public HBoxContainer {
void _search_text_changed(const String &p_text);
void _search_text_entered(const String &p_text);
void _replace_text_entered(const String &p_text);
+ void _update_size();
protected:
void _notification(int p_what);
@@ -130,62 +133,6 @@ public:
FindReplaceBar();
};
-class FindReplaceDialog : public ConfirmationDialog {
-
- GDCLASS(FindReplaceDialog, ConfirmationDialog);
-
- LineEdit *search_text;
- LineEdit *replace_text;
- CheckButton *whole_words;
- CheckButton *case_sensitive;
- CheckButton *backwards;
- CheckButton *prompt;
- CheckButton *selection_only;
- Button *skip;
- Label *error_label;
- MarginContainer *replace_mc;
- Label *replace_label;
- VBoxContainer *replace_vb;
-
- void _search_text_entered(const String &p_text);
- void _replace_text_entered(const String &p_text);
- void _prompt_changed();
- void _skip_pressed();
-
- TextEdit *text_edit;
-
-protected:
- void _search_callback();
- void _replace_skip_callback();
-
- bool _search();
- void _replace();
-
- virtual void ok_pressed();
- static void _bind_methods();
-
-public:
- String get_search_text() const;
- String get_replace_text() const;
- bool is_whole_words() const;
- bool is_case_sensitive() const;
- bool is_backwards() const;
- bool is_replace_mode() const;
- bool is_replace_all_mode() const;
- bool is_replace_selection_only() const;
- void set_replace_selection_only(bool p_enable);
-
- void set_error(const String &p_error);
-
- void popup_search();
- void popup_replace();
-
- void set_text_edit(TextEdit *p_text_edit);
-
- void search_next();
- FindReplaceDialog();
-};
-
typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options, bool &r_forced);
class CodeTextEditor : public VBoxContainer {
diff --git a/editor/collada/collada.cpp b/editor/collada/collada.cpp
index f7f11f40f5..4ce57d7f63 100644
--- a/editor/collada/collada.cpp
+++ b/editor/collada/collada.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef TOOLS_ENABLED
#include "collada.h"
@@ -907,7 +908,7 @@ void Collada::_parse_curve_geometry(XMLParser &parser, String p_id, String p_nam
COLLADA_PRINT("curve name: " + p_name);
String current_source;
- // handles geometry node and the curve childs in this loop
+ // handles geometry node and the curve children in this loop
// read sources with arrays and accessor for each curve
if (parser.is_empty()) {
return;
@@ -995,7 +996,7 @@ void Collada::_parse_mesh_geometry(XMLParser &parser, String p_id, String p_name
COLLADA_PRINT("mesh name: " + p_name);
String current_source;
- // handles geometry node and the mesh childs in this loop
+ // handles geometry node and the mesh children in this loop
// read sources with arrays and accessor for each mesh
if (parser.is_empty()) {
return;
diff --git a/editor/collada/collada.h b/editor/collada/collada.h
index 34bd93bcfe..ec3284bc5c 100644
--- a/editor/collada/collada.h
+++ b/editor/collada/collada.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef TOOLS_ENABLED
#ifndef COLLADA_H
diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp
index 9783d0cc4e..3466d17980 100644
--- a/editor/connections_dialog.cpp
+++ b/editor/connections_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "connections_dialog.h"
#include "editor_node.h"
diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h
index 59715c15c3..5e26e00f67 100644
--- a/editor/connections_dialog.h
+++ b/editor/connections_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONNECTIONS_DIALOG_H
#define CONNECTIONS_DIALOG_H
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index a601c8cd2b..48ceb82dc3 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "create_dialog.h"
#include "class_db.h"
@@ -37,7 +38,7 @@
#include "print_string.h"
#include "scene/gui/box_container.h"
-void CreateDialog::popup_create(bool p_dontclear) {
+void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode) {
recent->clear();
@@ -89,11 +90,12 @@ void CreateDialog::popup_create(bool p_dontclear) {
popup_centered_ratio();
}
- if (p_dontclear)
+ if (p_dont_clear) {
search_box->select_all();
- else {
+ } else {
search_box->clear();
}
+
search_box->grab_focus();
_update_search();
@@ -104,8 +106,19 @@ void CreateDialog::popup_create(bool p_dontclear) {
if (enable_rl) {
search_options->add_constant_override("draw_relationship_lines", 1);
search_options->add_color_override("relationship_line_color", rl_color);
- } else
+ } else {
search_options->add_constant_override("draw_relationship_lines", 0);
+ }
+
+ is_replace_mode = p_replace_mode;
+
+ if (p_replace_mode) {
+ set_title(vformat(TTR("Change %s Type"), base_type));
+ get_ok()->set_text(TTR("Change"));
+ } else {
+ set_title(vformat(TTR("Create New %s"), base_type));
+ get_ok()->set_text(TTR("Create"));
+ }
}
void CreateDialog::_text_changed(const String &p_newtext) {
@@ -242,6 +255,10 @@ void CreateDialog::_update_search() {
if (base_type == "Node" && type.begins_with("Editor"))
continue; // do not show editor nodes
+ if (base_type == "Resource" && ClassDB::is_parent_class(type, "PluginScript"))
+ // PluginScript must be initialized before use, which is not possible here
+ continue;
+
if (!ClassDB::can_instance(type))
continue; // can't create what can't be instanced
@@ -369,7 +386,11 @@ void CreateDialog::_notification(int p_what) {
void CreateDialog::set_base_type(const String &p_base) {
base_type = p_base;
- set_title(vformat(TTR("Create New %s"), p_base));
+ if (is_replace_mode)
+ set_title(vformat(TTR("Change %s Type"), p_base));
+ else
+ set_title(vformat(TTR("Create New %s"), p_base));
+
_update_search();
}
@@ -624,6 +645,8 @@ void CreateDialog::_bind_methods() {
CreateDialog::CreateDialog() {
+ is_replace_mode = false;
+
ClassDB::get_class_list(&type_list);
type_list.sort_custom<StringName::AlphCompare>();
@@ -678,7 +701,6 @@ CreateDialog::CreateDialog() {
search_box->connect("gui_input", this, "_sbox_input");
search_options = memnew(Tree);
vbc->add_margin_child(TTR("Matches:"), search_options, true);
- get_ok()->set_text(TTR("Create"));
get_ok()->set_disabled(true);
register_text_enter(search_box);
set_hide_on_ok(false);
diff --git a/editor/create_dialog.h b/editor/create_dialog.h
index 56ba7f8a3e..da17dcbe89 100644
--- a/editor/create_dialog.h
+++ b/editor/create_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CREATE_DIALOG_H
#define CREATE_DIALOG_H
@@ -52,6 +53,7 @@ class CreateDialog : public ConfirmationDialog {
Button *favorite;
LineEdit *search_box;
Tree *search_options;
+ bool is_replace_mode;
String base_type;
String preferred_search_result_type;
EditorHelpBit *help_bit;
@@ -97,7 +99,7 @@ public:
void set_preferred_search_result_type(const String &p_preferred_type);
String get_preferred_search_result_type();
- void popup_create(bool p_dontclear);
+ void popup_create(bool p_dont_clear, bool p_replace_mode = false);
CreateDialog();
};
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index f18a966151..19fd297f69 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dependency_editor.h"
#include "editor_node.h"
@@ -514,7 +515,7 @@ void DependencyRemoveDialog::ok_pressed() {
print_line("Moving to trash: " + path);
Error err = OS::get_singleton()->move_to_trash(path);
if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:\n") + to_delete[i] + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:") + "\n" + to_delete[i] + "\n");
}
}
@@ -594,6 +595,7 @@ DependencyErrorDialog::DependencyErrorDialog() {
files->set_hide_root(true);
vb->add_margin_child(TTR("Scene failed to load due to missing dependencies:"), files, true);
files->set_v_size_flags(SIZE_EXPAND_FILL);
+ files->set_custom_minimum_size(Size2(1, 200));
get_ok()->set_text(TTR("Open Anyway"));
get_cancel()->set_text(TTR("Close"));
@@ -625,7 +627,7 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa
if (!efsd)
return false;
- bool has_childs = false;
+ bool has_children = false;
for (int i = 0; i < efsd->get_subdir_count(); i++) {
@@ -641,7 +643,7 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa
if (!children) {
memdelete(dir_item);
} else {
- has_childs = true;
+ has_children = true;
}
}
}
@@ -681,12 +683,12 @@ bool OrphanResourcesDialog::_fill_owners(EditorFileSystemDirectory *efsd, HashMa
ti->add_button(1, get_icon("GuiVisibilityVisible", "EditorIcons"));
}
ti->set_metadata(0, path);
- has_childs = true;
+ has_children = true;
}
}
}
- return has_childs;
+ return has_children;
}
void OrphanResourcesDialog::refresh() {
diff --git a/editor/dependency_editor.h b/editor/dependency_editor.h
index bbe2b3494b..16135c352b 100644
--- a/editor/dependency_editor.h
+++ b/editor/dependency_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DEPENDENCY_EDITOR_H
#define DEPENDENCY_EDITOR_H
diff --git a/editor/dictionary_property_edit.cpp b/editor/dictionary_property_edit.cpp
index b1451dc378..4c0ad59385 100644
--- a/editor/dictionary_property_edit.cpp
+++ b/editor/dictionary_property_edit.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dictionary_property_edit.h"
#include "editor_node.h"
diff --git a/editor/dictionary_property_edit.h b/editor/dictionary_property_edit.h
index 8e495b31a9..83489fe7de 100644
--- a/editor/dictionary_property_edit.h
+++ b/editor/dictionary_property_edit.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DICTIONARY_PROPERTY_EDIT_H
#define DICTIONARY_PROPERTY_EDIT_H
diff --git a/editor/doc/doc_data.cpp b/editor/doc/doc_data.cpp
index 4a99ce8f51..58eaab78ed 100644
--- a/editor/doc/doc_data.cpp
+++ b/editor/doc/doc_data.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "doc_data.h"
#include "engine.h"
diff --git a/editor/doc/doc_data.h b/editor/doc/doc_data.h
index 53774ce1f0..0461133f9f 100644
--- a/editor/doc/doc_data.h
+++ b/editor/doc/doc_data.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DOC_DATA_H
#define DOC_DATA_H
diff --git a/editor/doc/doc_dump.cpp b/editor/doc/doc_dump.cpp
index 8d35cad6d6..905732a43f 100644
--- a/editor/doc/doc_dump.cpp
+++ b/editor/doc/doc_dump.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "doc_dump.h"
#include "os/file_access.h"
diff --git a/editor/doc/doc_dump.h b/editor/doc/doc_dump.h
index 70280195c4..48cf1a587b 100644
--- a/editor/doc/doc_dump.h
+++ b/editor/doc/doc_dump.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DOC_DUMP_H
#define DOC_DUMP_H
diff --git a/editor/doc_code_font.h b/editor/doc_code_font.h
deleted file mode 100644
index 41713befcb..0000000000
--- a/editor/doc_code_font.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*************************************************************************/
-/* doc_code_font.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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. */
-/*************************************************************************/
-static const int _bi_font_doc_code_font_height = 19;
-static const int _bi_font_doc_code_font_ascent = 15;
-static const int _bi_font_doc_code_font_charcount = 193;
-static const int _bi_font_doc_code_font_characters[] = { 0, 253, 53, 2, 2, -1, 14, 0, 13, 253, 56, 2, 2, -1, 14, 0, 32, 253, 59, 2, 2, -1, 14, 4, 33, 221, 29, 3, 12, 1, 3, 5, 34, 144, 77, 6, 5, 0, 3, 7, 35, 180, 55, 9, 11, -1, 4, 8, 36, 215, 0, 8, 15, 0, 2, 8, 37, 28, 45, 12, 11, -1, 4, 12, 38, 199, 16, 11, 12, 0, 3, 11, 39, 157, 77, 3, 5, 0, 3, 4, 40, 36, 16, 4, 15, 0, 3, 5, 41, 31, 16, 4, 15, 0, 3, 5, 42, 93, 79, 9, 7, -1, 3, 8, 43, 110, 68, 9, 9, -1, 5, 8, 44, 121, 78, 4, 6, -1, 12, 4, 45, 204, 76, 5, 3, -1, 9, 5, 46, 216, 75, 4, 3, 0, 12, 4, 47, 233, 0, 8, 15, -1, 2, 7, 48, 246, 29, 9, 11, -1, 4, 8, 49, 208, 54, 8, 11, 0, 4, 8, 50, 219, 42, 9, 11, -1, 4, 8, 51, 229, 41, 9, 11, -1, 4, 8, 52, 239, 41, 9, 11, -1, 4, 8, 53, 0, 57, 9, 11, -1, 4, 8, 54, 160, 55, 9, 11, -1, 4, 8, 55, 10, 57, 9, 11, -1, 4, 8, 56, 20, 57, 9, 11, -1, 4, 8, 57, 40, 57, 9, 11, -1, 4, 8, 58, 78, 80, 3, 8, 0, 7, 4, 59, 72, 68, 4, 11, -1, 7, 4, 60, 18, 69, 8, 11, 0, 4, 8, 61, 112, 78, 8, 7, 0, 6, 8, 62, 0, 69, 8, 11, 0, 4, 8, 63, 184, 30, 7, 12, 0, 3, 7, 64, 148, 16, 13, 13, 0, 4, 14, 65, 117, 44, 11, 11, -1, 4, 10, 66, 50, 57, 9, 11, 0, 4, 9, 67, 197, 42, 10, 11, -1, 4, 8, 68, 153, 43, 10, 11, 0, 4, 10, 69, 244, 53, 8, 11, 0, 4, 8, 70, 43, 69, 7, 11, 0, 4, 7, 71, 93, 44, 11, 11, -1, 4, 10, 72, 60, 56, 9, 11, 0, 4, 10, 73, 77, 68, 4, 11, 0, 4, 4, 74, 249, 41, 6, 11, -1, 4, 5, 75, 70, 56, 9, 11, 0, 4, 9, 76, 27, 69, 7, 11, 0, 4, 7, 77, 14, 45, 13, 11, 0, 4, 14, 78, 208, 42, 10, 11, 0, 4, 11, 79, 41, 45, 12, 11, -1, 4, 11, 80, 199, 54, 8, 11, 0, 4, 9, 81, 162, 16, 13, 13, -1, 4, 11, 82, 80, 56, 9, 11, 0, 4, 9, 83, 90, 56, 9, 11, -1, 4, 8, 84, 100, 56, 9, 11, -1, 4, 8, 85, 164, 43, 10, 11, 0, 4, 10, 86, 129, 44, 11, 11, -1, 4, 9, 87, 229, 29, 16, 11, -1, 4, 15, 88, 175, 43, 10, 11, -1, 4, 9, 89, 186, 43, 10, 11, -1, 4, 8, 90, 110, 56, 9, 11, -1, 4, 8, 91, 26, 16, 4, 15, 0, 3, 5, 92, 123, 0, 10, 15, -2, 2, 7, 93, 251, 0, 4, 15, 0, 3, 5, 94, 82, 79, 10, 7, -2, 4, 8, 95, 180, 76, 9, 3, -1, 15, 8, 96, 161, 77, 6, 4, -1, 3, 5, 97, 27, 81, 8, 8, -1, 7, 8, 98, 68, 31, 8, 12, 0, 3, 9, 99, 18, 81, 8, 8, -1, 7, 7, 100, 211, 16, 9, 12, -1, 3, 9, 101, 228, 66, 9, 8, -1, 7, 8, 102, 176, 30, 7, 12, -1, 3, 5, 103, 120, 56, 9, 11, -1, 7, 8, 104, 59, 31, 8, 12, 0, 3, 9, 105, 66, 68, 5, 11, -1, 4, 4, 106, 141, 16, 6, 14, -2, 4, 4, 107, 104, 31, 8, 12, 0, 3, 8, 108, 251, 16, 3, 12, 0, 3, 4, 109, 144, 68, 13, 8, 0, 7, 13, 110, 9, 81, 8, 8, 0, 7, 9, 111, 208, 66, 9, 8, -1, 7, 9, 112, 217, 54, 8, 11, 0, 7, 9, 113, 140, 56, 9, 11, -1, 7, 9, 114, 53, 81, 6, 8, 0, 7, 6, 115, 45, 81, 7, 8, -1, 7, 6, 116, 102, 68, 7, 10, -1, 5, 6, 117, 36, 81, 8, 8, 0, 7, 9, 118, 238, 65, 9, 8, -1, 7, 8, 119, 158, 68, 13, 8, -1, 7, 12, 120, 218, 66, 9, 8, -1, 7, 7, 121, 150, 56, 9, 11, -1, 7, 8, 122, 248, 65, 7, 8, -1, 7, 6, 123, 14, 16, 5, 15, 0, 3, 6, 124, 41, 16, 3, 15, 2, 3, 8, 125, 20, 16, 5, 15, 0, 3, 6, 126, 135, 78, 8, 5, -1, 4, 8, 160, 253, 62, 2, 2, -1, 14, 4, 161, 225, 29, 3, 12, 0, 5, 5, 162, 35, 69, 7, 11, 0, 4, 8, 163, 190, 55, 8, 11, 0, 4, 8, 164, 82, 68, 9, 10, -1, 5, 8, 165, 105, 44, 11, 11, -2, 4, 8, 166, 45, 16, 3, 15, 2, 3, 8, 167, 125, 16, 8, 14, 0, 3, 8, 168, 197, 76, 6, 3, 0, 4, 7, 169, 186, 16, 12, 12, 0, 3, 13, 170, 137, 68, 6, 9, 0, 4, 7, 171, 197, 67, 10, 8, -1, 6, 9, 172, 126, 78, 8, 5, -1, 8, 8, 173, 210, 75, 5, 3, -1, 9, 5, 174, 103, 79, 8, 7, 0, 3, 8, 175, 190, 76, 6, 3, 0, 4, 6, 176, 151, 77, 5, 5, 0, 3, 5, 177, 221, 16, 9, 12, -1, 3, 8, 178, 60, 81, 6, 8, -1, 2, 5, 179, 67, 80, 5, 8, -1, 2, 5, 180, 168, 77, 6, 4, -1, 3, 5, 181, 170, 55, 9, 11, 0, 7, 9, 182, 176, 16, 9, 13, 0, 4, 10, 183, 221, 75, 3, 3, 0, 9, 4, 184, 175, 76, 4, 4, 0, 14, 5, 185, 73, 80, 4, 8, 0, 2, 4, 186, 129, 68, 7, 9, 0, 4, 7, 187, 185, 67, 11, 8, -1, 6, 9, 188, 54, 44, 12, 11, -2, 4, 11, 189, 67, 44, 12, 11, -2, 4, 11, 190, 80, 44, 12, 11, -1, 4, 11, 191, 192, 29, 7, 12, -1, 5, 7, 192, 88, 0, 11, 15, -1, 0, 10, 193, 64, 0, 11, 15, -1, 0, 10, 194, 76, 0, 11, 15, -1, 0, 10, 195, 100, 0, 11, 15, -1, 0, 10, 196, 74, 16, 11, 14, -1, 1, 10, 197, 62, 16, 11, 14, -1, 1, 10, 198, 0, 45, 13, 11, -1, 4, 12, 199, 107, 16, 8, 14, 0, 4, 8, 200, 188, 0, 8, 15, 0, 0, 8, 201, 206, 0, 8, 15, 0, 0, 8, 202, 224, 0, 8, 15, 0, 0, 8, 203, 116, 16, 8, 14, 0, 1, 8, 204, 0, 16, 6, 15, -2, 0, 4, 205, 7, 16, 6, 15, -1, 0, 4, 206, 242, 0, 8, 15, -2, 0, 4, 207, 134, 16, 6, 14, -1, 1, 4, 208, 141, 44, 11, 11, -1, 4, 10, 209, 145, 0, 10, 15, 0, 0, 11, 210, 0, 0, 12, 15, -1, 0, 11, 211, 39, 0, 12, 15, -1, 0, 11, 212, 26, 0, 12, 15, -1, 0, 11, 213, 13, 0, 12, 15, -1, 0, 11, 214, 49, 16, 12, 14, -1, 1, 11, 215, 0, 81, 8, 8, 0, 6, 8, 216, 52, 0, 11, 15, 0, 2, 11, 217, 167, 0, 10, 15, 0, 0, 10, 218, 134, 0, 10, 15, 0, 0, 10, 219, 156, 0, 10, 15, 0, 0, 10, 220, 86, 16, 10, 14, 0, 1, 10, 221, 112, 0, 10, 15, -1, 0, 8, 222, 226, 54, 8, 11, 0, 4, 9, 223, 77, 31, 8, 12, 0, 3, 9, 224, 113, 31, 8, 12, -1, 3, 8, 225, 122, 31, 8, 12, -1, 3, 8, 226, 131, 31, 8, 12, -1, 3, 8, 227, 167, 30, 8, 12, -1, 3, 8, 228, 235, 53, 8, 11, -1, 4, 8, 229, 50, 31, 8, 12, -1, 3, 8, 230, 172, 67, 12, 8, 0, 7, 12, 231, 51, 69, 7, 11, 0, 7, 7, 232, 40, 32, 9, 12, -1, 3, 8, 233, 231, 16, 9, 12, -1, 3, 8, 234, 241, 16, 9, 12, -1, 3, 8, 235, 30, 57, 9, 11, -1, 4, 8, 236, 200, 29, 6, 12, -2, 3, 4, 237, 214, 29, 6, 12, -1, 3, 4, 238, 207, 29, 6, 12, -1, 3, 4, 239, 59, 69, 6, 11, -1, 4, 4, 240, 86, 31, 8, 12, 0, 3, 9, 241, 95, 31, 8, 12, 0, 3, 9, 242, 0, 32, 9, 12, -1, 3, 9, 243, 10, 32, 9, 12, -1, 3, 9, 244, 20, 32, 9, 12, -1, 3, 9, 245, 30, 32, 9, 12, -1, 3, 9, 246, 130, 56, 9, 11, -1, 4, 9, 247, 120, 68, 8, 9, -1, 5, 8, 248, 92, 68, 9, 10, 0, 6, 9, 249, 140, 31, 8, 12, 0, 3, 9, 250, 149, 30, 8, 12, 0, 3, 9, 251, 158, 30, 8, 12, 0, 3, 9, 252, 9, 69, 8, 11, 0, 4, 9, 253, 178, 0, 9, 15, -1, 3, 8, 254, 197, 0, 8, 15, 0, 3, 9, 255, 97, 16, 9, 14, -1, 4, 8 };
diff --git a/editor/doc_font.h b/editor/doc_font.h
deleted file mode 100644
index ae80db7b1c..0000000000
--- a/editor/doc_font.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*************************************************************************/
-/* doc_font.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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. */
-/*************************************************************************/
-static const int _bi_font_doc_font_height = 18;
-static const int _bi_font_doc_font_ascent = 14;
-static const int _bi_font_doc_font_charcount = 193;
-static const int _bi_font_doc_font_characters[] = { 0, 253, 3, 2, 2, -1, 13, 0, 13, 253, 9, 2, 2, -1, 13, 0, 32, 253, 0, 2, 2, -1, 13, 3, 33, 220, 26, 3, 11, 1, 3, 5, 34, 187, 59, 5, 5, 0, 3, 6, 35, 88, 40, 9, 10, -1, 4, 7, 36, 50, 0, 8, 14, -1, 2, 7, 37, 175, 14, 11, 11, -1, 3, 11, 38, 187, 14, 11, 11, -1, 3, 10, 39, 198, 58, 3, 5, 0, 3, 3, 40, 98, 0, 4, 14, 0, 3, 5, 41, 103, 0, 4, 14, 0, 3, 5, 42, 146, 61, 7, 6, 0, 3, 7, 43, 246, 48, 8, 8, -1, 5, 7, 44, 193, 58, 4, 5, -1, 11, 4, 45, 13, 73, 5, 2, 0, 9, 5, 46, 241, 57, 3, 3, 0, 11, 4, 47, 84, 0, 7, 14, -1, 2, 6, 48, 246, 37, 8, 10, -1, 4, 7, 49, 33, 52, 7, 10, 0, 4, 7, 50, 237, 37, 8, 10, -1, 4, 7, 51, 219, 38, 8, 10, -1, 4, 7, 52, 128, 39, 9, 10, -1, 4, 7, 53, 41, 52, 7, 10, -1, 4, 7, 54, 9, 53, 7, 10, 0, 4, 7, 55, 228, 38, 8, 10, -1, 4, 7, 56, 57, 52, 7, 10, 0, 4, 7, 57, 65, 51, 7, 10, 0, 4, 7, 58, 98, 62, 4, 8, 0, 6, 4, 59, 162, 50, 5, 10, -1, 6, 4, 60, 174, 49, 8, 9, -1, 4, 7, 61, 179, 59, 7, 5, 0, 7, 7, 62, 228, 49, 8, 8, -1, 5, 7, 63, 89, 28, 7, 11, 0, 3, 7, 64, 54, 15, 12, 12, 0, 4, 13, 65, 36, 41, 10, 10, -1, 4, 9, 66, 97, 51, 7, 10, 0, 4, 8, 67, 174, 38, 8, 10, 0, 4, 8, 68, 156, 39, 8, 10, 0, 4, 9, 69, 105, 51, 7, 10, 0, 4, 7, 70, 121, 51, 6, 10, 0, 4, 7, 71, 0, 53, 8, 10, 0, 4, 9, 72, 192, 38, 8, 10, 0, 4, 9, 73, 251, 26, 3, 10, 0, 4, 4, 74, 156, 50, 5, 10, -1, 4, 5, 75, 147, 39, 8, 10, 0, 4, 8, 76, 135, 50, 6, 10, 0, 4, 6, 77, 13, 41, 11, 10, 0, 4, 12, 78, 210, 38, 8, 10, 0, 4, 10, 79, 68, 40, 9, 10, 0, 4, 10, 80, 113, 51, 7, 10, 0, 4, 8, 81, 199, 14, 10, 11, 0, 4, 10, 82, 183, 38, 8, 10, 0, 4, 8, 83, 128, 50, 6, 10, 0, 4, 7, 84, 108, 40, 9, 10, -1, 4, 7, 85, 165, 39, 8, 10, 0, 4, 9, 86, 25, 41, 10, 10, -1, 4, 9, 87, 236, 26, 14, 10, -1, 4, 13, 88, 98, 40, 9, 10, -1, 4, 8, 89, 118, 40, 9, 10, -1, 4, 7, 90, 138, 39, 8, 10, -1, 4, 7, 91, 49, 15, 4, 13, 0, 3, 5, 92, 76, 0, 7, 14, -1, 2, 6, 93, 43, 15, 5, 13, -1, 3, 5, 94, 137, 61, 8, 6, -1, 4, 7, 95, 245, 57, 9, 2, -1, 15, 7, 96, 230, 58, 5, 3, -1, 3, 4, 97, 57, 63, 7, 8, 0, 6, 7, 98, 81, 28, 7, 11, 0, 3, 8, 99, 79, 62, 6, 8, 0, 6, 6, 100, 33, 29, 7, 11, 0, 3, 8, 101, 9, 64, 7, 8, 0, 6, 8, 102, 200, 26, 6, 11, -1, 3, 5, 103, 153, 27, 7, 11, 0, 6, 7, 104, 121, 27, 7, 11, 0, 3, 8, 105, 224, 26, 3, 11, 0, 3, 4, 106, 92, 0, 5, 14, -2, 3, 4, 107, 25, 29, 7, 11, 0, 3, 7, 108, 228, 26, 3, 11, 0, 3, 4, 109, 204, 49, 11, 8, 0, 6, 12, 110, 17, 63, 7, 8, 0, 6, 8, 111, 33, 63, 7, 8, 0, 6, 8, 112, 17, 29, 7, 11, 0, 6, 8, 113, 9, 29, 7, 11, 0, 6, 8, 114, 86, 62, 5, 8, 0, 6, 5, 115, 92, 62, 5, 8, 0, 6, 6, 116, 168, 50, 5, 10, -1, 4, 5, 117, 49, 63, 7, 8, 0, 6, 8, 118, 0, 64, 8, 8, -1, 6, 7, 119, 216, 49, 11, 8, -1, 6, 10, 120, 41, 63, 7, 8, -1, 6, 7, 121, 0, 30, 8, 11, -1, 6, 7, 122, 72, 62, 6, 8, 0, 6, 6, 123, 8, 15, 6, 13, -1, 3, 5, 124, 0, 0, 3, 15, 1, 2, 7, 125, 15, 15, 6, 13, -1, 3, 5, 126, 202, 58, 8, 4, -1, 4, 7, 160, 253, 6, 2, 2, -1, 13, 3, 161, 232, 26, 3, 11, 0, 4, 5, 162, 149, 50, 6, 10, 0, 4, 7, 163, 17, 52, 7, 10, 0, 4, 7, 164, 183, 49, 8, 9, -1, 5, 7, 165, 47, 41, 10, 10, -2, 4, 7, 166, 4, 0, 3, 15, 2, 2, 7, 167, 122, 14, 7, 12, 0, 3, 7, 168, 0, 73, 6, 2, -1, 4, 6, 169, 162, 14, 12, 11, 0, 3, 13, 170, 65, 62, 6, 8, -1, 4, 6, 171, 112, 62, 8, 7, -1, 6, 8, 172, 211, 58, 7, 4, -1, 8, 7, 173, 19, 72, 5, 2, 0, 9, 5, 174, 103, 62, 8, 7, -1, 3, 8, 175, 7, 73, 5, 2, 0, 3, 6, 176, 171, 61, 7, 5, -1, 3, 5, 177, 58, 40, 9, 10, -1, 4, 7, 178, 154, 61, 5, 6, 0, 2, 5, 179, 160, 61, 5, 6, -1, 2, 5, 180, 224, 58, 5, 3, -1, 3, 4, 181, 241, 14, 8, 11, 0, 6, 8, 182, 97, 15, 8, 12, 0, 4, 9, 183, 236, 58, 4, 3, 0, 8, 4, 184, 219, 58, 4, 4, 0, 13, 5, 185, 166, 61, 4, 6, 0, 2, 4, 186, 25, 63, 7, 8, -1, 4, 6, 187, 129, 61, 7, 7, 0, 6, 8, 188, 221, 14, 9, 11, 0, 3, 10, 189, 231, 14, 9, 11, 0, 3, 10, 190, 210, 14, 10, 11, -1, 3, 10, 191, 41, 29, 7, 11, -1, 4, 7, 192, 141, 0, 10, 13, -1, 1, 9, 193, 130, 0, 10, 13, -1, 1, 9, 194, 119, 0, 10, 13, -1, 1, 9, 195, 20, 0, 10, 14, -1, 0, 9, 196, 67, 15, 10, 12, -1, 2, 9, 197, 108, 0, 10, 13, -1, 1, 9, 198, 0, 42, 12, 10, -1, 4, 11, 199, 228, 0, 8, 13, 0, 4, 8, 200, 245, 0, 7, 13, 0, 1, 7, 201, 237, 0, 7, 13, 0, 1, 7, 202, 0, 16, 7, 13, 0, 1, 7, 203, 130, 14, 7, 12, 0, 2, 7, 204, 36, 15, 6, 13, -2, 1, 4, 205, 22, 15, 6, 13, -1, 1, 4, 206, 29, 15, 6, 13, -1, 1, 4, 207, 154, 14, 7, 12, -2, 2, 4, 208, 78, 40, 9, 10, -1, 4, 9, 209, 59, 0, 8, 14, 0, 0, 10, 210, 172, 0, 9, 13, 0, 1, 10, 211, 152, 0, 9, 13, 0, 1, 10, 212, 182, 0, 9, 13, 0, 1, 10, 213, 31, 0, 9, 14, 0, 0, 10, 214, 78, 15, 9, 12, 0, 2, 10, 215, 121, 62, 7, 7, 0, 6, 7, 216, 8, 0, 11, 14, -1, 2, 10, 217, 192, 0, 8, 13, 0, 1, 9, 218, 210, 0, 8, 13, 0, 1, 9, 219, 201, 0, 8, 13, 0, 1, 9, 220, 88, 15, 8, 12, 0, 2, 9, 221, 162, 0, 9, 13, -1, 1, 7, 222, 81, 51, 7, 10, 0, 4, 8, 223, 49, 29, 7, 11, 0, 3, 8, 224, 57, 28, 7, 11, 0, 3, 7, 225, 65, 28, 7, 11, 0, 3, 7, 226, 73, 28, 7, 11, 0, 3, 7, 227, 138, 14, 7, 12, 0, 2, 7, 228, 25, 52, 7, 10, 0, 4, 7, 229, 146, 14, 7, 12, 0, 2, 7, 230, 192, 49, 11, 8, 0, 6, 12, 231, 207, 26, 6, 11, 0, 6, 6, 232, 97, 28, 7, 11, 0, 3, 8, 233, 105, 28, 7, 11, 0, 3, 8, 234, 113, 28, 7, 11, 0, 3, 8, 235, 73, 51, 7, 10, 0, 4, 8, 236, 214, 26, 5, 11, -2, 3, 3, 237, 250, 14, 5, 11, -1, 3, 3, 238, 193, 26, 6, 11, -2, 3, 3, 239, 142, 50, 6, 10, -2, 4, 3, 240, 185, 26, 7, 11, 0, 3, 8, 241, 106, 15, 7, 12, 0, 2, 8, 242, 129, 27, 7, 11, 0, 3, 8, 243, 137, 27, 7, 11, 0, 3, 8, 244, 145, 27, 7, 11, 0, 3, 8, 245, 114, 14, 7, 12, 0, 2, 8, 246, 49, 52, 7, 10, 0, 4, 8, 247, 237, 48, 8, 8, -1, 5, 7, 248, 201, 38, 8, 10, 0, 5, 8, 249, 161, 27, 7, 11, 0, 3, 8, 250, 169, 26, 7, 11, 0, 3, 8, 251, 177, 26, 7, 11, 0, 3, 8, 252, 89, 51, 7, 10, 0, 4, 8, 253, 41, 0, 8, 14, -1, 3, 7, 254, 68, 0, 7, 14, 0, 3, 8, 255, 219, 0, 8, 13, -1, 4, 7 };
diff --git a/editor/doc_title_font.h b/editor/doc_title_font.h
deleted file mode 100644
index d190896f18..0000000000
--- a/editor/doc_title_font.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*************************************************************************/
-/* doc_title_font.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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. */
-/*************************************************************************/
-static const int _bi_font_doc_title_font_height = 22;
-static const int _bi_font_doc_title_font_ascent = 17;
-static const int _bi_font_doc_title_font_charcount = 193;
-static const int _bi_font_doc_title_font_characters[] = { 0, 108, 97, 2, 2, -1, 16, 0, 13, 111, 97, 2, 2, -1, 16, 0, 32, 252, 55, 2, 2, -1, 16, 4, 33, 84, 48, 3, 13, 1, 4, 6, 34, 9, 99, 6, 6, 0, 4, 8, 35, 52, 76, 9, 12, -1, 5, 9, 36, 31, 18, 9, 16, 0, 3, 9, 37, 28, 35, 13, 13, -1, 4, 13, 38, 56, 35, 12, 13, 0, 4, 13, 39, 16, 99, 3, 6, 0, 4, 4, 40, 48, 0, 5, 17, 0, 3, 6, 41, 54, 0, 5, 17, 0, 3, 6, 42, 207, 84, 9, 8, 0, 3, 9, 43, 121, 86, 9, 9, 0, 7, 9, 44, 251, 71, 4, 6, -1, 13, 5, 45, 102, 97, 5, 3, 0, 10, 6, 46, 66, 99, 4, 4, 0, 13, 5, 47, 24, 0, 9, 17, -2, 3, 8, 48, 11, 76, 10, 12, -1, 5, 9, 49, 102, 74, 9, 12, 0, 5, 9, 50, 48, 63, 10, 12, -1, 5, 9, 51, 59, 63, 10, 12, -1, 5, 9, 52, 70, 63, 10, 12, -1, 5, 9, 53, 81, 62, 10, 12, -1, 5, 9, 54, 235, 59, 10, 12, -1, 5, 9, 55, 103, 61, 10, 12, -1, 5, 9, 56, 114, 60, 10, 12, -1, 5, 9, 57, 125, 60, 10, 12, -1, 5, 9, 58, 252, 45, 3, 9, 0, 8, 5, 59, 246, 71, 4, 11, -1, 8, 5, 60, 148, 73, 8, 12, 0, 5, 9, 61, 0, 100, 8, 7, 0, 8, 9, 62, 139, 73, 8, 12, 0, 5, 9, 63, 40, 49, 8, 13, 0, 4, 8, 64, 184, 17, 15, 14, 0, 5, 16, 65, 178, 47, 12, 12, -1, 5, 11, 66, 136, 60, 10, 12, 0, 5, 10, 67, 240, 45, 11, 12, -1, 5, 10, 68, 0, 63, 11, 12, 0, 5, 11, 69, 130, 73, 8, 12, 0, 5, 9, 70, 112, 74, 8, 12, 0, 5, 8, 71, 191, 46, 12, 12, -1, 5, 11, 72, 24, 63, 11, 12, 0, 5, 11, 73, 193, 72, 4, 12, 0, 5, 5, 74, 173, 73, 6, 12, -1, 5, 6, 75, 147, 60, 10, 12, 0, 5, 10, 76, 121, 73, 8, 12, 0, 5, 8, 77, 122, 47, 15, 12, 0, 5, 16, 78, 12, 63, 11, 12, 0, 5, 12, 79, 138, 47, 13, 12, -1, 5, 12, 80, 62, 76, 9, 12, 0, 5, 10, 81, 200, 17, 14, 14, -1, 5, 12, 82, 158, 60, 10, 12, 0, 5, 10, 83, 32, 76, 9, 12, -1, 5, 9, 84, 169, 60, 10, 12, -1, 5, 9, 85, 204, 46, 11, 12, 0, 5, 12, 86, 165, 47, 12, 12, -1, 5, 11, 87, 88, 48, 17, 12, -1, 5, 16, 88, 216, 46, 11, 12, -1, 5, 10, 89, 228, 46, 11, 12, -1, 5, 9, 90, 180, 60, 10, 12, -1, 5, 9, 91, 249, 0, 5, 16, 0, 4, 6, 92, 13, 0, 10, 17, -2, 3, 8, 93, 85, 17, 5, 16, 0, 4, 6, 94, 196, 85, 10, 8, -1, 5, 9, 95, 71, 99, 10, 3, -1, 17, 9, 96, 46, 99, 6, 4, -1, 4, 5, 97, 111, 87, 9, 9, -1, 8, 9, 98, 207, 32, 9, 13, 0, 4, 10, 99, 161, 86, 8, 9, -1, 8, 8, 100, 69, 34, 10, 13, -1, 4, 10, 101, 89, 88, 10, 9, -1, 8, 9, 102, 58, 49, 7, 13, -1, 4, 6, 103, 191, 59, 10, 12, -1, 8, 9, 104, 177, 33, 9, 13, 0, 4, 10, 105, 187, 73, 5, 12, -1, 5, 4, 106, 177, 17, 6, 15, -2, 5, 5, 107, 217, 32, 9, 13, 0, 4, 9, 108, 250, 17, 4, 13, 0, 4, 4, 109, 24, 89, 14, 9, 0, 8, 15, 110, 151, 86, 9, 9, 0, 8, 10, 111, 100, 87, 10, 9, -1, 8, 10, 112, 42, 76, 9, 12, 0, 8, 10, 113, 213, 59, 10, 12, -1, 8, 10, 114, 188, 86, 7, 9, 0, 8, 6, 115, 170, 86, 8, 9, -1, 8, 7, 116, 230, 72, 7, 11, -1, 6, 6, 117, 141, 86, 9, 9, 0, 8, 10, 118, 78, 89, 10, 9, -1, 8, 9, 119, 8, 89, 15, 9, -1, 8, 13, 120, 131, 86, 9, 9, -1, 8, 8, 121, 224, 59, 10, 12, -1, 8, 9, 122, 179, 86, 8, 9, -1, 8, 7, 123, 34, 0, 6, 17, -1, 3, 6, 124, 64, 0, 3, 17, 2, 3, 9, 125, 41, 0, 6, 17, 0, 3, 6, 126, 30, 99, 9, 5, 0, 5, 9, 160, 114, 97, 2, 2, -1, 16, 4, 161, 80, 48, 3, 13, 1, 6, 6, 162, 165, 73, 7, 12, 0, 5, 9, 163, 92, 74, 9, 12, 0, 5, 9, 164, 209, 72, 10, 11, -1, 6, 9, 165, 36, 63, 11, 12, -2, 5, 9, 166, 60, 0, 3, 17, 2, 3, 9, 167, 151, 17, 8, 15, 0, 4, 9, 168, 82, 99, 6, 3, 0, 5, 7, 169, 236, 17, 13, 13, 0, 4, 15, 170, 238, 72, 7, 11, 0, 5, 7, 171, 54, 89, 11, 9, -1, 7, 10, 172, 20, 99, 9, 5, -1, 10, 9, 173, 96, 98, 5, 3, 0, 10, 6, 174, 226, 84, 8, 8, 0, 4, 9, 175, 89, 98, 6, 3, 0, 4, 7, 176, 40, 99, 5, 5, 0, 4, 6, 177, 22, 76, 9, 12, 0, 5, 9, 178, 235, 84, 6, 8, 0, 3, 6, 179, 242, 84, 6, 8, 0, 3, 6, 180, 53, 99, 6, 4, -1, 4, 5, 181, 0, 76, 10, 12, 0, 8, 10, 182, 215, 17, 10, 14, 0, 5, 11, 183, 251, 78, 3, 4, 0, 9, 5, 184, 60, 99, 5, 4, 0, 16, 5, 185, 249, 83, 5, 8, -1, 3, 5, 186, 0, 89, 7, 10, 0, 5, 8, 187, 66, 89, 11, 9, -1, 7, 10, 188, 42, 35, 13, 13, -1, 4, 12, 189, 0, 35, 13, 13, -1, 4, 12, 190, 14, 35, 13, 13, -1, 4, 13, 191, 49, 49, 8, 13, -1, 6, 8, 192, 150, 0, 12, 16, -1, 1, 11, 193, 176, 0, 12, 16, -1, 1, 11, 194, 163, 0, 12, 16, -1, 1, 11, 195, 124, 0, 12, 16, -1, 1, 11, 196, 105, 17, 12, 15, -1, 2, 11, 197, 0, 0, 12, 17, -1, 0, 11, 198, 106, 47, 15, 12, -1, 5, 14, 199, 141, 17, 9, 15, 0, 5, 10, 200, 60, 18, 8, 16, 0, 1, 9, 201, 41, 18, 9, 16, 0, 1, 9, 202, 21, 18, 9, 16, 0, 1, 9, 203, 160, 17, 8, 15, 0, 2, 9, 204, 69, 17, 7, 16, -2, 1, 5, 205, 77, 17, 7, 16, -1, 1, 5, 206, 51, 18, 8, 16, -2, 1, 5, 207, 169, 17, 7, 15, -2, 2, 5, 208, 152, 47, 12, 12, -1, 5, 12, 209, 237, 0, 11, 16, 0, 1, 12, 210, 82, 0, 13, 16, -1, 1, 12, 211, 68, 0, 13, 16, -1, 1, 12, 212, 110, 0, 13, 16, -1, 1, 12, 213, 96, 0, 13, 16, -1, 1, 12, 214, 91, 17, 13, 15, -1, 2, 12, 215, 217, 84, 8, 8, 0, 8, 9, 216, 137, 0, 12, 16, 0, 3, 12, 217, 225, 0, 11, 16, 0, 1, 12, 218, 189, 0, 11, 16, 0, 1, 12, 219, 213, 0, 11, 16, 0, 1, 12, 220, 118, 17, 11, 15, 0, 2, 12, 221, 201, 0, 11, 16, -1, 1, 9, 222, 72, 76, 9, 12, 0, 5, 10, 223, 167, 33, 9, 13, 0, 4, 10, 224, 157, 33, 9, 13, -1, 4, 9, 225, 30, 49, 9, 13, -1, 4, 9, 226, 227, 32, 9, 13, -1, 4, 9, 227, 237, 31, 9, 13, -1, 4, 9, 228, 82, 75, 9, 12, -1, 5, 9, 229, 226, 17, 9, 14, -1, 3, 9, 230, 39, 89, 14, 9, 0, 8, 14, 231, 157, 73, 7, 12, 0, 8, 8, 232, 146, 33, 10, 13, -1, 4, 9, 233, 80, 34, 10, 13, -1, 4, 9, 234, 91, 33, 10, 13, -1, 4, 9, 235, 92, 61, 10, 12, -1, 5, 9, 236, 66, 49, 6, 13, -2, 4, 4, 237, 73, 48, 6, 13, -1, 4, 4, 238, 247, 31, 8, 13, -2, 4, 4, 239, 180, 73, 6, 12, -1, 5, 4, 240, 187, 32, 9, 13, 0, 4, 10, 241, 197, 32, 9, 13, 0, 4, 10, 242, 102, 33, 10, 13, -1, 4, 10, 243, 113, 33, 10, 13, -1, 4, 10, 244, 124, 33, 10, 13, -1, 4, 10, 245, 135, 33, 10, 13, -1, 4, 10, 246, 202, 59, 10, 12, -1, 5, 10, 247, 220, 72, 9, 11, -1, 6, 9, 248, 198, 72, 10, 11, 0, 7, 10, 249, 0, 49, 9, 13, 0, 4, 10, 250, 10, 49, 9, 13, 0, 4, 10, 251, 20, 49, 9, 13, 0, 4, 10, 252, 246, 58, 9, 12, 0, 5, 10, 253, 0, 18, 10, 16, -1, 4, 9, 254, 11, 18, 9, 16, 0, 4, 10, 255, 130, 17, 10, 15, -1, 5, 9 };
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index 1d6d933924..9ab539da07 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_about.h"
#include "editor_node.h"
@@ -131,7 +132,8 @@ EditorAbout::EditorAbout() {
Label *about_text = memnew(Label);
about_text->set_v_size_flags(Control::SIZE_SHRINK_CENTER);
- about_text->set_text(VERSION_FULL_NAME + hash + String::utf8("\n\xc2\xa9 2007-2018 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2017 ") +
+ about_text->set_text(VERSION_FULL_NAME + hash +
+ String::utf8("\n\xc2\xa9 2007-2018 Juan Linietsky, Ariel Manzur.\n\xc2\xa9 2014-2018 ") +
TTR("Godot Engine contributors") + "\n");
hbc->add_child(about_text);
diff --git a/editor/editor_about.h b/editor/editor_about.h
index c573382679..b32fdf6567 100644
--- a/editor/editor_about.h
+++ b/editor/editor_about.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_ABOUT_H
#define EDITOR_ABOUT_H
diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp
index 8a3e1e85f7..f1c8c08d08 100644
--- a/editor/editor_asset_installer.cpp
+++ b/editor/editor_asset_installer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_asset_installer.h"
#include "editor_node.h"
diff --git a/editor/editor_asset_installer.h b/editor/editor_asset_installer.h
index 09ea405c07..a80087861a 100644
--- a/editor/editor_asset_installer.h
+++ b/editor/editor_asset_installer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORASSETINSTALLER_H
#define EDITORASSETINSTALLER_H
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index a64b4922f2..9d0de930f2 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_audio_buses.h"
#include "editor_node.h"
diff --git a/editor/editor_audio_buses.h b/editor/editor_audio_buses.h
index 850cb0bd15..4cdcb65d7b 100644
--- a/editor/editor_audio_buses.h
+++ b/editor/editor_audio_buses.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORAUDIOBUSES_H
#define EDITORAUDIOBUSES_H
diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp
index 960e0e0bb7..393c33c1b0 100644
--- a/editor/editor_autoload_settings.cpp
+++ b/editor/editor_autoload_settings.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_autoload_settings.h"
#include "editor_node.h"
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index 4acee1363c..95ed40d889 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_data.h"
#include "editor_node.h"
@@ -37,7 +38,7 @@
#include "project_settings.h"
#include "scene/resources/packed_scene.h"
-void EditorHistory::_cleanup_history() {
+void EditorHistory::cleanup_history() {
for (int i = 0; i < history.size(); i++) {
@@ -47,8 +48,14 @@ void EditorHistory::_cleanup_history() {
if (!history[i].path[j].ref.is_null())
continue;
- if (ObjectDB::get_instance(history[i].path[j].object))
- continue; //has isntance, try next
+ Object *obj = ObjectDB::get_instance(history[i].path[j].object);
+ if (obj) {
+ Node *n = Object::cast_to<Node>(obj);
+ if (n && n->is_inside_tree())
+ continue;
+ if (!n) // Possibly still alive
+ continue;
+ }
if (j <= history[i].level) {
//before or equal level, complete fail
@@ -151,7 +158,7 @@ bool EditorHistory::is_at_end() const {
bool EditorHistory::next() {
- _cleanup_history();
+ cleanup_history();
if ((current + 1) < history.size())
current++;
@@ -163,7 +170,7 @@ bool EditorHistory::next() {
bool EditorHistory::previous() {
- _cleanup_history();
+ cleanup_history();
if (current > 0)
current--;
@@ -822,7 +829,7 @@ void EditorSelection::add_node(Node *p_node) {
}
selection[p_node] = meta;
- p_node->connect("tree_exited", this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
+ p_node->connect("tree_exiting", this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
//emit_signal("selection_changed");
}
@@ -840,7 +847,7 @@ void EditorSelection::remove_node(Node *p_node) {
if (meta)
memdelete(meta);
selection.erase(p_node);
- p_node->disconnect("tree_exited", this, "_node_removed");
+ p_node->disconnect("tree_exiting", this, "_node_removed");
//emit_signal("selection_changed");
}
bool EditorSelection::is_selected(Node *p_node) const {
@@ -880,6 +887,7 @@ void EditorSelection::_bind_methods() {
ClassDB::bind_method(D_METHOD("remove_node", "node"), &EditorSelection::remove_node);
ClassDB::bind_method(D_METHOD("get_selected_nodes"), &EditorSelection::_get_selected_nodes);
ClassDB::bind_method(D_METHOD("get_transformable_selected_nodes"), &EditorSelection::_get_transformable_selected_nodes);
+ ClassDB::bind_method(D_METHOD("_emit_change"), &EditorSelection::_emit_change);
ADD_SIGNAL(MethodInfo("selection_changed"));
}
@@ -923,7 +931,15 @@ void EditorSelection::update() {
if (!changed)
return;
changed = false;
+ if (!emitted) {
+ emitted = true;
+ call_deferred("_emit_change");
+ }
+}
+
+void EditorSelection::_emit_change() {
emit_signal("selection_changed");
+ emitted = false;
}
List<Node *> &EditorSelection::get_selected_node_list() {
@@ -947,6 +963,7 @@ void EditorSelection::clear() {
}
EditorSelection::EditorSelection() {
+ emitted = false;
changed = false;
nl_changed = false;
}
diff --git a/editor/editor_data.h b/editor/editor_data.h
index 2c95c3feea..844145853d 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_DATA_H
#define EDITOR_DATA_H
@@ -69,11 +70,11 @@ class EditorHistory {
Variant value;
};
- void _cleanup_history();
-
void _add_object(ObjectID p_object, const String &p_property, int p_level_change);
public:
+ void cleanup_history();
+
bool is_at_beginning() const;
bool is_at_end() const;
@@ -210,9 +211,10 @@ class EditorSelection : public Object {
GDCLASS(EditorSelection, Object);
-public:
+private:
Map<Node *, Object *> selection;
+ bool emitted;
bool changed;
bool nl_changed;
@@ -224,6 +226,7 @@ public:
void _update_nl();
Array _get_selected_nodes();
Array _get_transformable_selected_nodes();
+ void _emit_change();
protected:
static void _bind_methods();
diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp
index bf9c1ec9c6..c094b2b559 100644
--- a/editor/editor_dir_dialog.cpp
+++ b/editor/editor_dir_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_dir_dialog.h"
#include "editor/editor_file_system.h"
diff --git a/editor/editor_dir_dialog.h b/editor/editor_dir_dialog.h
index 8f585ae311..7c19e7de38 100644
--- a/editor/editor_dir_dialog.h
+++ b/editor/editor_dir_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_DIR_DIALOG_H
#define EDITOR_DIR_DIALOG_H
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index 1a10040bac..c9ac62a74d 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_export.h"
#include "editor/editor_file_system.h"
@@ -1347,7 +1348,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
}
if (template_path != String() && !FileAccess::exists(template_path)) {
- EditorNode::get_singleton()->show_warning(TTR("Template file not found:\n") + template_path);
+ EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path);
return ERR_FILE_NOT_FOUND;
}
@@ -1361,7 +1362,19 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
String pck_path = p_path.get_basename() + ".pck";
- return save_pack(p_preset, pck_path);
+ Vector<SharedObject> so_files;
+
+ err = save_pack(p_preset, pck_path, &so_files);
+
+ if (err != OK || so_files.empty())
+ return err;
+ //if shared object files, copy them
+ da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ for (int i = 0; i < so_files.size(); i++) {
+ da->copy(so_files[i].path, p_path.get_base_dir().plus_file(so_files[i].path.get_file()));
+ }
+ memdelete(da);
+ return OK;
}
void EditorExportPlatformPC::set_extension(const String &p_extension, const String &p_feature_key) {
diff --git a/editor/editor_export.h b/editor/editor_export.h
index aa0391c8f5..e851769279 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_EXPORT_H
#define EDITOR_EXPORT_H
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index 1bf4c6741d..22b33cc98f 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_file_dialog.h"
#include "dependency_editor.h"
#include "editor_resource_preview.h"
@@ -457,6 +458,23 @@ void EditorFileDialog::_item_selected(int p_item) {
get_ok()->set_disabled(_is_open_should_be_disabled());
}
+void EditorFileDialog::_multi_selected(int p_item, bool p_selected) {
+
+ int current = p_item;
+ if (current < 0 || current >= item_list->get_item_count())
+ return;
+
+ Dictionary d = item_list->get_item_metadata(current);
+
+ if (!d["dir"] && p_selected) {
+
+ file->set_text(d["name"]);
+ _request_single_thumbnail(get_current_dir().plus_file(get_current_file()));
+ }
+
+ get_ok()->set_disabled(_is_open_should_be_disabled());
+}
+
void EditorFileDialog::_items_clear_selection() {
item_list->unselect_all();
@@ -1289,6 +1307,7 @@ void EditorFileDialog::_bind_methods() {
ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorFileDialog::_unhandled_input);
ClassDB::bind_method(D_METHOD("_item_selected"), &EditorFileDialog::_item_selected);
+ ClassDB::bind_method(D_METHOD("_multi_selected"), &EditorFileDialog::_multi_selected);
ClassDB::bind_method(D_METHOD("_items_clear_selection"), &EditorFileDialog::_items_clear_selection);
ClassDB::bind_method(D_METHOD("_item_list_item_rmb_selected"), &EditorFileDialog::_item_list_item_rmb_selected);
ClassDB::bind_method(D_METHOD("_item_list_rmb_clicked"), &EditorFileDialog::_item_list_rmb_clicked);
@@ -1597,6 +1616,7 @@ EditorFileDialog::EditorFileDialog() {
connect("confirmed", this, "_action_pressed");
item_list->connect("item_selected", this, "_item_selected", varray(), CONNECT_DEFERRED);
+ item_list->connect("multi_selected", this, "_multi_selected", varray(), CONNECT_DEFERRED);
item_list->connect("item_activated", this, "_item_db_selected", varray());
item_list->connect("nothing_selected", this, "_items_clear_selection");
dir->connect("text_entered", this, "_dir_entered");
diff --git a/editor/editor_file_dialog.h b/editor/editor_file_dialog.h
index 1a7fa756cc..b1f8f1108c 100644
--- a/editor/editor_file_dialog.h
+++ b/editor/editor_file_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORFILEDIALOG_H
#define EDITORFILEDIALOG_H
@@ -158,6 +159,7 @@ private:
void _recent_selected(int p_idx);
void _item_selected(int p_item);
+ void _multi_selected(int p_item, bool p_selected);
void _items_clear_selection();
void _item_dc_selected(int p_item);
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index bff090cdbc..dca32d7492 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_file_system.h"
#include "editor_node.h"
@@ -1508,6 +1509,19 @@ void EditorFileSystem::_reimport_file(const String &p_file) {
void EditorFileSystem::reimport_files(const Vector<String> &p_files) {
+ { //check that .import folder exists
+ DirAccess *da = DirAccess::open("res://");
+ if (da->change_dir(".import") != OK) {
+ Error err = da->make_dir(".import");
+ if (err) {
+ memdelete(da);
+ ERR_EXPLAIN("Failed to create 'res://.import' folder.");
+ ERR_FAIL_COND(err != OK);
+ }
+ }
+ memdelete(da);
+ }
+
importing = true;
EditorProgress pr("reimport", TTR("(Re)Importing Assets"), p_files.size());
diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h
index 3e0325dfdc..a587d2879a 100644
--- a/editor/editor_file_system.h
+++ b/editor/editor_file_system.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_FILE_SYSTEM_H
#define EDITOR_FILE_SYSTEM_H
diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp
index f2882561aa..a58257962a 100644
--- a/editor/editor_fonts.cpp
+++ b/editor/editor_fonts.cpp
@@ -27,12 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_fonts.h"
#include "builtin_fonts.gen.h"
-#include "doc_code_font.h"
-#include "doc_font.h"
-#include "doc_title_font.h"
#include "editor_scale.h"
#include "editor_settings.h"
#include "scene/resources/default_theme/default_theme.h"
@@ -77,12 +75,50 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p
Ref<DynamicFont> m_name; \
m_name.instance(); \
m_name->set_size(m_size); \
- m_name->set_font_data(DefaultFont); \
+ if (CustomFont.is_valid()) { \
+ m_name->set_font_data(CustomFont); \
+ m_name->add_fallback(DefaultFont); \
+ } else { \
+ m_name->set_font_data(DefaultFont); \
+ } \
+ m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \
+ m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \
+ MAKE_FALLBACKS(m_name);
+
+#define MAKE_SOURCE_FONT(m_name, m_size) \
+ Ref<DynamicFont> m_name; \
+ m_name.instance(); \
+ m_name->set_size(m_size); \
+ if (CustomFontSource.is_valid()) { \
+ m_name->set_font_data(CustomFontSource); \
+ m_name->add_fallback(dfmono); \
+ } else { \
+ m_name->set_font_data(dfmono); \
+ } \
m_name->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE); \
m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE); \
MAKE_FALLBACKS(m_name);
void editor_register_fonts(Ref<Theme> p_theme) {
+ /* Custom font */
+
+ String custom_font = EditorSettings::get_singleton()->get("interface/editor/main_font");
+ Ref<DynamicFontData> CustomFont;
+ if (custom_font.length() > 0) {
+ CustomFont.instance();
+ CustomFont->set_font_path(custom_font);
+ CustomFont->set_force_autohinter(true); //just looks better..i think?
+ }
+
+ /* Custom source code font */
+
+ String custom_font_source = EditorSettings::get_singleton()->get("interface/editor/code_font");
+ Ref<DynamicFontData> CustomFontSource;
+ if (custom_font_source.length() > 0) {
+ CustomFontSource.instance();
+ CustomFontSource->set_font_path(custom_font_source);
+ }
+
/* Droid Sans */
Ref<DynamicFontData> DefaultFont;
@@ -122,7 +158,7 @@ void editor_register_fonts(Ref<Theme> p_theme) {
dfmono->set_font_ptr(_font_Hack_Regular, _font_Hack_Regular_size);
//dfd->set_force_autohinter(true); //just looks better..i think?
- int default_font_size = int(EditorSettings::get_singleton()->get("interface/editor/font_size")) * EDSCALE;
+ int default_font_size = int(EditorSettings::get_singleton()->get("interface/editor/main_font_size")) * EDSCALE;
MAKE_DEFAULT_FONT(df, default_font_size);
p_theme->set_default_theme_font(df);
@@ -130,10 +166,6 @@ void editor_register_fonts(Ref<Theme> p_theme) {
MAKE_DEFAULT_FONT(df_title, default_font_size + 2 * EDSCALE);
p_theme->set_font("title", "EditorFonts", df_title);
- //Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons"));
- //Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons"));
- //Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons"));
-
MAKE_DEFAULT_FONT(df_doc_title, int(EDITOR_DEF("text_editor/help/help_title_font_size", 23)) * EDSCALE);
MAKE_DEFAULT_FONT(df_doc, int(EDITOR_DEF("text_editor/help/help_font_size", 15)) * EDSCALE);
@@ -144,41 +176,15 @@ void editor_register_fonts(Ref<Theme> p_theme) {
MAKE_DEFAULT_FONT(df_rulers, 8 * EDSCALE);
p_theme->set_font("rulers", "EditorFonts", df_rulers);
- Ref<DynamicFont> df_code;
- df_code.instance();
- df_code->set_size(int(EditorSettings::get_singleton()->get("interface/editor/source_font_size")) * EDSCALE);
- df_code->set_font_data(dfmono);
- MAKE_FALLBACKS(df_code);
-
+ MAKE_SOURCE_FONT(df_code, int(EditorSettings::get_singleton()->get("interface/editor/code_font_size")) * EDSCALE);
p_theme->set_font("source", "EditorFonts", df_code);
- Ref<DynamicFont> df_doc_code;
- df_doc_code.instance();
- df_doc_code->set_size(int(EDITOR_DEF("text_editor/help/help_source_font_size", 14)) * EDSCALE);
- df_doc_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE);
- df_doc_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE);
- df_doc_code->set_font_data(dfmono);
- MAKE_FALLBACKS(df_doc_code);
-
+ MAKE_SOURCE_FONT(df_doc_code, int(EDITOR_DEF("text_editor/help/help_source_font_size", 14)) * EDSCALE);
p_theme->set_font("doc_source", "EditorFonts", df_doc_code);
- Ref<DynamicFont> df_output_code;
- df_output_code.instance();
- df_output_code->set_size(int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE);
- df_output_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE);
- df_output_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE);
- df_output_code->set_font_data(dfmono);
- MAKE_FALLBACKS(df_output_code);
-
+ MAKE_SOURCE_FONT(df_output_code, int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE);
p_theme->set_font("output_source", "EditorFonts", df_output_code);
- Ref<DynamicFont> df_text_editor_status_code;
- df_text_editor_status_code.instance();
- df_text_editor_status_code->set_size(14 * EDSCALE);
- df_text_editor_status_code->set_spacing(DynamicFont::SPACING_TOP, -EDSCALE);
- df_text_editor_status_code->set_spacing(DynamicFont::SPACING_BOTTOM, -EDSCALE);
- df_text_editor_status_code->set_font_data(dfmono);
- MAKE_FALLBACKS(df_text_editor_status_code);
-
+ MAKE_SOURCE_FONT(df_text_editor_status_code, 14 * EDSCALE);
p_theme->set_font("status_source", "EditorFonts", df_text_editor_status_code);
}
diff --git a/editor/editor_fonts.h b/editor/editor_fonts.h
index abbccb685d..d079b41b82 100644
--- a/editor/editor_fonts.h
+++ b/editor/editor_fonts.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_FONTS_H
#define EDITOR_FONTS_H
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index c094d4be6b..198a52fef2 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_help.h"
#include "doc_data_compressed.gen.h"
@@ -36,6 +37,8 @@
#include "os/keyboard.h"
#define CONTRIBUTE_URL "http://docs.godotengine.org/en/latest/community/contributing/updating_the_class_reference.html"
+#define CONTRIBUTE2_URL "https://github.com/godotengine/godot-docs"
+#define REQUEST_URL "https://github.com/godotengine/godot-docs/issues/new"
void EditorHelpSearch::popup() {
@@ -1289,6 +1292,46 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
class_desc->add_newline();
}
+ {
+
+ class_desc->push_color(title_color);
+ class_desc->push_font(doc_title_font);
+ class_desc->add_text(TTR("Online Tutorials:"));
+ class_desc->pop();
+ class_desc->pop();
+ class_desc->push_indent(1);
+
+ class_desc->push_font(doc_code_font);
+
+ class_desc->add_newline();
+ // class_desc->add_newline();
+
+ Vector<String> tutorials = cd.tutorials.split_spaces();
+ if (tutorials.size() != 0) {
+
+ for (int i = 0; i < tutorials.size(); i++) {
+ String link = tutorials[i];
+ String linktxt = link;
+ int seppos = linktxt.find("//");
+ if (seppos != -1) {
+ linktxt = link.right(seppos + 2);
+ }
+
+ class_desc->push_color(symbol_color);
+ class_desc->append_bbcode("[url=" + link + "]" + linktxt + "[/url]");
+ class_desc->pop();
+ class_desc->add_newline();
+ }
+ } else {
+ class_desc->push_color(comment_color);
+ class_desc->append_bbcode(TTR("There are currently no tutorials for this class, you can [color=$color][url=$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/url][/color].").replace("$url2", REQUEST_URL).replace("$url", CONTRIBUTE2_URL).replace("$color", link_color_text));
+ class_desc->pop();
+ }
+ class_desc->pop();
+ class_desc->pop();
+ class_desc->add_newline();
+ class_desc->add_newline();
+ }
if (property_descr) {
section_line.push_back(Pair<String, int>(TTR("Properties"), class_desc->get_line_count() - 2));
diff --git a/editor/editor_help.h b/editor/editor_help.h
index adcd73471e..db4c33afb0 100644
--- a/editor/editor_help.h
+++ b/editor/editor_help.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_HELP_H
#define EDITOR_HELP_H
diff --git a/editor/editor_initialize_ssl.cpp b/editor/editor_initialize_ssl.cpp
index 81521bc0a5..aedbfb7bd7 100644
--- a/editor/editor_initialize_ssl.cpp
+++ b/editor/editor_initialize_ssl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_initialize_ssl.h"
#include "certs_compressed.gen.h"
diff --git a/editor/editor_initialize_ssl.h b/editor/editor_initialize_ssl.h
index 52b67dea92..71d16b8c53 100644
--- a/editor/editor_initialize_ssl.h
+++ b/editor/editor_initialize_ssl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_INITIALIZE_SSL_H
#define EDITOR_INITIALIZE_SSL_H
diff --git a/editor/editor_log.cpp b/editor/editor_log.cpp
index cf19af7ef6..e301d12214 100644
--- a/editor/editor_log.cpp
+++ b/editor/editor_log.cpp
@@ -27,8 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_log.h"
+#include "core/os/keyboard.h"
#include "editor_node.h"
#include "scene/gui/center_container.h"
#include "scene/resources/dynamic_font.h"
@@ -65,7 +67,9 @@ void EditorLog::_notification(int p_what) {
Ref<DynamicFont> df_output_code = get_font("output_source", "EditorFonts");
if (df_output_code.is_valid()) {
df_output_code->set_size(int(EDITOR_DEF("run/output/font_size", 13)) * EDSCALE);
- log->add_font_override("normal_font", get_font("output_source", "EditorFonts"));
+ if (log != NULL) {
+ log->add_font_override("normal_font", get_font("output_source", "EditorFonts"));
+ }
}
}
@@ -154,6 +158,7 @@ EditorLog::EditorLog() {
clearbutton = memnew(Button);
hb->add_child(clearbutton);
clearbutton->set_text(TTR("Clear"));
+ clearbutton->set_shortcut(ED_SHORTCUT("editor/clear_output", TTR("Clear Output"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_K));
clearbutton->connect("pressed", this, "_clear_request");
log = memnew(RichTextLabel);
diff --git a/editor/editor_log.h b/editor/editor_log.h
index c75dc0dd44..42137f71cc 100644
--- a/editor/editor_log.h
+++ b/editor/editor_log.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_LOG_H
#define EDITOR_LOG_H
diff --git a/editor/editor_name_dialog.cpp b/editor/editor_name_dialog.cpp
index 25d12a75ff..bacb288273 100644
--- a/editor/editor_name_dialog.cpp
+++ b/editor/editor_name_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_name_dialog.h"
#include "class_db.h"
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index bd37e7d0be..98991cd7c0 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_node.h"
#include "core/bind/core_bind.h"
@@ -59,6 +60,7 @@
#include "editor/editor_themes.h"
#include "editor/import/editor_import_collada.h"
#include "editor/import/editor_scene_importer_gltf.h"
+#include "editor/import/resource_importer_bitmask.h"
#include "editor/import/resource_importer_csv_translation.h"
#include "editor/import/resource_importer_obj.h"
#include "editor/import/resource_importer_scene.h"
@@ -367,7 +369,7 @@ void EditorNode::_notification(int p_what) {
search_button->set_icon(gui_base->get_icon("Search", "EditorIcons"));
object_menu->set_icon(gui_base->get_icon("Tools", "EditorIcons"));
- // clear_button->set_icon(gui_base->get_icon("Close", "EditorIcons")); dont have access to that node. needs to become a class property
+ // clear_button->set_icon(gui_base->get_icon("Close", "EditorIcons")); don't have access to that node. needs to become a class property
update_menu->set_icon(gui_base->get_icon("Collapse", "EditorIcons"));
dock_tab_move_left->set_icon(theme->get_icon("Back", "EditorIcons"));
dock_tab_move_right->set_icon(theme->get_icon("Forward", "EditorIcons"));
@@ -391,42 +393,6 @@ void EditorNode::_fs_changed() {
E->get()->invalidate();
}
- if (export_defer.preset != "") {
- Ref<EditorExportPreset> preset;
- for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
- preset = EditorExport::get_singleton()->get_export_preset(i);
- if (preset->get_name() == export_defer.preset) {
- break;
- }
- preset.unref();
- }
- if (preset.is_null()) {
- String err = "Unknown export preset: " + export_defer.preset;
- ERR_PRINT(err.utf8().get_data());
- } else {
- Ref<EditorExportPlatform> platform = preset->get_platform();
- if (platform.is_null()) {
- String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
- ERR_PRINT(err.utf8().get_data());
- } else {
- // ensures export_project does not loop infinitely, because notifications may
- // come during the export
- export_defer.preset = "";
- if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) {
- if (export_defer.path.ends_with(".zip")) {
- platform->save_zip(preset, export_defer.path);
- } else if (export_defer.path.ends_with(".pck")) {
- platform->save_pack(preset, export_defer.path);
- }
- } else {
- platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
- }
- }
- }
-
- get_tree()->quit();
- }
-
{
//reload changed resources
List<Ref<Resource> > changed;
@@ -463,6 +429,42 @@ void EditorNode::_fs_changed() {
}
_mark_unsaved_scenes();
+
+ if (export_defer.preset != "" && !EditorFileSystem::get_singleton()->is_scanning()) {
+ Ref<EditorExportPreset> preset;
+ for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
+ preset = EditorExport::get_singleton()->get_export_preset(i);
+ if (preset->get_name() == export_defer.preset) {
+ break;
+ }
+ preset.unref();
+ }
+ if (preset.is_null()) {
+ String err = "Unknown export preset: " + export_defer.preset;
+ ERR_PRINT(err.utf8().get_data());
+ } else {
+ Ref<EditorExportPlatform> platform = preset->get_platform();
+ if (platform.is_null()) {
+ String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
+ ERR_PRINT(err.utf8().get_data());
+ } else {
+ // ensures export_project does not loop infinitely, because notifications may
+ // come during the export
+ export_defer.preset = "";
+ if (!preset->is_runnable() && (export_defer.path.ends_with(".pck") || export_defer.path.ends_with(".zip"))) {
+ if (export_defer.path.ends_with(".zip")) {
+ platform->save_zip(preset, export_defer.path);
+ } else if (export_defer.path.ends_with(".pck")) {
+ platform->save_pack(preset, export_defer.path);
+ }
+ } else {
+ platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
+ }
+ }
+ }
+
+ get_tree()->quit();
+ }
}
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
@@ -1020,7 +1022,7 @@ void EditorNode::_save_scene(String p_file, int idx) {
current_option = -1;
accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."));
+ accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances or inheritance) couldn't be satisfied."));
accept->popup_centered_minsize();
return;
}
@@ -1028,6 +1030,13 @@ void EditorNode::_save_scene(String p_file, int idx) {
// force creation of node path cache
// (hacky but needed for the tree to update properly)
Node *dummy_scene = sdata->instance(PackedScene::GEN_EDIT_STATE_INSTANCE);
+ if (!dummy_scene) {
+ current_option = -1;
+ accept->get_ok()->set_text(TTR("I see.."));
+ accept->set_text(TTR("Couldn't save scene. Likely dependencies (instances or inheritance) couldn't be satisfied."));
+ accept->popup_centered_minsize();
+ return;
+ }
memdelete(dummy_scene);
int flg = 0;
@@ -1389,7 +1398,7 @@ void EditorNode::_property_editor_forward() {
}
void EditorNode::_property_editor_back() {
- if (editor_history.previous())
+ if (editor_history.previous() || editor_history.get_path_size() == 1)
_edit_current();
}
@@ -4230,7 +4239,7 @@ void EditorNode::_bottom_panel_switch(bool p_enable, int p_idx) {
bottom_panel_items[i].button->set_pressed(i == p_idx);
bottom_panel_items[i].control->set_visible(i == p_idx);
}
- if (ScriptEditor::get_singleton()->get_debugger() == bottom_panel_items[p_idx].control) { // this is the debug panel wich uses tabs, so the top section should be smaller
+ if (ScriptEditor::get_singleton()->get_debugger() == bottom_panel_items[p_idx].control) { // this is the debug panel which uses tabs, so the top section should be smaller
bottom_panel->add_style_override("panel", gui_base->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles"));
} else {
bottom_panel->add_style_override("panel", gui_base->get_stylebox("panel", "TabContainer"));
@@ -4419,10 +4428,11 @@ void EditorNode::_dropped_files(const Vector<String> &p_files, int p_screen) {
String to_path = ProjectSettings::get_singleton()->globalize_path(get_filesystem_dock()->get_current_path());
DirAccessRef dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ Vector<String> just_copy = String("ttf,otf").split(",");
for (int i = 0; i < p_files.size(); i++) {
String from = p_files[i];
- if (!ResourceFormatImporter::get_singleton()->can_be_imported(from)) {
+ if (!ResourceFormatImporter::get_singleton()->can_be_imported(from) && (just_copy.find(from.get_extension().to_lower()) != -1)) {
continue;
}
String to = to_path.plus_file(from.get_file());
@@ -4739,13 +4749,13 @@ EditorNode::EditorNode() {
scene_distraction = false;
script_distraction = false;
- FileAccess::set_backup_save(true);
-
TranslationServer::get_singleton()->set_enabled(false);
// load settings
if (!EditorSettings::get_singleton())
EditorSettings::create();
+ FileAccess::set_backup_save(EDITOR_GET("filesystem/on_save/safe_save_on_backup_then_rename"));
+
{
int dpi_mode = EditorSettings::get_singleton()->get("interface/editor/hidpi_mode");
if (dpi_mode == 0) {
@@ -4805,7 +4815,15 @@ EditorNode::EditorNode() {
Ref<EditorSceneImporterGLTF> import_gltf;
import_gltf.instance();
import_scene->add_importer(import_gltf);
+
+ Ref<EditorSceneImporterESCN> import_escn;
+ import_escn.instance();
+ import_scene->add_importer(import_escn);
}
+
+ Ref<ResourceImporterBitMap> import_bitmap;
+ import_bitmap.instance();
+ ResourceFormatImporter::get_singleton()->add_importer(import_bitmap);
}
_pvrtc_register_compressors();
diff --git a/editor/editor_node.h b/editor/editor_node.h
index d090d83241..03102cdc81 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_NODE_H
#define EDITOR_NODE_H
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index c01f56581f..9506a0e951 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_path.h"
#include "editor_node.h"
diff --git a/editor/editor_path.h b/editor/editor_path.h
index 597746faf4..a86e6b7b28 100644
--- a/editor/editor_path.h
+++ b/editor/editor_path.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_PATH_H
#define EDITOR_PATH_H
diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp
index b3ac5e4ce5..b1a0efaea6 100644
--- a/editor/editor_plugin.cpp
+++ b/editor/editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_plugin.h"
#include "editor/editor_node.h"
@@ -200,6 +201,14 @@ ScriptEditor *EditorInterface::get_script_editor() {
return ScriptEditor::get_singleton();
}
+void EditorInterface::select_file(const String &p_file) {
+ return EditorNode::get_singleton()->get_filesystem_dock()->select_file(p_file);
+}
+
+String EditorInterface::get_selected_path() const {
+ return EditorNode::get_singleton()->get_filesystem_dock()->get_selected_path();
+}
+
void EditorInterface::inspect_object(Object *p_obj, const String &p_for_property) {
EditorNode::get_singleton()->push_item(p_obj, p_for_property);
@@ -226,6 +235,14 @@ Control *EditorInterface::get_base_control() {
return EditorNode::get_singleton()->get_gui_base();
}
+void EditorInterface::set_plugin_enabled(const String &p_plugin, bool p_enabled) {
+ EditorNode::get_singleton()->set_addon_plugin_enabled(p_plugin, p_enabled);
+}
+
+bool EditorInterface::is_plugin_enabled(const String &p_plugin) const {
+ return EditorNode::get_singleton()->is_addon_plugin_enabled(p_plugin);
+}
+
Error EditorInterface::save_scene() {
if (!get_edited_scene_root())
return ERR_CANT_CREATE;
@@ -259,6 +276,11 @@ void EditorInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_resource_filesystem"), &EditorInterface::get_resource_file_system);
ClassDB::bind_method(D_METHOD("get_editor_viewport"), &EditorInterface::get_editor_viewport);
ClassDB::bind_method(D_METHOD("make_mesh_previews", "meshes", "preview_size"), &EditorInterface::_make_mesh_previews);
+ ClassDB::bind_method(D_METHOD("select_file", "p_file"), &EditorInterface::select_file);
+ ClassDB::bind_method(D_METHOD("get_selected_path"), &EditorInterface::get_selected_path);
+
+ ClassDB::bind_method(D_METHOD("set_plugin_enabled", "plugin", "enabled"), &EditorInterface::set_plugin_enabled);
+ ClassDB::bind_method(D_METHOD("is_plugin_enabled", "plugin"), &EditorInterface::is_plugin_enabled);
ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene);
ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true));
@@ -653,7 +675,7 @@ void EditorPlugin::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_editor_interface"), &EditorPlugin::get_editor_interface);
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::TRANSFORM2D, "canvas_xform"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
+ ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_canvas_gui_input", PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_draw_over_viewport", PropertyInfo(Variant::OBJECT, "overlay", PROPERTY_HINT_RESOURCE_TYPE, "Control")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo("forward_force_draw_over_viewport", PropertyInfo(Variant::OBJECT, "overlay", PROPERTY_HINT_RESOURCE_TYPE, "Control")));
ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "forward_spatial_gui_input", PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera"), PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h
index 4bfa1fa7cf..3d585120c0 100644
--- a/editor/editor_plugin.h
+++ b/editor/editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_PLUGIN_H
#define EDITOR_PLUGIN_H
@@ -76,6 +77,9 @@ public:
Array get_open_scenes() const;
ScriptEditor *get_script_editor();
+ void select_file(const String &p_file);
+ String get_selected_path() const;
+
void inspect_object(Object *p_obj, const String &p_for_property = String());
EditorSelection *get_selection();
@@ -86,6 +90,9 @@ public:
Control *get_base_control();
+ void set_plugin_enabled(const String &p_plugin, bool p_enabled);
+ bool is_plugin_enabled(const String &p_plugin) const;
+
Error save_scene();
void save_scene_as(const String &p_scene, bool p_with_preview = true);
@@ -174,7 +181,7 @@ public:
virtual bool handles(Object *p_object) const;
virtual Dictionary get_state() const; //save editor state so it can't be reloaded when reloading scene
virtual void set_state(const Dictionary &p_state); //restore editor state (likely was saved with the scene)
- virtual void clear(); // clear any temporary data in te editor, reset it (likely new scene or load another scene)
+ virtual void clear(); // clear any temporary data in the editor, reset it (likely new scene or load another scene)
virtual void save_external_data(); // if editor references external resources/scenes, save them
virtual void apply_changes(); // if changes are pending in editor, apply them
virtual void get_breakpoints(List<String> *p_breakpoints);
diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp
index 234363cdff..8803a03f2d 100644
--- a/editor/editor_plugin_settings.cpp
+++ b/editor/editor_plugin_settings.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_plugin_settings.h"
#include "editor_node.h"
diff --git a/editor/editor_plugin_settings.h b/editor/editor_plugin_settings.h
index fac14fa177..aacbd05dd4 100644
--- a/editor/editor_plugin_settings.h
+++ b/editor/editor_plugin_settings.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORPLUGINSETTINGS_H
#define EDITORPLUGINSETTINGS_H
diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp
index c55d62fbe5..34c9ca6630 100644
--- a/editor/editor_profiler.cpp
+++ b/editor/editor_profiler.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_profiler.h"
#include "editor_scale.h"
diff --git a/editor/editor_profiler.h b/editor/editor_profiler.h
index c4543848ab..d902a97c5d 100644
--- a/editor/editor_profiler.h
+++ b/editor/editor_profiler.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORPROFILER_H
#define EDITORPROFILER_H
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index b981f74242..93787a7a4c 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_resource_preview.h"
#include "editor_scale.h"
diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h
index 6f1719e0a5..e2276aa11d 100644
--- a/editor/editor_resource_preview.h
+++ b/editor/editor_resource_preview.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORRESOURCEPREVIEW_H
#define EDITORRESOURCEPREVIEW_H
diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp
index ecb4b4aa8f..749cf6aa2b 100644
--- a/editor/editor_run.cpp
+++ b/editor/editor_run.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_run.h"
#include "editor_settings.h"
diff --git a/editor/editor_run.h b/editor/editor_run.h
index 9eee1122c8..8da607e6dc 100644
--- a/editor/editor_run.h
+++ b/editor/editor_run.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_RUN_H
#define EDITOR_RUN_H
diff --git a/editor/editor_run_native.cpp b/editor/editor_run_native.cpp
index a546f34c17..caa1d4be62 100644
--- a/editor/editor_run_native.cpp
+++ b/editor/editor_run_native.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_run_native.h"
#include "editor_export.h"
diff --git a/editor/editor_run_native.h b/editor/editor_run_native.h
index d9bce34e48..5bfe600a04 100644
--- a/editor/editor_run_native.h
+++ b/editor/editor_run_native.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_RUN_NATIVE_H
#define EDITOR_RUN_NATIVE_H
diff --git a/editor/editor_run_script.cpp b/editor/editor_run_script.cpp
index 4ead241bbb..93d201864e 100644
--- a/editor/editor_run_script.cpp
+++ b/editor/editor_run_script.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_run_script.h"
#include "editor_node.h"
diff --git a/editor/editor_run_script.h b/editor/editor_run_script.h
index c613e61feb..027fdd428d 100644
--- a/editor/editor_run_script.h
+++ b/editor/editor_run_script.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_RUN_SCRIPT_H
#define EDITOR_RUN_SCRIPT_H
diff --git a/editor/editor_scale.cpp b/editor/editor_scale.cpp
index d3ef5bfa32..365ea95e3e 100644
--- a/editor/editor_scale.cpp
+++ b/editor/editor_scale.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_scale.h"
#include "os/os.h"
diff --git a/editor/editor_scale.h b/editor/editor_scale.h
index 9af245e8d2..87f64598e3 100644
--- a/editor/editor_scale.h
+++ b/editor/editor_scale.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_SCALE_H
#define EDITOR_SCALE_H
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 5a16ec7eab..433f501fc8 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http:/www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_settings.h"
#include "core/io/compression.h"
@@ -53,7 +54,18 @@ Ref<EditorSettings> EditorSettings::singleton = NULL;
// Properties
-bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool p_emit_signal) {
+bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
+
+ _THREAD_SAFE_METHOD_
+
+ bool changed = _set_only(p_name, p_value);
+ if (changed) {
+ emit_signal("settings_changed");
+ }
+ return true;
+}
+
+bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value) {
_THREAD_SAFE_METHOD_
@@ -72,7 +84,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool
add_shortcut(name, sc);
}
- return true;
+ return false;
}
bool changed = false;
@@ -101,10 +113,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value, bool
}
}
- if (changed && p_emit_signal) {
- emit_signal("settings_changed");
- }
- return true;
+ return changed;
}
bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const {
@@ -204,7 +213,7 @@ void EditorSettings::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(pi);
}
- p_list->push_back(PropertyInfo(Variant::ARRAY, "shortcuts", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR)); //do not edit
+ p_list->push_back(PropertyInfo(Variant::ARRAY, "shortcuts", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); //do not edit
}
void EditorSettings::_add_property_info_bind(const Dictionary &p_info) {
@@ -272,12 +281,14 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("interface/editor/hidpi_mode", 0);
hints["interface/editor/hidpi_mode"] = PropertyInfo(Variant::INT, "interface/editor/hidpi_mode", PROPERTY_HINT_ENUM, "Auto,VeryLoDPI,LoDPI,MidDPI,HiDPI", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
_initial_set("interface/scene_tabs/show_script_button", false);
- _initial_set("interface/editor/font_size", 14);
- hints["interface/editor/font_size"] = PropertyInfo(Variant::INT, "interface/editor/font_size", PROPERTY_HINT_RANGE, "10,40,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
- _initial_set("interface/editor/source_font_size", 14);
- hints["interface/editor/source_font_size"] = PropertyInfo(Variant::INT, "interface/editor/source_font_size", PROPERTY_HINT_RANGE, "8,96,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
- _initial_set("interface/editor/custom_font", "");
- hints["interface/editor/custom_font"] = PropertyInfo(Variant::STRING, "interface/editor/custom_font", PROPERTY_HINT_GLOBAL_FILE, "*.font,*.tres,*.res", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ _initial_set("interface/editor/main_font_size", 14);
+ hints["interface/editor/main_font_size"] = PropertyInfo(Variant::INT, "interface/editor/main_font_size", PROPERTY_HINT_RANGE, "10,40,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ _initial_set("interface/editor/code_font_size", 14);
+ hints["interface/editor/code_font_size"] = PropertyInfo(Variant::INT, "interface/editor/code_font_size", PROPERTY_HINT_RANGE, "8,96,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ _initial_set("interface/editor/main_font", "");
+ hints["interface/editor/main_font"] = PropertyInfo(Variant::STRING, "interface/editor/main_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
+ _initial_set("interface/editor/code_font", "");
+ hints["interface/editor/code_font"] = PropertyInfo(Variant::STRING, "interface/editor/code_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
_initial_set("interface/editor/dim_editor_on_dialog_popup", true);
_initial_set("interface/editor/dim_amount", 0.6f);
hints["interface/editor/dim_amount"] = PropertyInfo(Variant::REAL, "interface/editor/dim_amount", PROPERTY_HINT_RANGE, "0,1,0.01", PROPERTY_USAGE_DEFAULT);
@@ -366,13 +377,13 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
hints["text_editor/cursor/caret_blink_speed"] = PropertyInfo(Variant::REAL, "text_editor/cursor/caret_blink_speed", PROPERTY_HINT_RANGE, "0.1, 10, 0.1");
_initial_set("text_editor/cursor/right_click_moves_caret", true);
- _initial_set("text_editor/theme/font", "");
- hints["text_editor/theme/font"] = PropertyInfo(Variant::STRING, "text_editor/theme/font", PROPERTY_HINT_GLOBAL_FILE, "*.font,*.tres,*.res");
_initial_set("text_editor/completion/auto_brace_complete", false);
+ _initial_set("text_editor/completion/put_callhint_tooltip_below_current_line", true);
+ _initial_set("text_editor/completion/callhint_tooltip_offset", Vector2());
_initial_set("text_editor/files/restore_scripts_on_load", true);
_initial_set("text_editor/completion/complete_file_paths", true);
_initial_set("text_editor/files/maximum_recent_files", 20);
- hints["text_editor/files/maximum_recent_files"] = PropertyInfo(Variant::INT, "text_editor/files/maximum_recent_files", PROPERTY_HINT_RANGE, "1, 200, 0");
+ hints["text_editor/files/maximum_recent_files"] = PropertyInfo(Variant::INT, "text_editor/files/maximum_recent_files", PROPERTY_HINT_RANGE, "1, 200, 1");
_initial_set("docks/scene_tree/start_create_dialog_fully_expanded", false);
_initial_set("docks/scene_tree/draw_relationship_lines", false);
@@ -502,6 +513,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("filesystem/resources/auto_reload_modified_images", true);
_initial_set("filesystem/import/automatic_reimport_on_sources_changed", true);
+ _initial_set("filesystem/on_save/safe_save_on_backup_then_rename", true);
if (p_extra_config.is_valid()) {
@@ -981,7 +993,7 @@ void EditorSettings::raise_order(const String &p_setting) {
props[p_setting].order = ++last_order;
}
-void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value) {
+void EditorSettings::set_initial_value(const StringName &p_setting, const Variant &p_value, bool p_update_current) {
_THREAD_SAFE_METHOD_
@@ -989,6 +1001,9 @@ void EditorSettings::set_initial_value(const StringName &p_setting, const Varian
return;
props[p_setting].initial = p_value;
props[p_setting].has_default_value = true;
+ if (p_update_current) {
+ set(p_setting, p_value);
+ }
}
Variant _EDITOR_DEF(const String &p_setting, const Variant &p_default) {
@@ -1173,8 +1188,10 @@ void EditorSettings::list_text_editor_themes() {
void EditorSettings::load_text_editor_theme() {
if (get("text_editor/theme/color_theme") == "Default" || get("text_editor/theme/color_theme") == "Adaptive" || get("text_editor/theme/color_theme") == "Custom") {
- _load_default_text_editor_theme(); // sorry for "Settings changed" console spam
- return;
+ if (get("text_editor/theme/color_theme") == "Default") {
+ _load_default_text_editor_theme();
+ }
+ return; // sorry for "Settings changed" console spam
}
String theme_path = get_text_editor_themes_dir().plus_file((String)get("text_editor/theme/color_theme") + ".tet");
@@ -1329,8 +1346,44 @@ Ref<ShortCut> ED_GET_SHORTCUT(const String &p_path) {
return sc;
}
+struct ShortCutMapping {
+ const char *path;
+ uint32_t keycode;
+};
+
Ref<ShortCut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p_keycode) {
+#ifdef OSX_ENABLED
+ static const ShortCutMapping macos_mappings[] = {
+ { "editor/play", KEY_MASK_CMD | KEY_B },
+ { "editor/play_scene", KEY_MASK_CMD | KEY_R },
+ { "editor/pause_scene", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_Y },
+ { "editor/stop", KEY_MASK_CMD | KEY_PERIOD },
+ { "editor/play_custom_scene", KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_R },
+ { "editor/editor_2d", KEY_MASK_ALT | KEY_1 },
+ { "editor/editor_3d", KEY_MASK_ALT | KEY_2 },
+ { "editor/editor_script", KEY_MASK_ALT | KEY_3 },
+ { "editor/editor_help", KEY_MASK_ALT | KEY_SPACE },
+ { "editor/fullscreen_mode", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_F },
+ { "editor/distraction_free_mode", KEY_MASK_CMD | KEY_MASK_CTRL | KEY_D },
+ { "script_text_editor/contextual_help", KEY_MASK_ALT | KEY_MASK_SHIFT | KEY_SPACE },
+ { "script_text_editor/find_next", KEY_MASK_CMD | KEY_G },
+ { "script_text_editor/find_previous", KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_G },
+ { "script_text_editor/toggle_breakpoint", KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_B }
+ };
+
+ if (p_keycode == KEY_DELETE) {
+ p_keycode = KEY_MASK_CMD | KEY_BACKSPACE;
+ } else {
+ for (int i = 0; i < sizeof(macos_mappings) / sizeof(ShortCutMapping); i++) {
+ if (p_path == macos_mappings[i].path) {
+ p_keycode = macos_mappings[i].keycode;
+ break;
+ }
+ }
+ }
+#endif
+
Ref<InputEventKey> ie;
if (p_keycode) {
ie.instance();
@@ -1384,7 +1437,7 @@ void EditorSettings::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_setting", "name", "value"), &EditorSettings::set_setting);
ClassDB::bind_method(D_METHOD("get_setting", "name"), &EditorSettings::get_setting);
ClassDB::bind_method(D_METHOD("erase", "property"), &EditorSettings::erase);
- ClassDB::bind_method(D_METHOD("set_initial_value", "name", "value"), &EditorSettings::set_initial_value);
+ ClassDB::bind_method(D_METHOD("set_initial_value", "name", "value", "update_current"), &EditorSettings::set_initial_value);
ClassDB::bind_method(D_METHOD("property_can_revert", "name"), &EditorSettings::property_can_revert);
ClassDB::bind_method(D_METHOD("property_get_revert", "name"), &EditorSettings::property_get_revert);
ClassDB::bind_method(D_METHOD("add_property_info", "info"), &EditorSettings::_add_property_info_bind);
diff --git a/editor/editor_settings.h b/editor/editor_settings.h
index b079f71b6a..914316ee61 100644
--- a/editor/editor_settings.h
+++ b/editor/editor_settings.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_SETTINGS_H
#define EDITOR_SETTINGS_H
@@ -110,7 +111,8 @@ private:
bool save_changed_setting;
bool optimize_save; //do not save stuff that came from config but was not set from engine
- bool _set(const StringName &p_name, const Variant &p_value, bool p_emit_signal = true);
+ bool _set(const StringName &p_name, const Variant &p_value);
+ bool _set_only(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _initial_set(const StringName &p_name, const Variant &p_value);
void _get_property_list(List<PropertyInfo> *p_list) const;
@@ -143,9 +145,12 @@ public:
bool has_setting(const String &p_setting) const;
void erase(const String &p_setting);
void raise_order(const String &p_setting);
- void set_initial_value(const StringName &p_setting, const Variant &p_value);
+ void set_initial_value(const StringName &p_setting, const Variant &p_value, bool update_current = false);
void set_manually(const StringName &p_setting, const Variant &p_value, bool p_emit_signal = false) {
- _set(p_setting, p_value, p_emit_signal);
+ if (p_emit_signal)
+ _set(p_setting, p_value);
+ else
+ _set_only(p_setting, p_value);
}
bool property_can_revert(const String &p_setting);
Variant property_get_revert(const String &p_setting);
diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp
index 0eaf475c14..7527b198b8 100644
--- a/editor/editor_sub_scene.cpp
+++ b/editor/editor_sub_scene.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_sub_scene.h"
#include "scene/gui/margin_container.h"
diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h
index 56c08c7532..cf4d6fd5b9 100644
--- a/editor/editor_sub_scene.h
+++ b/editor/editor_sub_scene.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_SUB_SCENE_H
#define EDITOR_SUB_SCENE_H
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 3644893663..096a60afa3 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_themes.h"
#include "core/io/resource_loader.h"
@@ -192,6 +193,10 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
exceptions.push_back("ZoomReset");
exceptions.push_back("LockViewport");
exceptions.push_back("GroupViewport");
+ exceptions.push_back("StatusError");
+ exceptions.push_back("StatusSuccess");
+ exceptions.push_back("StatusWarning");
+ exceptions.push_back("NodeWarning");
clock_t begin_time = clock();
@@ -207,7 +212,7 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
}
// generate thumb files with the given thumb size
- bool force_filter = !(p_thumb_size == 64 && p_thumb_size == 32); // we dont need filter with original resolution
+ bool force_filter = !(p_thumb_size == 64 && p_thumb_size == 32); // we don't need filter with original resolution
if (p_thumb_size >= 64) {
float scale = (float)p_thumb_size / 64.0 * EDSCALE;
for (int i = 0; i < editor_bg_thumbs_count; i++) {
@@ -332,6 +337,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const Color font_color = mono_color.linear_interpolate(base_color, 0.25);
const Color font_color_hl = mono_color.linear_interpolate(base_color, 0.15);
const Color font_color_disabled = Color(mono_color.r, mono_color.g, mono_color.b, 0.3);
+ const Color font_color_selection = Color::html("#7d7d7d");
const Color color_disabled = mono_color.inverted().linear_interpolate(base_color, 0.7);
const Color color_disabled_bg = mono_color.inverted().linear_interpolate(base_color, 0.9);
@@ -790,6 +796,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("read_only", "LineEdit", font_color_disabled);
theme->set_color("font_color", "LineEdit", font_color);
theme->set_color("cursor_color", "LineEdit", font_color);
+ theme->set_color("selection_color", "LineEdit", font_color_selection);
// TextEdit
theme->set_stylebox("normal", "TextEdit", style_widget);
@@ -799,6 +806,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("tab", "TextEdit", theme->get_icon("GuiTab", "EditorIcons"));
theme->set_color("font_color", "TextEdit", font_color);
theme->set_color("caret_color", "TextEdit", highlight_color);
+ theme->set_color("selection_color", "TextEdit", font_color_selection);
// H/VSplitContainer
theme->set_stylebox("bg", "VSplitContainer", make_stylebox(theme->get_icon("GuiVsplitBg", "EditorIcons"), 1, 1, 1, 1));
@@ -1049,7 +1057,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const Color word_highlighted_color = alpha1;
const Color number_color = basetype_color.linear_interpolate(mono_color, dark_theme ? 0.5 : 0.3);
const Color function_color = main_color;
- const Color member_variable_color = mono_color;
+ const Color member_variable_color = main_color.linear_interpolate(mono_color, 0.6);
const Color mark_color = Color(error_color.r, error_color.g, error_color.b, 0.3);
const Color breakpoint_color = error_color;
const Color code_folding_color = alpha4;
@@ -1059,67 +1067,67 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
EditorSettings *setting = EditorSettings::get_singleton();
String text_editor_color_theme = setting->get("text_editor/theme/color_theme");
if (text_editor_color_theme == "Adaptive") {
- setting->set_manually("text_editor/highlighting/symbol_color", symbol_color);
- setting->set_manually("text_editor/highlighting/keyword_color", keyword_color);
- setting->set_manually("text_editor/highlighting/base_type_color", basetype_color);
- setting->set_manually("text_editor/highlighting/engine_type_color", type_color);
- setting->set_manually("text_editor/highlighting/comment_color", comment_color);
- setting->set_manually("text_editor/highlighting/string_color", string_color);
- setting->set_manually("text_editor/highlighting/background_color", background_color);
- setting->set_manually("text_editor/highlighting/completion_background_color", completion_background_color);
- setting->set_manually("text_editor/highlighting/completion_selected_color", completion_selected_color);
- setting->set_manually("text_editor/highlighting/completion_existing_color", completion_existing_color);
- setting->set_manually("text_editor/highlighting/completion_scroll_color", completion_scroll_color);
- setting->set_manually("text_editor/highlighting/completion_font_color", completion_font_color);
- setting->set_manually("text_editor/highlighting/text_color", text_color);
- setting->set_manually("text_editor/highlighting/line_number_color", line_number_color);
- setting->set_manually("text_editor/highlighting/caret_color", caret_color);
- setting->set_manually("text_editor/highlighting/caret_background_color", caret_background_color);
- setting->set_manually("text_editor/highlighting/text_selected_color", text_selected_color);
- setting->set_manually("text_editor/highlighting/selection_color", selection_color);
- setting->set_manually("text_editor/highlighting/brace_mismatch_color", brace_mismatch_color);
- setting->set_manually("text_editor/highlighting/current_line_color", current_line_color);
- setting->set_manually("text_editor/highlighting/line_length_guideline_color", line_length_guideline_color);
- setting->set_manually("text_editor/highlighting/word_highlighted_color", word_highlighted_color);
- setting->set_manually("text_editor/highlighting/number_color", number_color);
- setting->set_manually("text_editor/highlighting/function_color", function_color);
- setting->set_manually("text_editor/highlighting/member_variable_color", member_variable_color);
- setting->set_manually("text_editor/highlighting/mark_color", mark_color);
- setting->set_manually("text_editor/highlighting/breakpoint_color", breakpoint_color);
- setting->set_manually("text_editor/highlighting/code_folding_color", code_folding_color);
- setting->set_manually("text_editor/highlighting/search_result_color", search_result_color);
- setting->set_manually("text_editor/highlighting/search_result_border_color", search_result_border_color);
+ setting->set_initial_value("text_editor/highlighting/symbol_color", symbol_color, true);
+ setting->set_initial_value("text_editor/highlighting/keyword_color", keyword_color, true);
+ setting->set_initial_value("text_editor/highlighting/base_type_color", basetype_color, true);
+ setting->set_initial_value("text_editor/highlighting/engine_type_color", type_color, true);
+ setting->set_initial_value("text_editor/highlighting/comment_color", comment_color, true);
+ setting->set_initial_value("text_editor/highlighting/string_color", string_color, true);
+ setting->set_initial_value("text_editor/highlighting/background_color", background_color, true);
+ setting->set_initial_value("text_editor/highlighting/completion_background_color", completion_background_color, true);
+ setting->set_initial_value("text_editor/highlighting/completion_selected_color", completion_selected_color, true);
+ setting->set_initial_value("text_editor/highlighting/completion_existing_color", completion_existing_color, true);
+ setting->set_initial_value("text_editor/highlighting/completion_scroll_color", completion_scroll_color, true);
+ setting->set_initial_value("text_editor/highlighting/completion_font_color", completion_font_color, true);
+ setting->set_initial_value("text_editor/highlighting/text_color", text_color, true);
+ setting->set_initial_value("text_editor/highlighting/line_number_color", line_number_color, true);
+ setting->set_initial_value("text_editor/highlighting/caret_color", caret_color, true);
+ setting->set_initial_value("text_editor/highlighting/caret_background_color", caret_background_color, true);
+ setting->set_initial_value("text_editor/highlighting/text_selected_color", text_selected_color, true);
+ setting->set_initial_value("text_editor/highlighting/selection_color", selection_color, true);
+ setting->set_initial_value("text_editor/highlighting/brace_mismatch_color", brace_mismatch_color, true);
+ setting->set_initial_value("text_editor/highlighting/current_line_color", current_line_color, true);
+ setting->set_initial_value("text_editor/highlighting/line_length_guideline_color", line_length_guideline_color, true);
+ setting->set_initial_value("text_editor/highlighting/word_highlighted_color", word_highlighted_color, true);
+ setting->set_initial_value("text_editor/highlighting/number_color", number_color, true);
+ setting->set_initial_value("text_editor/highlighting/function_color", function_color, true);
+ setting->set_initial_value("text_editor/highlighting/member_variable_color", member_variable_color, true);
+ setting->set_initial_value("text_editor/highlighting/mark_color", mark_color, true);
+ setting->set_initial_value("text_editor/highlighting/breakpoint_color", breakpoint_color, true);
+ setting->set_initial_value("text_editor/highlighting/code_folding_color", code_folding_color, true);
+ setting->set_initial_value("text_editor/highlighting/search_result_color", search_result_color, true);
+ setting->set_initial_value("text_editor/highlighting/search_result_border_color", search_result_border_color, true);
} else if (text_editor_color_theme == "Default") {
- setting->set_manually("text_editor/highlighting/symbol_color", Color::html("badfff"));
- setting->set_manually("text_editor/highlighting/keyword_color", Color::html("ffffb3"));
- setting->set_manually("text_editor/highlighting/base_type_color", Color::html("a4ffd4"));
- setting->set_manually("text_editor/highlighting/engine_type_color", Color::html("83d3ff"));
- setting->set_manually("text_editor/highlighting/comment_color", Color::html("676767"));
- setting->set_manually("text_editor/highlighting/string_color", Color::html("ef6ebe"));
- setting->set_manually("text_editor/highlighting/background_color", Color::html("3b000000"));
- setting->set_manually("text_editor/highlighting/completion_background_color", Color::html("2C2A32"));
- setting->set_manually("text_editor/highlighting/completion_selected_color", Color::html("434244"));
- setting->set_manually("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf"));
- setting->set_manually("text_editor/highlighting/completion_scroll_color", Color::html("ffffff"));
- setting->set_manually("text_editor/highlighting/completion_font_color", Color::html("aaaaaa"));
- setting->set_manually("text_editor/highlighting/text_color", Color::html("aaaaaa"));
- setting->set_manually("text_editor/highlighting/line_number_color", Color::html("66aaaaaa"));
- setting->set_manually("text_editor/highlighting/caret_color", Color::html("aaaaaa"));
- setting->set_manually("text_editor/highlighting/caret_background_color", Color::html("000000"));
- setting->set_manually("text_editor/highlighting/text_selected_color", Color::html("000000"));
- setting->set_manually("text_editor/highlighting/selection_color", Color::html("6ca9c2"));
- setting->set_manually("text_editor/highlighting/brace_mismatch_color", Color(1, 0.2, 0.2));
- setting->set_manually("text_editor/highlighting/current_line_color", Color(0.3, 0.5, 0.8, 0.15));
- setting->set_manually("text_editor/highlighting/line_length_guideline_color", Color(0.3, 0.5, 0.8, 0.1));
- setting->set_manually("text_editor/highlighting/word_highlighted_color", Color(0.8, 0.9, 0.9, 0.15));
- setting->set_manually("text_editor/highlighting/number_color", Color::html("EB9532"));
- setting->set_manually("text_editor/highlighting/function_color", Color::html("66a2ce"));
- setting->set_manually("text_editor/highlighting/member_variable_color", Color::html("e64e59"));
- setting->set_manually("text_editor/highlighting/mark_color", Color(1.0, 0.4, 0.4, 0.4));
- setting->set_manually("text_editor/highlighting/breakpoint_color", Color(0.8, 0.8, 0.4, 0.2));
- setting->set_manually("text_editor/highlighting/code_folding_color", Color(0.8, 0.8, 0.8, 0.8));
- setting->set_manually("text_editor/highlighting/search_result_color", Color(0.05, 0.25, 0.05, 1));
- setting->set_manually("text_editor/highlighting/search_result_border_color", Color(0.1, 0.45, 0.1, 1));
+ setting->set_initial_value("text_editor/highlighting/symbol_color", Color::html("badfff"), true);
+ setting->set_initial_value("text_editor/highlighting/keyword_color", Color::html("ffffb3"), true);
+ setting->set_initial_value("text_editor/highlighting/base_type_color", Color::html("a4ffd4"), true);
+ setting->set_initial_value("text_editor/highlighting/engine_type_color", Color::html("83d3ff"), true);
+ setting->set_initial_value("text_editor/highlighting/comment_color", Color::html("676767"), true);
+ setting->set_initial_value("text_editor/highlighting/string_color", Color::html("ef6ebe"), true);
+ setting->set_initial_value("text_editor/highlighting/background_color", Color::html("3b000000"), true);
+ setting->set_initial_value("text_editor/highlighting/completion_background_color", Color::html("2C2A32"), true);
+ setting->set_initial_value("text_editor/highlighting/completion_selected_color", Color::html("434244"), true);
+ setting->set_initial_value("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf"), true);
+ setting->set_initial_value("text_editor/highlighting/completion_scroll_color", Color::html("ffffff"), true);
+ setting->set_initial_value("text_editor/highlighting/completion_font_color", Color::html("aaaaaa"), true);
+ setting->set_initial_value("text_editor/highlighting/text_color", Color::html("aaaaaa"), true);
+ setting->set_initial_value("text_editor/highlighting/line_number_color", Color::html("66aaaaaa"), true);
+ setting->set_initial_value("text_editor/highlighting/caret_color", Color::html("aaaaaa"), true);
+ setting->set_initial_value("text_editor/highlighting/caret_background_color", Color::html("000000"), true);
+ setting->set_initial_value("text_editor/highlighting/text_selected_color", Color::html("000000"), true);
+ setting->set_initial_value("text_editor/highlighting/selection_color", Color::html("6ca9c2"), true);
+ setting->set_initial_value("text_editor/highlighting/brace_mismatch_color", Color(1, 0.2, 0.2), true);
+ setting->set_initial_value("text_editor/highlighting/current_line_color", Color(0.3, 0.5, 0.8, 0.15), true);
+ setting->set_initial_value("text_editor/highlighting/line_length_guideline_color", Color(0.3, 0.5, 0.8, 0.1), true);
+ setting->set_initial_value("text_editor/highlighting/word_highlighted_color", Color(0.8, 0.9, 0.9, 0.15), true);
+ setting->set_initial_value("text_editor/highlighting/number_color", Color::html("EB9532"), true);
+ setting->set_initial_value("text_editor/highlighting/function_color", Color::html("66a2ce"), true);
+ setting->set_initial_value("text_editor/highlighting/member_variable_color", Color::html("e64e59"), true);
+ setting->set_initial_value("text_editor/highlighting/mark_color", Color(1.0, 0.4, 0.4, 0.4), true);
+ setting->set_initial_value("text_editor/highlighting/breakpoint_color", Color(0.8, 0.8, 0.4, 0.2), true);
+ setting->set_initial_value("text_editor/highlighting/code_folding_color", Color(0.8, 0.8, 0.8, 0.8), true);
+ setting->set_initial_value("text_editor/highlighting/search_result_color", Color(0.05, 0.25, 0.05, 1), true);
+ setting->set_initial_value("text_editor/highlighting/search_result_border_color", Color(0.1, 0.45, 0.1, 1), true);
}
return theme;
@@ -1135,16 +1143,5 @@ Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) {
theme = create_editor_theme(p_theme);
}
- String global_font = EditorSettings::get_singleton()->get("interface/editor/custom_font");
- if (global_font != "") {
- Ref<Font> fnt = ResourceLoader::load(global_font);
- if (fnt.is_valid()) {
- if (!theme.is_valid()) {
- theme.instance();
- }
- theme->set_default_theme_font(fnt);
- }
- }
-
return theme;
}
diff --git a/editor/editor_themes.h b/editor/editor_themes.h
index 6f4e527cb2..7d8d3a5308 100644
--- a/editor/editor_themes.h
+++ b/editor/editor_themes.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_THEMES_H
#define EDITOR_THEMES_H
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index 0206e37c43..c4ecf3c098 100644
--- a/editor/export_template_manager.cpp
+++ b/editor/export_template_manager.cpp
@@ -27,8 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "export_template_manager.h"
+#include "core/os/input.h"
+#include "core/os/keyboard.h"
#include "editor_node.h"
#include "editor_scale.h"
#include "io/json.h"
@@ -250,7 +253,7 @@ void ExportTemplateManager::_install_from_file(const String &p_file, bool p_use_
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
Error err = d->make_dir_recursive(template_path);
if (err != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Error creating path for templates:\n") + template_path);
+ EditorNode::get_singleton()->show_warning(TTR("Error creating path for templates:") + "\n" + template_path);
unzClose(pkg);
return;
}
@@ -421,6 +424,11 @@ void ExportTemplateManager::_http_download_templates_completed(int p_status, int
void ExportTemplateManager::_begin_template_download(const String &p_url) {
+ if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
+ OS::get_singleton()->shell_open(p_url);
+ return;
+ }
+
for (int i = 0; i < template_list->get_child_count(); i++) {
BaseButton *b = Object::cast_to<BaseButton>(template_list->get_child(0));
if (b) {
@@ -575,7 +583,7 @@ ExportTemplateManager::ExportTemplateManager() {
template_downloader->add_child(vbc);
ScrollContainer *sc = memnew(ScrollContainer);
sc->set_custom_minimum_size(Size2(400, 200) * EDSCALE);
- vbc->add_margin_child(TTR("Select mirror from list: "), sc);
+ vbc->add_margin_child(TTR("Select mirror from list: (Shift+Click: Open in Browser)"), sc);
template_list = memnew(VBoxContainer);
sc->add_child(template_list);
sc->set_enable_v_scroll(true);
diff --git a/editor/export_template_manager.h b/editor/export_template_manager.h
index 413fe82593..62336162fd 100644
--- a/editor/export_template_manager.h
+++ b/editor/export_template_manager.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EXPORT_TEMPLATE_MANAGER_H
#define EXPORT_TEMPLATE_MANAGER_H
diff --git a/editor/file_type_cache.cpp b/editor/file_type_cache.cpp
index 73adea5779..02e647b733 100644
--- a/editor/file_type_cache.cpp
+++ b/editor/file_type_cache.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_type_cache.h"
#include "os/file_access.h"
diff --git a/editor/file_type_cache.h b/editor/file_type_cache.h
index d3ffccc1a8..33b50cb1c4 100644
--- a/editor/file_type_cache.h
+++ b/editor/file_type_cache.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_TYPE_CACHE_H
#define FILE_TYPE_CACHE_H
diff --git a/editor/fileserver/editor_file_server.cpp b/editor/fileserver/editor_file_server.cpp
index de620070aa..a218070933 100644
--- a/editor/fileserver/editor_file_server.cpp
+++ b/editor/fileserver/editor_file_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_file_server.h"
#include "../editor_settings.h"
@@ -54,7 +55,7 @@ void EditorFileServer::_subthread_start(void *s) {
ClientData *cd = (ClientData *)s;
- cd->connection->set_nodelay(true);
+ cd->connection->set_no_delay(true);
uint8_t buf4[8];
Error err = cd->connection->get_data(buf4, 4);
if (err != OK) {
diff --git a/editor/fileserver/editor_file_server.h b/editor/fileserver/editor_file_server.h
index a4a7dba1d2..d73c78ee70 100644
--- a/editor/fileserver/editor_file_server.h
+++ b/editor/fileserver/editor_file_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_FILE_SERVER_H
#define EDITOR_FILE_SERVER_H
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 949455ff98..8ead8d3982 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "filesystem_dock.h"
#include "editor_node.h"
@@ -76,7 +77,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory
return true;
}
-void FileSystemDock::_update_tree(bool keep_collapse_state) {
+void FileSystemDock::_update_tree(bool keep_collapse_state, bool p_uncollapse_root) {
Vector<String> uncollapsed_paths;
if (keep_collapse_state) {
@@ -128,6 +129,10 @@ void FileSystemDock::_update_tree(bool keep_collapse_state) {
ti->set_metadata(0, fave);
}
+ if (p_uncollapse_root) {
+ uncollapsed_paths.push_back("res://");
+ }
+
_create_tree(root, EditorFileSystem::get_singleton()->get_filesystem(), uncollapsed_paths);
tree->ensure_cursor_is_visible();
updating_tree = false;
@@ -153,6 +158,7 @@ void FileSystemDock::_notification(int p_what) {
} else {
tree->set_v_size_flags(SIZE_FILL);
+ button_tree->hide();
if (!tree->is_visible()) {
tree->show();
button_favorite->show();
@@ -162,7 +168,6 @@ void FileSystemDock::_notification(int p_what) {
if (!file_list_vb->is_visible()) {
file_list_vb->show();
- button_tree->hide();
_update_files(true);
}
}
@@ -203,7 +208,7 @@ void FileSystemDock::_notification(int p_what) {
if (EditorFileSystem::get_singleton()->is_scanning()) {
_set_scanning_mode();
} else {
- _update_tree(false);
+ _update_tree(false, true);
}
} break;
@@ -548,7 +553,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
} else {
type_icon = get_icon("ImportFail", ei);
big_icon = file_thumbnail_broken;
- tooltip += TTR("\nStatus: Import of file failed. Please fix file and reimport manually.");
+ tooltip += "\n" + TTR("Status: Import of file failed. Please fix file and reimport manually.");
}
int item_index;
@@ -752,7 +757,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_
return;
} else if (!p_item.is_file && new_path.begins_with(old_path)) {
//This check doesn't erroneously catch renaming to a longer name as folder paths always end with "/"
- EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.\n") + old_path + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.") + "\n" + old_path + "\n");
return;
}
@@ -772,7 +777,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_
if (p_item.is_file && FileAccess::exists(old_path + ".import")) {
err = da->rename(old_path + ".import", new_path + ".import");
if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + ".import\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving:") + "\n" + old_path + ".import\n");
}
}
@@ -796,7 +801,7 @@ void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_
print_line(" Remap: " + changed_paths[i] + " -> " + p_renames[changed_paths[i]]);
}
} else {
- EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving:") + "\n" + old_path + "\n");
}
memdelete(da);
}
@@ -813,23 +818,23 @@ void FileSystemDock::_try_duplicate_item(const FileOrFolder &p_item, const Strin
return;
} else if (!p_item.is_file && new_path.begins_with(old_path)) {
//This check doesn't erroneously catch renaming to a longer name as folder paths always end with "/"
- EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.\n") + old_path + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.") + "\n" + old_path + "\n");
return;
}
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
print_line("Duplicating " + old_path + " -> " + new_path);
- Error err = da->copy(old_path, new_path);
+ Error err = p_item.is_file ? da->copy(old_path, new_path) : da->copy_dir(old_path, new_path);
if (err == OK) {
//Move/Rename any corresponding import settings too
if (p_item.is_file && FileAccess::exists(old_path + ".import")) {
err = da->copy(old_path + ".import", new_path + ".import");
if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:\n") + old_path + ".import\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:") + "\n" + old_path + ".import\n");
}
}
} else {
- EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:\n") + old_path + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Error duplicating:") + "\n" + old_path + "\n");
}
memdelete(da);
}
@@ -901,7 +906,7 @@ void FileSystemDock::_update_dependencies_after_move(const Map<String, String> &
if (ResourceLoader::get_resource_type(file) == "PackedScene")
editor->reload_scene(file);
} else {
- EditorNode::get_singleton()->add_io_error(TTR("Unable to update dependencies:\n") + remaps[i] + "\n");
+ EditorNode::get_singleton()->add_io_error(TTR("Unable to update dependencies:") + "\n" + remaps[i] + "\n");
}
}
}
@@ -980,10 +985,12 @@ void FileSystemDock::_duplicate_operation_confirm() {
return;
}
- String old_path = to_duplicate.path.ends_with("/") ? to_duplicate.path.substr(0, to_duplicate.path.length() - 1) : to_rename.path;
- String new_path = old_path.get_base_dir().plus_file(new_name);
- if (old_path == new_path) {
- return;
+ String new_path;
+ String base_dir = to_duplicate.path.get_base_dir();
+ if (to_duplicate.is_file) {
+ new_path = base_dir.plus_file(new_name);
+ } else {
+ new_path = base_dir.substr(0, base_dir.find_last("/")) + "/" + new_name;
}
//Present a more user friendly warning for name conflict
@@ -995,7 +1002,7 @@ void FileSystemDock::_duplicate_operation_confirm() {
}
memdelete(da);
- _try_duplicate_item(to_duplicate, new_name);
+ _try_duplicate_item(to_duplicate, new_path);
//Rescan everything
print_line("call rescan!");
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index 45c0aff439..2e86b83efc 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILESYSTEM_DOCK_H
#define FILESYSTEM_DOCK_H
@@ -156,7 +157,7 @@ private:
bool import_dock_needs_update;
bool _create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir, Vector<String> &uncollapsed_paths);
- void _update_tree(bool keep_collapse_state);
+ void _update_tree(bool keep_collapse_state, bool p_uncollapse_root = false);
void _update_files(bool p_keep_selection);
void _update_file_display_toggle_button();
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 6f823534ca..bac18be4a9 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "groups_editor.h"
#include "editor_node.h"
diff --git a/editor/groups_editor.h b/editor/groups_editor.h
index c60ab4bc22..ad3d5cd14f 100644
--- a/editor/groups_editor.h
+++ b/editor/groups_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GROUPS_EDITOR_H
#define GROUPS_EDITOR_H
diff --git a/editor/icons/SCsub b/editor/icons/SCsub
index 0e4a4796ec..9bd036dfa9 100644
--- a/editor/icons/SCsub
+++ b/editor/icons/SCsub
@@ -52,9 +52,9 @@ def make_editor_icons_action(target, source, env):
# some special cases
if icon_name in ['Int', 'Bool', 'Float']:
icon_name = icon_name.lower()
- if icon_name.endswith("MediumThumb"): # dont know a better way to handle this
+ if icon_name.endswith("MediumThumb"): # don't know a better way to handle this
thumb_medium_indices.append(str(index))
- if icon_name.endswith("BigThumb"): # dont know a better way to handle this
+ if icon_name.endswith("BigThumb"): # don't know a better way to handle this
thumb_big_indices.append(str(index))
s.write('\t"%s"' % icon_name)
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index 52659b360f..863b13cbd7 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -27,6 +27,7 @@
/* 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_collada.h"
#include "editor/collada/collada.h"
@@ -1550,7 +1551,7 @@ void ColladaImport::create_animations(bool p_make_tracks_in_all_bones, bool p_im
node = node_name_map[at.target];
} else {
- print_line("Couldnt find node: " + at.target);
+ print_line("Couldn't find node: " + at.target);
continue;
}
} else {
@@ -1735,7 +1736,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones
}
if (xform_idx == -1) {
- print_line("couldnt find matching node " + at.target + " xform for track " + at.param);
+ print_line("couldn't find matching node " + at.target + " xform for track " + at.param);
continue;
}
diff --git a/editor/import/editor_import_collada.h b/editor/import/editor_import_collada.h
index 004b07b5be..5dd3ff58fa 100644
--- a/editor/import/editor_import_collada.h
+++ b/editor/import/editor_import_collada.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_IMPORT_COLLADA_H
#define EDITOR_IMPORT_COLLADA_H
diff --git a/editor/import/editor_import_plugin.cpp b/editor/import/editor_import_plugin.cpp
index 6297e1eca6..07c77a9df0 100644
--- a/editor/import/editor_import_plugin.cpp
+++ b/editor/import/editor_import_plugin.cpp
@@ -27,6 +27,7 @@
/* 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_plugin.h"
#include "core/script_language.h"
diff --git a/editor/import/editor_import_plugin.h b/editor/import/editor_import_plugin.h
index 9f860401ed..61a0a944f5 100644
--- a/editor/import/editor_import_plugin.h
+++ b/editor/import/editor_import_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_IMPORT_PLUGIN_H
#define EDITOR_IMPORT_PLUGIN_H
diff --git a/editor/import/editor_scene_importer_gltf.cpp b/editor/import/editor_scene_importer_gltf.cpp
index 189e98ea68..1c4617c353 100644
--- a/editor/import/editor_scene_importer_gltf.cpp
+++ b/editor/import/editor_scene_importer_gltf.cpp
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* editor_scene_importer_gltf.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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_scene_importer_gltf.h"
#include "io/json.h"
#include "math_defs.h"
@@ -880,18 +910,24 @@ Error EditorSceneImporterGLTF::_parse_meshes(GLTFState &state) {
{ //gltf does not seem to normalize the weights for some reason..
int wc = weights.size();
PoolVector<float>::Write w = weights.write();
- for (int i = 0; i < wc; i += 4) {
+
+ //PoolVector<int> v = array[Mesh::ARRAY_BONES];
+ //PoolVector<int>::Read r = v.read();
+
+ for (int j = 0; j < wc; j += 4) {
float total = 0.0;
- total += w[i + 0];
- total += w[i + 1];
- total += w[i + 2];
- total += w[i + 3];
+ total += w[j + 0];
+ total += w[j + 1];
+ total += w[j + 2];
+ total += w[j + 3];
if (total > 0.0) {
- w[i + 0] /= total;
- w[i + 1] /= total;
- w[i + 2] /= total;
- w[i + 3] /= total;
+ w[j + 0] /= total;
+ w[j + 1] /= total;
+ w[j + 2] /= total;
+ w[j + 3] /= total;
}
+
+ //print_line(itos(j / 4) + ": " + itos(r[j + 0]) + ":" + rtos(w[j + 0]) + ", " + itos(r[j + 1]) + ":" + rtos(w[j + 1]) + ", " + itos(r[j + 2]) + ":" + rtos(w[j + 2]) + ", " + itos(r[j + 3]) + ":" + rtos(w[j + 3]));
}
}
array[Mesh::ARRAY_WEIGHTS] = weights;
@@ -1338,6 +1374,10 @@ Error EditorSceneImporterGLTF::_parse_skins(GLTFState &state) {
//state.nodes[skeleton]->skeleton_skin = state.skins.size();
print_line("setting skeleton skin to" + itos(skeleton));
skin.skeleton = skeleton;
+ if (!state.skeleton_nodes.has(skeleton)) {
+ state.skeleton_nodes[skeleton] = Vector<int>();
+ }
+ state.skeleton_nodes[skeleton].push_back(i);
}
if (d.has("name")) {
@@ -1641,7 +1681,8 @@ void EditorSceneImporterGLTF::_generate_node(GLTFState &state, int p_node, Node
MeshInstance *mi = Object::cast_to<MeshInstance>(node);
//move skeleton around and place it on node, as the node _is_ a skeleton.
Skeleton *s = skeletons[n->skin];
- mi->set_skeleton_path(mi->get_path_to(s));
+ state.paths_to_skeleton[mi] = s;
+ //move it later, as skeleton may be moved around first
}
#if 0
@@ -1655,16 +1696,27 @@ void EditorSceneImporterGLTF::_generate_node(GLTFState &state, int p_node, Node
#endif
for (int i = 0; i < n->children.size(); i++) {
if (state.nodes[n->children[i]]->joints.size()) {
- _generate_bone(state, n->children[i], skeletons, Vector<int>());
+ _generate_bone(state, n->children[i], skeletons, Vector<int>(), node);
} else {
_generate_node(state, n->children[i], node, p_owner, skeletons);
}
}
}
-void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones) {
+void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones, Node *p_parent_node) {
ERR_FAIL_INDEX(p_node, state.nodes.size());
+ if (state.skeleton_nodes.has(p_node)) {
+ //reparent skeletons to proper place
+ Vector<int> nodes = state.skeleton_nodes[p_node];
+ for (int i = 0; i < nodes.size(); i++) {
+ Node *owner = skeletons[i]->get_owner();
+ skeletons[i]->get_parent()->remove_child(skeletons[i]);
+ p_parent_node->add_child(skeletons[i]);
+ skeletons[i]->set_owner(owner);
+ }
+ }
+
GLTFNode *n = state.nodes[p_node];
Vector<int> parent_bones;
@@ -1684,7 +1736,7 @@ void EditorSceneImporterGLTF::_generate_bone(GLTFState &state, int p_node, Vecto
}
for (int i = 0; i < n->children.size(); i++) {
- _generate_bone(state, n->children[i], skeletons, parent_bones);
+ _generate_bone(state, n->children[i], skeletons, parent_bones, p_parent_node);
}
}
@@ -2000,12 +2052,18 @@ Spatial *EditorSceneImporterGLTF::_generate_scene(GLTFState &state, int p_bake_f
}
for (int i = 0; i < state.root_nodes.size(); i++) {
if (state.nodes[state.root_nodes[i]]->joints.size()) {
- _generate_bone(state, state.root_nodes[i], skeletons, Vector<int>());
+ _generate_bone(state, state.root_nodes[i], skeletons, Vector<int>(), root);
} else {
_generate_node(state, state.root_nodes[i], root, root, skeletons);
}
}
+ for (Map<Node *, Skeleton *>::Element *E = state.paths_to_skeleton.front(); E; E = E->next()) {
+ MeshInstance *mi = Object::cast_to<MeshInstance>(E->key());
+ ERR_CONTINUE(!mi);
+ mi->set_skeleton_path(mi->get_path_to(E->get()));
+ }
+
for (int i = 0; i < skeletons.size(); i++) {
skeletons[i]->localize_rests();
}
diff --git a/editor/import/editor_scene_importer_gltf.h b/editor/import/editor_scene_importer_gltf.h
index abbdfa418b..088036ce75 100644
--- a/editor/import/editor_scene_importer_gltf.h
+++ b/editor/import/editor_scene_importer_gltf.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* editor_scene_importer_gltf.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 EDITOR_SCENE_IMPORTER_GLTF_H
#define EDITOR_SCENE_IMPORTER_GLTF_H
@@ -244,6 +274,9 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
Vector<GLTFAnimation> animations;
+ Map<int, Vector<int> > skeleton_nodes;
+ Map<Node *, Skeleton *> paths_to_skeleton;
+
//Map<int, Vector<int> > skin_users; //cache skin users
~GLTFState() {
@@ -278,7 +311,7 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
Vector<Basis> _decode_accessor_as_basis(GLTFState &state, int p_accessor, bool p_for_vertex);
Vector<Transform> _decode_accessor_as_xform(GLTFState &state, int p_accessor, bool p_for_vertex);
- void _generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones);
+ void _generate_bone(GLTFState &state, int p_node, Vector<Skeleton *> &skeletons, const Vector<int> &p_parent_bones, Node *p_parent_node);
void _generate_node(GLTFState &state, int p_node, Node *p_parent, Node *p_owner, Vector<Skeleton *> &skeletons);
void _import_animation(GLTFState &state, AnimationPlayer *ap, int index, int bake_fps, Vector<Skeleton *> skeletons);
diff --git a/editor/import/resource_importer_bitmask.cpp b/editor/import/resource_importer_bitmask.cpp
new file mode 100644
index 0000000000..a5d3959952
--- /dev/null
+++ b/editor/import/resource_importer_bitmask.cpp
@@ -0,0 +1,91 @@
+#include "resource_importer_bitmask.h"
+#include "core/image.h"
+#include "editor/editor_file_system.h"
+#include "editor/editor_node.h"
+#include "io/config_file.h"
+#include "io/image_loader.h"
+#include "scene/resources/bit_mask.h"
+#include "scene/resources/texture.h"
+
+String ResourceImporterBitMap::get_importer_name() const {
+
+ return "bitmap";
+}
+
+String ResourceImporterBitMap::get_visible_name() const {
+
+ return "BitMap";
+}
+void ResourceImporterBitMap::get_recognized_extensions(List<String> *p_extensions) const {
+
+ ImageLoader::get_recognized_extensions(p_extensions);
+}
+String ResourceImporterBitMap::get_save_extension() const {
+ return "res";
+}
+
+String ResourceImporterBitMap::get_resource_type() const {
+
+ return "BitMap";
+}
+
+bool ResourceImporterBitMap::get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const {
+
+ return true;
+}
+
+int ResourceImporterBitMap::get_preset_count() const {
+ return 0;
+}
+String ResourceImporterBitMap::get_preset_name(int p_idx) const {
+
+ return String();
+}
+
+void ResourceImporterBitMap::get_import_options(List<ImportOption> *r_options, int p_preset) const {
+
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "create_from", PROPERTY_HINT_ENUM, "Black & White,Alpha"), 0));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::REAL, "threshold", PROPERTY_HINT_RANGE, "0,1,0.01"), 0.5));
+}
+
+Error ResourceImporterBitMap::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files) {
+
+ int create_from = p_options["create_from"];
+ float threshold = p_options["threshold"];
+ Ref<Image> image;
+ image.instance();
+ Error err = ImageLoader::load_image(p_source_file, image);
+ if (err != OK)
+ return err;
+
+ int w = image->get_width();
+ int h = image->get_height();
+
+ Ref<BitMap> bitmap;
+ bitmap.instance();
+ bitmap->create(Size2(w, h));
+ image->lock();
+
+ for (int i = 0; i < h; i++) {
+ for (int j = 0; j < w; j++) {
+
+ bool bit;
+ Color c = image->get_pixel(j, i);
+ if (create_from == 0) { //b&W
+ bit = c.get_v() > threshold;
+ } else {
+ bit = c.a > threshold;
+ }
+
+ bitmap->set_bit(Vector2(j, i), bit);
+ }
+ }
+
+ return ResourceSaver::save(p_save_path + ".res", bitmap);
+}
+
+ResourceImporterBitMap::ResourceImporterBitMap() {
+}
+
+ResourceImporterBitMap::~ResourceImporterBitMap() {
+}
diff --git a/editor/import/resource_importer_bitmask.h b/editor/import/resource_importer_bitmask.h
new file mode 100644
index 0000000000..8a3cafa7ce
--- /dev/null
+++ b/editor/import/resource_importer_bitmask.h
@@ -0,0 +1,29 @@
+#ifndef RESOURCE_IMPORTER_BITMASK_H
+#define RESOURCE_IMPORTER_BITMASK_H
+
+#include "image.h"
+#include "io/resource_import.h"
+
+class StreamBitMap;
+
+class ResourceImporterBitMap : public ResourceImporter {
+ GDCLASS(ResourceImporterBitMap, ResourceImporter)
+
+public:
+ virtual String get_importer_name() const;
+ virtual String get_visible_name() const;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const;
+ virtual String get_save_extension() const;
+ virtual String get_resource_type() const;
+
+ virtual int get_preset_count() const;
+ virtual String get_preset_name(int p_idx) const;
+
+ virtual void get_import_options(List<ImportOption> *r_options, int p_preset = 0) const;
+ virtual bool get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const;
+ virtual Error import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files = NULL);
+
+ ResourceImporterBitMap();
+ ~ResourceImporterBitMap();
+};
+#endif // RESOURCE_IMPORTER_BITMASK_H
diff --git a/editor/import/resource_importer_csv_translation.cpp b/editor/import/resource_importer_csv_translation.cpp
index 70093d13a7..22c32f5fc9 100644
--- a/editor/import/resource_importer_csv_translation.cpp
+++ b/editor/import/resource_importer_csv_translation.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_csv_translation.h"
#include "compressed_translation.h"
diff --git a/editor/import/resource_importer_csv_translation.h b/editor/import/resource_importer_csv_translation.h
index ca6e63f8aa..f5f230c6bd 100644
--- a/editor/import/resource_importer_csv_translation.h
+++ b/editor/import/resource_importer_csv_translation.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTERCSVTRANSLATION_H
#define RESOURCEIMPORTERCSVTRANSLATION_H
diff --git a/editor/import/resource_importer_obj.cpp b/editor/import/resource_importer_obj.cpp
index d2cdfb5013..78fc9ec9bd 100644
--- a/editor/import/resource_importer_obj.cpp
+++ b/editor/import/resource_importer_obj.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_obj.h"
#include "io/resource_saver.h"
diff --git a/editor/import/resource_importer_obj.h b/editor/import/resource_importer_obj.h
index 8710432aa1..3f6d1104d7 100644
--- a/editor/import/resource_importer_obj.h
+++ b/editor/import/resource_importer_obj.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTEROBJ_H
#define RESOURCEIMPORTEROBJ_H
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index d36cb5cb59..44948b8209 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_scene.h"
#include "editor/editor_node.h"
@@ -45,6 +46,7 @@
#include "scene/resources/box_shape.h"
#include "scene/resources/plane_shape.h"
#include "scene/resources/ray_shape.h"
+#include "scene/resources/scene_format_text.h"
#include "scene/resources/sphere_shape.h"
uint32_t EditorSceneImporter::get_import_flags() const {
@@ -1394,3 +1396,25 @@ ResourceImporterScene *ResourceImporterScene::singleton = NULL;
ResourceImporterScene::ResourceImporterScene() {
singleton = this;
}
+///////////////////////////////////////
+
+uint32_t EditorSceneImporterESCN::get_import_flags() const {
+ return IMPORT_SCENE;
+}
+void EditorSceneImporterESCN::get_extensions(List<String> *r_extensions) const {
+ r_extensions->push_back("escn");
+}
+Node *EditorSceneImporterESCN::import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err) {
+
+ Error error;
+ Ref<PackedScene> ps = ResourceFormatLoaderText::singleton->load(p_path, p_path, &error);
+ ERR_FAIL_COND_V(!ps.is_valid(), NULL);
+
+ Node *scene = ps->instance();
+ ERR_FAIL_COND_V(!scene, NULL);
+
+ return scene;
+}
+Ref<Animation> EditorSceneImporterESCN::import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps) {
+ ERR_FAIL_V(Ref<Animation>());
+}
diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h
index 4d0e236cf1..9c3ec7a29b 100644
--- a/editor/import/resource_importer_scene.h
+++ b/editor/import/resource_importer_scene.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTERSCENE_H
#define RESOURCEIMPORTERSCENE_H
@@ -154,4 +155,14 @@ public:
ResourceImporterScene();
};
+class EditorSceneImporterESCN : public EditorSceneImporter {
+ GDCLASS(EditorSceneImporterESCN, EditorSceneImporter);
+
+public:
+ virtual uint32_t get_import_flags() const;
+ virtual void get_extensions(List<String> *r_extensions) const;
+ virtual Node *import_scene(const String &p_path, uint32_t p_flags, int p_bake_fps, List<String> *r_missing_deps, Error *r_err = NULL);
+ virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags, int p_bake_fps);
+};
+
#endif // RESOURCEIMPORTERSCENE_H
diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp
index 45ce347244..8119b84b7e 100644
--- a/editor/import/resource_importer_texture.cpp
+++ b/editor/import/resource_importer_texture.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_texture.h"
#include "editor/editor_file_system.h"
diff --git a/editor/import/resource_importer_texture.h b/editor/import/resource_importer_texture.h
index 3d9e657017..fd6f75c3f4 100644
--- a/editor/import/resource_importer_texture.h
+++ b/editor/import/resource_importer_texture.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTTEXTURE_H
#define RESOURCEIMPORTTEXTURE_H
diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp
index de82c12b98..03155b3a48 100644
--- a/editor/import/resource_importer_wav.cpp
+++ b/editor/import/resource_importer_wav.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_wav.h"
#include "io/marshalls.h"
@@ -267,9 +268,15 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
for (int i = 0; i < 10; i++)
file->get_32(); // i wish to know why should i do this... no doc!
- loop = file->get_32() ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD;
- loop_begin = file->get_32();
- loop_end = file->get_32();
+ // only read 0x00 (loop forward) and 0x01 (loop ping-pong) and skip anything else because
+ // it's not supported (loop backward), reserved for future uses or sampler specific
+ // from https://sites.google.com/site/musicgapi/technical-documents/wav-file-format#smpl (loop type values table)
+ int loop_type = file->get_32();
+ if (loop_type == 0x00 || loop_type == 0x01) {
+ loop = loop_type ? AudioStreamSample::LOOP_PING_PONG : AudioStreamSample::LOOP_FORWARD;
+ loop_begin = file->get_32();
+ loop_end = file->get_32();
+ }
}
file->seek(file_pos + chunksize);
}
@@ -386,7 +393,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
Vector<float> new_data;
new_data.resize((last - first + 1) * format_channels);
- for (int i = first * format_channels; i <= last * format_channels; i++) {
+ for (int i = first * format_channels; i < (last + 1) * format_channels; i++) {
new_data[i - first * format_channels] = data[i];
}
diff --git a/editor/import/resource_importer_wav.h b/editor/import/resource_importer_wav.h
index 89a6bfb015..cfce5a31ee 100644
--- a/editor/import/resource_importer_wav.h
+++ b/editor/import/resource_importer_wav.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTWAV_H
#define RESOURCEIMPORTWAV_H
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index cec7fc6a4c..ce2a4ec6d8 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "import_dock.h"
#include "editor_node.h"
diff --git a/editor/import_dock.h b/editor/import_dock.h
index d6b5c4d9b4..a7a7eda8d8 100644
--- a/editor/import_dock.h
+++ b/editor/import_dock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMPORTDOCK_H
#define IMPORTDOCK_H
diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp
index 030510feee..73e78ddf2a 100644
--- a/editor/multi_node_edit.cpp
+++ b/editor/multi_node_edit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "multi_node_edit.h"
#include "core/helper/math_fieldwise.h"
diff --git a/editor/multi_node_edit.h b/editor/multi_node_edit.h
index c6422faaf2..614832320e 100644
--- a/editor/multi_node_edit.h
+++ b/editor/multi_node_edit.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MULTI_NODE_EDIT_H
#define MULTI_NODE_EDIT_H
diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp
index 429eb4ae34..83e09b7676 100644
--- a/editor/node_dock.cpp
+++ b/editor/node_dock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "node_dock.h"
#include "editor_node.h"
diff --git a/editor/node_dock.h b/editor/node_dock.h
index 23bc7af90b..4b2a9d14da 100644
--- a/editor/node_dock.h
+++ b/editor/node_dock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NODE_DOCK_H
#define NODE_DOCK_H
diff --git a/editor/output_strings.cpp b/editor/output_strings.cpp
index 37198ef6ab..b0b72510a9 100644
--- a/editor/output_strings.cpp
+++ b/editor/output_strings.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "output_strings.h"
void OutputStrings::update_scrollbars() {
diff --git a/editor/output_strings.h b/editor/output_strings.h
index 58d966a6ee..0729971704 100644
--- a/editor/output_strings.h
+++ b/editor/output_strings.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OUTPUT_STRINGS_H
#define OUTPUT_STRINGS_H
diff --git a/editor/pane_drag.cpp b/editor/pane_drag.cpp
index eb76a1ad00..d8c504a85d 100644
--- a/editor/pane_drag.cpp
+++ b/editor/pane_drag.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "pane_drag.h"
void PaneDrag::_gui_input(const Ref<InputEvent> &p_input) {
diff --git a/editor/pane_drag.h b/editor/pane_drag.h
index 22e46a6df7..e80664eee7 100644
--- a/editor/pane_drag.h
+++ b/editor/pane_drag.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PANE_DRAG_H
#define PANE_DRAG_H
diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp
index 06d07ad5e6..5052b69e24 100644
--- a/editor/plugins/abstract_polygon_2d_editor.cpp
+++ b/editor/plugins/abstract_polygon_2d_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "abstract_polygon_2d_editor.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h
index 38aff47706..9ba03bcdf6 100644
--- a/editor/plugins/abstract_polygon_2d_editor.h
+++ b/editor/plugins/abstract_polygon_2d_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ABSTRACT_POLYGON_2D_EDITOR_H
#define ABSTRACT_POLYGON_2D_EDITOR_H
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index dcc766ad0d..c22e1cd88b 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_player_editor_plugin.h"
#include "editor/animation_editor.h"
@@ -72,7 +73,7 @@ void AnimationPlayerEditor::_notification(int p_what) {
if (player->is_playing()) {
{
- String animname = player->get_current_animation();
+ String animname = player->get_assigned_animation();
if (player->has_animation(animname)) {
Ref<Animation> anim = player->get_animation(animname);
@@ -185,8 +186,8 @@ void AnimationPlayerEditor::_play_pressed() {
if (current != "") {
- if (current == player->get_current_animation())
- player->stop(); //so it wont blend with itself
+ if (current == player->get_assigned_animation())
+ player->stop(); //so it won't blend with itself
player->play(current);
}
@@ -208,9 +209,9 @@ void AnimationPlayerEditor::_play_from_pressed() {
float time = player->get_current_animation_position();
- if (current == player->get_current_animation() && player->is_playing()) {
+ if (current == player->get_assigned_animation() && player->is_playing()) {
- player->stop(); //so it wont blend with itself
+ player->stop(); //so it won't blend with itself
}
player->play(current);
@@ -233,8 +234,8 @@ void AnimationPlayerEditor::_play_bw_pressed() {
if (current != "") {
- if (current == player->get_current_animation())
- player->stop(); //so it wont blend with itself
+ if (current == player->get_assigned_animation())
+ player->stop(); //so it won't blend with itself
player->play(current, -1, -1, true);
}
@@ -255,8 +256,8 @@ void AnimationPlayerEditor::_play_bw_from_pressed() {
if (current != "") {
float time = player->get_current_animation_position();
- if (current == player->get_current_animation())
- player->stop(); //so it wont blend with itself
+ if (current == player->get_assigned_animation())
+ player->stop(); //so it won't blend with itself
player->play(current, -1, -1, true);
player->seek(time);
@@ -298,7 +299,7 @@ void AnimationPlayerEditor::_animation_selected(int p_which) {
if (current != "") {
- player->set_current_animation(current);
+ player->set_assigned_animation(current);
Ref<Animation> anim = player->get_animation(current);
{
@@ -653,7 +654,7 @@ Dictionary AnimationPlayerEditor::get_state() const {
d["visible"] = is_visible_in_tree();
if (EditorNode::get_singleton()->get_edited_scene() && is_visible_in_tree() && player) {
d["player"] = EditorNode::get_singleton()->get_edited_scene()->get_path_to(player);
- d["animation"] = player->get_current_animation();
+ d["animation"] = player->get_assigned_animation();
}
return d;
@@ -781,7 +782,7 @@ void AnimationPlayerEditor::_update_animation() {
}
scale->set_text(String::num(player->get_speed_scale(), 2));
- String current = player->get_current_animation();
+ String current = player->get_assigned_animation();
for (int i = 0; i < animation->get_item_count(); i++) {
@@ -828,7 +829,7 @@ void AnimationPlayerEditor::_update_player() {
else
animation->add_item(E->get());
- if (player->get_current_animation() == E->get())
+ if (player->get_assigned_animation() == E->get())
active_idx = animation->get_item_count() - 1;
}
@@ -985,7 +986,7 @@ void AnimationPlayerEditor::_seek_value_changed(float p_value, bool p_set) {
};
updating = true;
- String current = player->get_current_animation(); //animation->get_item_text( animation->get_selected() );
+ String current = player->get_assigned_animation(); //animation->get_item_text( animation->get_selected() );
if (current == "" || !player->has_animation(current)) {
updating = false;
current = "";
@@ -1335,7 +1336,7 @@ void AnimationPlayerEditor::_prepare_onion_layers_1() {
void AnimationPlayerEditor::_prepare_onion_layers_2() {
- Ref<Animation> anim = player->get_animation(player->get_current_animation());
+ Ref<Animation> anim = player->get_animation(player->get_assigned_animation());
if (!anim.is_valid())
return;
diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h
index 67c6aa1fd7..a7b7c6c465 100644
--- a/editor/plugins/animation_player_editor_plugin.h
+++ b/editor/plugins/animation_player_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_PLAYER_EDITOR_PLUGIN_H
#define ANIMATION_PLAYER_EDITOR_PLUGIN_H
diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp
index 9337bd21fc..f0e186e4b0 100644
--- a/editor/plugins/animation_tree_editor_plugin.cpp
+++ b/editor/plugins/animation_tree_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_tree_editor_plugin.h"
#include "core/io/resource_loader.h"
diff --git a/editor/plugins/animation_tree_editor_plugin.h b/editor/plugins/animation_tree_editor_plugin.h
index c46d84893e..aeb5b1744f 100644
--- a/editor/plugins/animation_tree_editor_plugin.h
+++ b/editor/plugins/animation_tree_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_TREE_EDITOR_PLUGIN_H
#define ANIMATION_TREE_EDITOR_PLUGIN_H
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
index 19b92a8d58..915132c75c 100644
--- a/editor/plugins/asset_library_editor_plugin.cpp
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "asset_library_editor_plugin.h"
#include "editor_node.h"
diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h
index 8974e01448..b344716c1d 100644
--- a/editor/plugins/asset_library_editor_plugin.h
+++ b/editor/plugins/asset_library_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ASSET_LIBRARY_EDITOR_PLUGIN_H
#define ASSET_LIBRARY_EDITOR_PLUGIN_H
diff --git a/editor/plugins/baked_lightmap_editor_plugin.cpp b/editor/plugins/baked_lightmap_editor_plugin.cpp
index 08f4d06ef7..59b79bd070 100644
--- a/editor/plugins/baked_lightmap_editor_plugin.cpp
+++ b/editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* baked_lightmap_editor_plugin.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "baked_lightmap_editor_plugin.h"
void BakedLightmapEditorPlugin::_bake() {
@@ -20,7 +50,6 @@ void BakedLightmapEditorPlugin::_bake() {
case BakedLightmap::BAKE_ERROR_CANT_CREATE_IMAGE:
EditorNode::get_singleton()->show_warning(TTR("Failed creating lightmap images, make sure path is writable."));
break;
- defaut : {}
}
}
}
@@ -61,7 +90,7 @@ void BakedLightmapEditorPlugin::bake_func_begin(int p_steps) {
bool BakedLightmapEditorPlugin::bake_func_step(int p_step, const String &p_description) {
ERR_FAIL_COND_V(tmp_progress == NULL, false);
- return tmp_progress->step(p_description, p_step);
+ return tmp_progress->step(p_description, p_step, false);
}
void BakedLightmapEditorPlugin::bake_func_end() {
diff --git a/editor/plugins/baked_lightmap_editor_plugin.h b/editor/plugins/baked_lightmap_editor_plugin.h
index d64c33884a..a32b573851 100644
--- a/editor/plugins/baked_lightmap_editor_plugin.h
+++ b/editor/plugins/baked_lightmap_editor_plugin.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* baked_lightmap_editor_plugin.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 BAKED_LIGHTMAP_EDITOR_PLUGIN_H
#define BAKED_LIGHTMAP_EDITOR_PLUGIN_H
diff --git a/editor/plugins/camera_editor_plugin.cpp b/editor/plugins/camera_editor_plugin.cpp
index c5cdbc0ad8..37fbb54c30 100644
--- a/editor/plugins/camera_editor_plugin.cpp
+++ b/editor/plugins/camera_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "camera_editor_plugin.h"
#include "spatial_editor_plugin.h"
diff --git a/editor/plugins/camera_editor_plugin.h b/editor/plugins/camera_editor_plugin.h
index 1fcdc50f68..275624beeb 100644
--- a/editor/plugins/camera_editor_plugin.h
+++ b/editor/plugins/camera_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAMERA_EDITOR_PLUGIN_H
#define CAMERA_EDITOR_PLUGIN_H
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 53b52c5f1b..7d6025cb03 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "canvas_item_editor_plugin.h"
#include "editor/animation_editor.h"
@@ -339,7 +340,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const
// Grid
Point2 offset = grid_offset;
if (snap_relative) {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
if (selection.size() == 1 && Object::cast_to<Node2D>(selection[0])) {
offset = Object::cast_to<Node2D>(selection[0])->get_global_position();
} else {
@@ -381,7 +382,7 @@ void CanvasItemEditor::_unhandled_key_input(const Ref<InputEvent> &p_ev) {
drag = DRAG_PIVOT;
} else if (set_pivot_shortcut.is_valid() && set_pivot_shortcut->is_shortcut(p_ev) && drag == DRAG_NONE && can_move_pivot) {
if (!Input::get_singleton()->is_mouse_button_pressed(0)) {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
Vector2 mouse_pos = viewport->get_local_mouse_position();
if (selection.size() && viewport->get_rect().has_point(mouse_pos)) {
//just in case, make it work if over viewport
@@ -612,6 +613,7 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no
if (Object::cast_to<Viewport>(p_node))
return;
+ const real_t grab_distance = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
CanvasItem *c = Object::cast_to<CanvasItem>(p_node);
for (int i = p_node->get_child_count() - 1; i >= 0; i--) {
@@ -630,14 +632,17 @@ void CanvasItemEditor::_find_canvas_items_at_pos(const Point2 &p_pos, Node *p_no
if (c && c->is_visible_in_tree() && !c->has_meta("_edit_lock_") && !Object::cast_to<CanvasLayer>(c)) {
Rect2 rect = c->_edit_get_rect();
- Point2 local_pos = (p_parent_xform * p_canvas_xform * c->get_transform()).affine_inverse().xform(p_pos);
+ Transform2D to_local = (p_parent_xform * p_canvas_xform * c->get_transform()).affine_inverse();
+ Point2 local_pos = to_local.xform(p_pos);
+ const real_t local_grab_distance = (to_local.xform(p_pos + Vector2(grab_distance, 0)) - local_pos).length();
+ Rect2 local_pos_rect = Rect2(local_pos, Vector2(0, 0)).grow(local_grab_distance);
- if (rect.has_point(local_pos)) {
+ if (rect.intersects(local_pos_rect) && c->_edit_is_selected_on_click(local_pos, local_grab_distance)) {
Node2D *node = Object::cast_to<Node2D>(c);
_SelectResult res;
res.item = c;
- res.z = node ? node->get_z() : 0;
+ res.z_index = node ? node->get_z_index() : 0;
res.has_z = node;
r_items.push_back(res);
}
@@ -746,7 +751,7 @@ void CanvasItemEditor::_key_move(const Vector2 &p_dir, bool p_snap, KeyMoveMODE
undo_redo->create_action(TTR("Move Action"), UndoRedo::MERGE_ENDS);
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -806,7 +811,7 @@ Point2 CanvasItemEditor::_find_topleftmost_point() {
Rect2 r2;
r2.position = tl;
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -830,7 +835,7 @@ Point2 CanvasItemEditor::_find_topleftmost_point() {
int CanvasItemEditor::get_item_count() {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
int ic = 0;
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -997,7 +1002,7 @@ CanvasItemEditor::DragType CanvasItemEditor::_get_anchor_handle_drag_type(const
void CanvasItemEditor::_prepare_drag(const Point2 &p_click_pos) {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -1233,7 +1238,7 @@ void CanvasItemEditor::_gui_input_viewport_base(const Ref<InputEvent> &p_event)
if (b->get_button_index() == BUTTON_LEFT && b->is_pressed()) {
if (show_guides && show_rulers && EditorNode::get_singleton()->get_edited_scene()) {
Transform2D xform = viewport_scrollable->get_transform() * transform;
- // Retreive the guide lists
+ // Retrieve the guide lists
Array vguides;
if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
@@ -1291,7 +1296,7 @@ void CanvasItemEditor::_gui_input_viewport_base(const Ref<InputEvent> &p_event)
if (show_guides && EditorNode::get_singleton()->get_edited_scene()) {
Transform2D xform = viewport_scrollable->get_transform() * transform;
- // Retreive the guide lists
+ // Retrieve the guide lists
Array vguides;
if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
@@ -1522,7 +1527,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
bone_ik_list.clear();
} else {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
@@ -1603,7 +1608,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
} else {
undo_redo->create_action(TTR("Edit CanvasItem"));
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -1900,7 +1905,7 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
return;
}
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
@@ -1948,9 +1953,9 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
if (node) {
real_t angle = node->get_rotation();
- node->set_rotation(snap_angle(angle + (dfrom - center).angle_to(dto - center), angle));
display_rotate_to = dto;
- display_rotate_from = center;
+ display_rotate_from = center + node->get_pivot_offset().rotated(angle);
+ node->set_rotation(snap_angle(angle + (dfrom - display_rotate_from).angle_to(display_rotate_to - display_rotate_from), angle));
viewport->update();
}
}
@@ -1994,29 +1999,29 @@ void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
switch (drag) {
case DRAG_ANCHOR_TOP_LEFT:
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false);
continue;
break;
case DRAG_ANCHOR_TOP_RIGHT:
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false);
continue;
break;
case DRAG_ANCHOR_BOTTOM_RIGHT:
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false);
break;
case DRAG_ANCHOR_BOTTOM_LEFT:
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false);
continue;
break;
case DRAG_ANCHOR_ALL:
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x);
- if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y);
- if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_LEFT, anchor_snapped.x, false);
+ if (!uniform || (uniform && !use_y)) control->set_anchor(MARGIN_RIGHT, anchor_snapped.x, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_TOP, anchor_snapped.y, false);
+ if (!uniform || (uniform && use_y)) control->set_anchor(MARGIN_BOTTOM, anchor_snapped.y, false);
continue;
break;
}
@@ -2916,7 +2921,7 @@ void CanvasItemEditor::_draw_viewport() {
// hide/show buttons depending on the selection
bool all_locked = true;
bool all_group = true;
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
if (selection.empty()) {
all_locked = false;
all_group = false;
@@ -2971,7 +2976,7 @@ void CanvasItemEditor::_notification(int p_what) {
EditorNode::get_singleton()->get_scene_root()->set_snap_controls_to_pixels(GLOBAL_GET("gui/common/snap_controls_to_pixels"));
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
bool all_control = true;
bool has_control = false;
@@ -3272,7 +3277,7 @@ void CanvasItemEditor::_update_scroll(float) {
}
void CanvasItemEditor::_set_anchors_and_margins_preset(Control::LayoutPreset p_preset) {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
undo_redo->create_action(TTR("Change Anchors and Margins"));
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -3316,7 +3321,7 @@ void CanvasItemEditor::_set_anchors_and_margins_preset(Control::LayoutPreset p_p
}
void CanvasItemEditor::_set_anchors_preset(Control::LayoutPreset p_preset) {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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()) {
@@ -3459,12 +3464,12 @@ void CanvasItemEditor::_popup_callback(int p_op) {
case LOCK_SELECTED: {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
- if (!canvas_item || !canvas_item->is_visible_in_tree())
+ if (!canvas_item || !canvas_item->is_inside_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -3477,12 +3482,12 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
case UNLOCK_SELECTED: {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
- if (!canvas_item || !canvas_item->is_visible_in_tree())
+ if (!canvas_item || !canvas_item->is_inside_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -3497,12 +3502,12 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
case GROUP_SELECTED: {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
- if (!canvas_item || !canvas_item->is_visible_in_tree())
+ if (!canvas_item || !canvas_item->is_inside_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -3515,12 +3520,12 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
case UNGROUP_SELECTED: {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ 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());
- if (!canvas_item || !canvas_item->is_visible_in_tree())
+ if (!canvas_item || !canvas_item->is_inside_tree())
continue;
if (canvas_item->get_viewport() != EditorNode::get_singleton()->get_scene_root())
@@ -3873,7 +3878,7 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
case SKELETON_SET_IK_CHAIN: {
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ List<Node *> selection = editor_selection->get_selected_node_list();
for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
@@ -3986,6 +3991,7 @@ void CanvasItemEditor::_bind_methods() {
ClassDB::bind_method("_snap_changed", &CanvasItemEditor::_snap_changed);
ClassDB::bind_method(D_METHOD("_selection_result_pressed"), &CanvasItemEditor::_selection_result_pressed);
ClassDB::bind_method(D_METHOD("_selection_menu_hide"), &CanvasItemEditor::_selection_menu_hide);
+ ClassDB::bind_method(D_METHOD("set_state"), &CanvasItemEditor::set_state);
ADD_SIGNAL(MethodInfo("item_lock_status_changed"));
ADD_SIGNAL(MethodInfo("item_group_status_changed"));
@@ -4344,7 +4350,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
additive_selection = false;
// Update the menus checkboxes
- set_state(get_state());
+ call_deferred("set_state", get_state());
}
CanvasItemEditor *CanvasItemEditor::singleton = NULL;
@@ -4429,6 +4435,7 @@ void CanvasItemEditorViewport::_on_change_type_closed() {
void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) const {
label->set_position(get_global_position() + Point2(14, 14) * EDSCALE);
label_desc->set_position(label->get_position() + Point2(0, label->get_size().height));
+ bool add_preview = false;
for (int i = 0; i < files.size(); i++) {
String path = files[i];
RES res = ResourceLoader::load(path);
@@ -4450,9 +4457,12 @@ void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) cons
}
}
}
- editor->get_scene_root()->add_child(preview_node);
+ add_preview = true;
}
}
+
+ if (add_preview)
+ editor->get_scene_root()->add_child(preview_node);
}
void CanvasItemEditorViewport::_remove_preview() {
@@ -4597,6 +4607,14 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
void CanvasItemEditorViewport::_perform_drop_data() {
_remove_preview();
+ // Without root dropping multiple files is not allowed
+ if (!target_node && selected_files.size() > 1) {
+ accept->get_ok()->set_text(TTR("Ok"));
+ accept->set_text(TTR("Cannot instantiate multiple nodes without root."));
+ accept->popup_centered_minsize();
+ return;
+ }
+
Vector<String> error_files;
editor_data->get_undo_redo().create_action(TTR("Create Node"));
@@ -4607,30 +4625,40 @@ void CanvasItemEditorViewport::_perform_drop_data() {
if (res.is_null()) {
continue;
}
- Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res));
Ref<PackedScene> scene = Ref<PackedScene>(Object::cast_to<PackedScene>(*res));
- if (texture != NULL) {
- Node *child;
- if (default_type == "Light2D")
- child = memnew(Light2D);
- else if (default_type == "Particles2D")
- child = memnew(Particles2D);
- else if (default_type == "Polygon2D")
- child = memnew(Polygon2D);
- else if (default_type == "TouchScreenButton")
- child = memnew(TouchScreenButton);
- else if (default_type == "TextureRect")
- child = memnew(TextureRect);
- else if (default_type == "NinePatchRect")
- child = memnew(NinePatchRect);
- else
- child = memnew(Sprite); // default
-
- _create_nodes(target_node, child, path, drop_pos);
- } else if (scene != NULL) {
- bool success = _create_instance(target_node, path, drop_pos);
- if (!success) {
- error_files.push_back(path);
+ if (scene != NULL && scene.is_valid()) {
+ if (!target_node) {
+ // Without root node act the same as "Load Inherited Scene"
+ Error err = EditorNode::get_singleton()->load_scene(path, false, true);
+ if (err != OK) {
+ error_files.push_back(path);
+ }
+ } else {
+ bool success = _create_instance(target_node, path, drop_pos);
+ if (!success) {
+ error_files.push_back(path);
+ }
+ }
+ } else {
+ Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res));
+ if (texture != NULL && texture.is_valid()) {
+ Node *child;
+ if (default_type == "Light2D")
+ child = memnew(Light2D);
+ else if (default_type == "Particles2D")
+ child = memnew(Particles2D);
+ else if (default_type == "Polygon2D")
+ child = memnew(Polygon2D);
+ else if (default_type == "TouchScreenButton")
+ child = memnew(TouchScreenButton);
+ else if (default_type == "TextureRect")
+ child = memnew(TextureRect);
+ else if (default_type == "NinePatchRect")
+ child = memnew(NinePatchRect);
+ else
+ child = memnew(Sprite); // default
+
+ _create_nodes(target_node, child, path, drop_pos);
}
}
}
@@ -4655,14 +4683,14 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian
if (String(d["type"]) == "files") {
Vector<String> files = d["files"];
bool can_instance = false;
- for (int i = 0; i < files.size(); i++) { // check if dragged files contain resource or scene can be created at least one
+ for (int i = 0; i < files.size(); i++) { // check if dragged files contain resource or scene can be created at least once
RES res = ResourceLoader::load(files[i]);
if (res.is_null()) {
continue;
}
String type = res->get_class();
if (type == "PackedScene") {
- Ref<PackedScene> sdata = ResourceLoader::load(files[i]);
+ Ref<PackedScene> sdata = Ref<PackedScene>(Object::cast_to<PackedScene>(*res));
Node *instanced_scene = sdata->instance(PackedScene::GEN_EDIT_STATE_INSTANCE);
if (!instanced_scene) {
continue;
@@ -4676,7 +4704,7 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian
type == "StreamTexture" ||
type == "AtlasTexture" ||
type == "LargeTexture") {
- Ref<Texture> texture = ResourceLoader::load(files[i]);
+ Ref<Texture> texture = Ref<Texture>(Object::cast_to<Texture>(*res));
if (texture.is_valid() == false) {
continue;
}
@@ -4702,6 +4730,7 @@ bool CanvasItemEditorViewport::can_drop_data(const Point2 &p_point, const Varian
}
void CanvasItemEditorViewport::_show_resource_type_selector() {
+ _remove_preview();
List<BaseButton *> btn_list;
button_group->get_buttons(&btn_list);
@@ -4713,6 +4742,17 @@ void CanvasItemEditorViewport::_show_resource_type_selector() {
selector->popup_centered_minsize();
}
+bool CanvasItemEditorViewport::_only_packed_scenes_selected() const {
+
+ for (int i = 0; i < selected_files.size(); ++i) {
+ if (ResourceLoader::load(selected_files[i])->get_class() != "PackedScene") {
+ return false;
+ }
+ }
+
+ return true;
+}
+
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_alt = Input::get_singleton()->is_key_pressed(KEY_ALT);
@@ -4722,6 +4762,8 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
if (d.has("type") && String(d["type"]) == "files") {
selected_files = d["files"];
}
+ if (selected_files.size() == 0)
+ return;
List<Node *> list = editor->get_editor_selection()->get_selected_node_list();
if (list.size() == 0) {
@@ -4731,25 +4773,19 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
} else {
drop_pos = p_point;
target_node = NULL;
- _show_resource_type_selector();
- return;
}
}
- if (list.size() != 1) {
- accept->get_ok()->set_text(TTR("I see.."));
- accept->set_text(TTR("This operation requires a single selected node."));
- accept->popup_centered_minsize();
- _remove_preview();
- return;
- }
- target_node = list[0];
- if (is_shift && target_node != editor->get_edited_scene()) {
- target_node = target_node->get_parent();
+ 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) {
+ if (is_alt && !_only_packed_scenes_selected()) {
_show_resource_type_selector();
} else {
_perform_drop_data();
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index f14f1a92a6..ace87f9fe2 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTROL_EDITOR_PLUGIN_H
#define CONTROL_EDITOR_PLUGIN_H
@@ -252,10 +253,10 @@ class CanvasItemEditor : public VBoxContainer {
struct _SelectResult {
CanvasItem *item;
- float z;
+ float z_index;
bool has_z;
_FORCE_INLINE_ bool operator<(const _SelectResult &p_rr) const {
- return has_z && p_rr.has_z ? p_rr.z < z : p_rr.has_z;
+ return has_z && p_rr.has_z ? p_rr.z_index < z_index : p_rr.has_z;
}
};
@@ -575,6 +576,7 @@ class CanvasItemEditorViewport : public Control {
void _remove_preview();
bool _cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node);
+ bool _only_packed_scenes_selected() const;
void _create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point);
bool _create_instance(Node *parent, String &path, const Point2 &p_point);
void _perform_drop_data();
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
index 53b06c17be..b624d69810 100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_polygon_2d_editor_plugin.h"
Node2D *CollisionPolygon2DEditor::_get_node() const {
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h
index 82a30d6b97..ba691ab76a 100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.h
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_POLYGON_2D_EDITOR_PLUGIN_H
#define COLLISION_POLYGON_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/collision_polygon_editor_plugin.cpp b/editor/plugins/collision_polygon_editor_plugin.cpp
index c95f10441b..d8d3c0cee6 100644
--- a/editor/plugins/collision_polygon_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_polygon_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/collision_polygon_editor_plugin.h b/editor/plugins/collision_polygon_editor_plugin.h
index 0ccdf0ad16..f1f215b092 100644
--- a/editor/plugins/collision_polygon_editor_plugin.h
+++ b/editor/plugins/collision_polygon_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_POLYGON_EDITOR_PLUGIN_H
#define COLLISION_POLYGON_EDITOR_PLUGIN_H
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp
index 1da3d55b3d..b003664dca 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_shape_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h
index 7e5dd44c5e..10784f1129 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.h
+++ b/editor/plugins/collision_shape_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SHAPE_2D_EDITOR_PLUGIN_H
#define COLLISION_SHAPE_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/cube_grid_theme_editor_plugin.cpp b/editor/plugins/cube_grid_theme_editor_plugin.cpp
index 416441befc..81f45b9f55 100644
--- a/editor/plugins/cube_grid_theme_editor_plugin.cpp
+++ b/editor/plugins/cube_grid_theme_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "cube_grid_theme_editor_plugin.h"
#include "editor/editor_node.h"
@@ -289,8 +290,7 @@ MeshLibraryEditorPlugin::MeshLibraryEditorPlugin(EditorNode *p_node) {
theme_editor = memnew(MeshLibraryEditor(p_node));
p_node->get_viewport()->add_child(theme_editor);
- theme_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE);
- theme_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN);
+ theme_editor->set_anchors_and_margins_preset(Control::PRESET_TOP_WIDE);
theme_editor->set_end(Point2(0, 22));
theme_editor->hide();
}
diff --git a/editor/plugins/cube_grid_theme_editor_plugin.h b/editor/plugins/cube_grid_theme_editor_plugin.h
index fc5b3d8006..36a8f8f203 100644
--- a/editor/plugins/cube_grid_theme_editor_plugin.h
+++ b/editor/plugins/cube_grid_theme_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CUBE_GRID_THEME_EDITOR_PLUGIN_H
#define CUBE_GRID_THEME_EDITOR_PLUGIN_H
diff --git a/editor/plugins/curve_editor_plugin.cpp b/editor/plugins/curve_editor_plugin.cpp
index c865ddd4b0..7c49408c35 100644
--- a/editor/plugins/curve_editor_plugin.cpp
+++ b/editor/plugins/curve_editor_plugin.cpp
@@ -177,7 +177,7 @@ void CurveEditor::on_gui_input(const Ref<InputEvent> &p_event) {
set_hover_point_index(i);
set_selected_point(i);
- // This is to prevent the user from loosing a point out of view.
+ // This is to prevent the user from losing a point out of view.
if (point_pos.y < curve.get_min_value())
point_pos.y = curve.get_min_value();
else if (point_pos.y > curve.get_max_value())
@@ -347,7 +347,8 @@ void CurveEditor::open_context_menu(Vector2 pos) {
_context_menu->set_item_checked(_context_menu->get_item_index(CONTEXT_LINEAR), is_linear);
} else {
- _context_menu->add_separator();
+ if (_selected_point > 0 || _selected_point + 1 < _curve_ref->get_point_count())
+ _context_menu->add_separator();
if (_selected_point > 0) {
_context_menu->add_check_item(TTR("Left linear"), CONTEXT_LEFT_LINEAR);
@@ -367,6 +368,7 @@ void CurveEditor::open_context_menu(Vector2 pos) {
_context_menu->add_submenu_item(TTR("Load preset"), _presets_menu->get_name());
+ _context_menu->set_size(Size2(0, 0));
_context_menu->popup();
}
@@ -566,7 +568,6 @@ static void plot_curve_accurate(const Curve &curve, float step, T plot_func) {
Vector2 prev_pos = a;
float len = b.x - a.x;
- //float step = 4.f / view_size.x;
for (float x = step; x < len; x += step) {
pos.x = a.x + x;
@@ -694,24 +695,6 @@ void CurveEditor::_draw() {
CanvasItemPlotCurve plot_func(*this, line_color, edge_line_color);
plot_curve_accurate(curve, 4.f / view_size.x, plot_func);
- /*// TEST draw baked curve
- {
- Vector2 pos = Vector2(0, curve.interpolate_baked(0));
- Vector2 prev_pos = pos;
-
- float len = 1.0;
- float step = 4.f / view_size.x;
-
- for(float x = step; x < len; x += step) {
- pos.x = x;
- pos.y = curve.interpolate_baked(x);
- draw_line(get_point_view_pos(prev_pos), get_point_view_pos(pos), Color(0,1,0));
- prev_pos = pos;
- }
-
- draw_line(get_point_view_pos(prev_pos), get_point_view_pos(Vector2(1, curve.interpolate_baked(1))), Color(0,1,0));
- }//*/
-
// Draw points
draw_set_transform_matrix(Transform2D());
diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp
index a42f5b09bb..215964235e 100644
--- a/editor/plugins/editor_preview_plugins.cpp
+++ b/editor/plugins/editor_preview_plugins.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor_preview_plugins.h"
#include "editor/editor_scale.h"
diff --git a/editor/plugins/editor_preview_plugins.h b/editor/plugins/editor_preview_plugins.h
index d77bf5e7bb..2e12515e30 100644
--- a/editor/plugins/editor_preview_plugins.h
+++ b/editor/plugins/editor_preview_plugins.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITORPREVIEWPLUGINS_H
#define EDITORPREVIEWPLUGINS_H
diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp
index 48978aeae5..06da64b181 100644
--- a/editor/plugins/gi_probe_editor_plugin.cpp
+++ b/editor/plugins/gi_probe_editor_plugin.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* gi_probe_editor_plugin.h */
+/* gi_probe_editor_plugin.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gi_probe_editor_plugin.h"
void GIProbeEditorPlugin::_bake() {
@@ -72,7 +73,7 @@ void GIProbeEditorPlugin::bake_func_begin(int p_steps) {
void GIProbeEditorPlugin::bake_func_step(int p_step, const String &p_description) {
ERR_FAIL_COND(tmp_progress == NULL);
- tmp_progress->step(p_description, p_step);
+ tmp_progress->step(p_description, p_step, false);
}
void GIProbeEditorPlugin::bake_func_end() {
diff --git a/editor/plugins/gi_probe_editor_plugin.h b/editor/plugins/gi_probe_editor_plugin.h
index cf1c8b5aa3..017e9bd743 100644
--- a/editor/plugins/gi_probe_editor_plugin.h
+++ b/editor/plugins/gi_probe_editor_plugin.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* gi_probe_editor_plugin.cpp */
+/* gi_probe_editor_plugin.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GIPROBEEDITORPLUGIN_H
#define GIPROBEEDITORPLUGIN_H
diff --git a/editor/plugins/gradient_editor_plugin.cpp b/editor/plugins/gradient_editor_plugin.cpp
index 738a92380c..e89cb68935 100644
--- a/editor/plugins/gradient_editor_plugin.cpp
+++ b/editor/plugins/gradient_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gradient_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/gradient_editor_plugin.h b/editor/plugins/gradient_editor_plugin.h
index 6eeb28aa81..52f4c59575 100644
--- a/editor/plugins/gradient_editor_plugin.h
+++ b/editor/plugins/gradient_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_
#define TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_
diff --git a/editor/plugins/item_list_editor_plugin.cpp b/editor/plugins/item_list_editor_plugin.cpp
index 436a9c6532..fd5a1f185f 100644
--- a/editor/plugins/item_list_editor_plugin.cpp
+++ b/editor/plugins/item_list_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "item_list_editor_plugin.h"
#include "io/resource_loader.h"
diff --git a/editor/plugins/item_list_editor_plugin.h b/editor/plugins/item_list_editor_plugin.h
index 6dbea59585..bd7d3db10d 100644
--- a/editor/plugins/item_list_editor_plugin.h
+++ b/editor/plugins/item_list_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ITEM_LIST_EDITOR_PLUGIN_H
#define ITEM_LIST_EDITOR_PLUGIN_H
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp
index 31287ccdfb..a3be10dc33 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.cpp
+++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "light_occluder_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h
index a519acb601..39de8b1020 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.h
+++ b/editor/plugins/light_occluder_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H
#define LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/line_2d_editor_plugin.cpp b/editor/plugins/line_2d_editor_plugin.cpp
index 5d5dc8f449..47d5a73078 100644
--- a/editor/plugins/line_2d_editor_plugin.cpp
+++ b/editor/plugins/line_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "line_2d_editor_plugin.h"
Node2D *Line2DEditor::_get_node() const {
diff --git a/editor/plugins/line_2d_editor_plugin.h b/editor/plugins/line_2d_editor_plugin.h
index 04272064ea..e2e42c2087 100644
--- a/editor/plugins/line_2d_editor_plugin.h
+++ b/editor/plugins/line_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LINE_2D_EDITOR_PLUGIN_H
#define LINE_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/material_editor_plugin.h b/editor/plugins/material_editor_plugin.h
index 11d707d044..80a5c535b8 100644
--- a/editor/plugins/material_editor_plugin.h
+++ b/editor/plugins/material_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATERIAL_EDITOR_PLUGIN_H
#define MATERIAL_EDITOR_PLUGIN_H
diff --git a/editor/plugins/mesh_editor_plugin.cpp b/editor/plugins/mesh_editor_plugin.cpp
index 4c09d3b760..ea8f921034 100644
--- a/editor/plugins/mesh_editor_plugin.cpp
+++ b/editor/plugins/mesh_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh_editor_plugin.h"
void MeshEditor::_gui_input(Ref<InputEvent> p_event) {
diff --git a/editor/plugins/mesh_editor_plugin.h b/editor/plugins/mesh_editor_plugin.h
index b13c6524dc..cc20bfcbf3 100644
--- a/editor/plugins/mesh_editor_plugin.h
+++ b/editor/plugins/mesh_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESH_EDITOR_PLUGIN_H
#define MESH_EDITOR_PLUGIN_H
diff --git a/editor/plugins/mesh_instance_editor_plugin.cpp b/editor/plugins/mesh_instance_editor_plugin.cpp
index 3ad8cef079..cb5f7ba76c 100644
--- a/editor/plugins/mesh_instance_editor_plugin.cpp
+++ b/editor/plugins/mesh_instance_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh_instance_editor_plugin.h"
#include "scene/3d/collision_shape.h"
diff --git a/editor/plugins/mesh_instance_editor_plugin.h b/editor/plugins/mesh_instance_editor_plugin.h
index a1c0d9eab0..30caeae7ec 100644
--- a/editor/plugins/mesh_instance_editor_plugin.h
+++ b/editor/plugins/mesh_instance_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESH_INSTANCE_EDITOR_PLUGIN_H
#define MESH_INSTANCE_EDITOR_PLUGIN_H
diff --git a/editor/plugins/multimesh_editor_plugin.cpp b/editor/plugins/multimesh_editor_plugin.cpp
index 12fe25f4d7..45f8e25959 100644
--- a/editor/plugins/multimesh_editor_plugin.cpp
+++ b/editor/plugins/multimesh_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "multimesh_editor_plugin.h"
#include "scene/3d/mesh_instance.h"
diff --git a/editor/plugins/multimesh_editor_plugin.h b/editor/plugins/multimesh_editor_plugin.h
index 67dd92f3a9..201e735893 100644
--- a/editor/plugins/multimesh_editor_plugin.h
+++ b/editor/plugins/multimesh_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MULTIMESH_EDITOR_PLUGIN_H
#define MULTIMESH_EDITOR_PLUGIN_H
diff --git a/editor/plugins/navigation_mesh_editor_plugin.cpp b/editor/plugins/navigation_mesh_editor_plugin.cpp
index 8c80225db6..da3c744324 100644
--- a/editor/plugins/navigation_mesh_editor_plugin.cpp
+++ b/editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation_mesh_editor_plugin.h"
#include "io/marshalls.h"
#include "io/resource_saver.h"
@@ -107,7 +108,7 @@ NavigationMeshEditor::NavigationMeshEditor() {
button_bake->set_text(TTR("Bake!"));
button_bake->set_toggle_mode(true);
button_reset = memnew(Button);
- button_bake->set_tooltip(TTR("Bake the navigation mesh.\n"));
+ button_bake->set_tooltip(TTR("Bake the navigation mesh.") + "\n");
bake_info = memnew(Label);
bake_hbox->add_child(button_bake);
diff --git a/editor/plugins/navigation_mesh_editor_plugin.h b/editor/plugins/navigation_mesh_editor_plugin.h
index cecaff5648..9382467d85 100644
--- a/editor/plugins/navigation_mesh_editor_plugin.h
+++ b/editor/plugins/navigation_mesh_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_MESH_GENERATOR_PLUGIN_H
#define NAVIGATION_MESH_GENERATOR_PLUGIN_H
diff --git a/editor/plugins/navigation_mesh_generator.cpp b/editor/plugins/navigation_mesh_generator.cpp
index 0bebdf3c90..5d4e5520f4 100644
--- a/editor/plugins/navigation_mesh_generator.cpp
+++ b/editor/plugins/navigation_mesh_generator.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation_mesh_generator.h"
#ifdef RECAST_ENABLED
@@ -137,12 +138,12 @@ void NavigationMeshGenerator::_convert_detail_mesh_to_native_navigation_mesh(con
void NavigationMeshGenerator::_build_recast_navigation_mesh(Ref<NavigationMesh> p_nav_mesh, EditorProgress *ep,
rcHeightfield *hf, rcCompactHeightfield *chf, rcContourSet *cset, rcPolyMesh *poly_mesh, rcPolyMeshDetail *detail_mesh,
- Vector<float> &verticies, Vector<int> &indices) {
+ Vector<float> &vertices, Vector<int> &indices) {
rcContext ctx;
ep->step(TTR("Setting up Configuration..."), 1);
- const float *verts = verticies.ptr();
- const int nverts = verticies.size() / 3;
+ const float *verts = vertices.ptr();
+ const int nverts = vertices.size() / 3;
const int *tris = indices.ptr();
const int ntris = indices.size() / 3;
@@ -264,12 +265,12 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node)
EditorProgress ep("bake", TTR("Navigation Mesh Generator Setup:"), 11);
ep.step(TTR("Parsing Geometry..."), 0);
- Vector<float> verticies;
+ Vector<float> vertices;
Vector<int> indices;
- _parse_geometry(Object::cast_to<Spatial>(p_node)->get_global_transform().affine_inverse(), p_node, verticies, indices);
+ _parse_geometry(Object::cast_to<Spatial>(p_node)->get_global_transform().affine_inverse(), p_node, vertices, indices);
- if (verticies.size() > 0 && indices.size() > 0) {
+ if (vertices.size() > 0 && indices.size() > 0) {
rcHeightfield *hf = NULL;
rcCompactHeightfield *chf = NULL;
@@ -277,7 +278,7 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node)
rcPolyMesh *poly_mesh = NULL;
rcPolyMeshDetail *detail_mesh = NULL;
- _build_recast_navigation_mesh(p_nav_mesh, &ep, hf, chf, cset, poly_mesh, detail_mesh, verticies, indices);
+ _build_recast_navigation_mesh(p_nav_mesh, &ep, hf, chf, cset, poly_mesh, detail_mesh, vertices, indices);
if (hf) {
rcFreeHeightField(hf);
diff --git a/editor/plugins/navigation_mesh_generator.h b/editor/plugins/navigation_mesh_generator.h
index dd0c1df718..d26f541b8d 100644
--- a/editor/plugins/navigation_mesh_generator.h
+++ b/editor/plugins/navigation_mesh_generator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_MESH_GENERATOR_H
#define NAVIGATION_MESH_GENERATOR_H
@@ -53,7 +54,7 @@ protected:
static void _convert_detail_mesh_to_native_navigation_mesh(const rcPolyMeshDetail *p_detail_mesh, Ref<NavigationMesh> p_nav_mesh);
static void _build_recast_navigation_mesh(Ref<NavigationMesh> p_nav_mesh, EditorProgress *ep,
rcHeightfield *hf, rcCompactHeightfield *chf, rcContourSet *cset, rcPolyMesh *poly_mesh,
- rcPolyMeshDetail *detail_mesh, Vector<float> &verticies, Vector<int> &indices);
+ rcPolyMeshDetail *detail_mesh, Vector<float> &vertices, Vector<int> &indices);
public:
static void bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node);
diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp
index 260cb7c45e..d1edf1ae10 100644
--- a/editor/plugins/navigation_polygon_editor_plugin.cpp
+++ b/editor/plugins/navigation_polygon_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation_polygon_editor_plugin.h"
Ref<NavigationPolygon> NavigationPolygonEditor::_ensure_navpoly() const {
diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h
index 4652b63095..738aa9fa41 100644
--- a/editor/plugins/navigation_polygon_editor_plugin.h
+++ b/editor/plugins/navigation_polygon_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATIONPOLYGONEDITORPLUGIN_H
#define NAVIGATIONPOLYGONEDITORPLUGIN_H
diff --git a/editor/plugins/particles_2d_editor_plugin.cpp b/editor/plugins/particles_2d_editor_plugin.cpp
index a76775700b..abee9a9893 100644
--- a/editor/plugins/particles_2d_editor_plugin.cpp
+++ b/editor/plugins/particles_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "particles_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/particles_2d_editor_plugin.h b/editor/plugins/particles_2d_editor_plugin.h
index 86f82db84f..addf65789c 100644
--- a/editor/plugins/particles_2d_editor_plugin.h
+++ b/editor/plugins/particles_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PARTICLES_2D_EDITOR_PLUGIN_H
#define PARTICLES_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/particles_editor_plugin.h b/editor/plugins/particles_editor_plugin.h
index 23fa0d9378..013b6e7e30 100644
--- a/editor/plugins/particles_editor_plugin.h
+++ b/editor/plugins/particles_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PARTICLES_EDITOR_PLUGIN_H
#define PARTICLES_EDITOR_PLUGIN_H
diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp
index d329d547ef..5ec42b07aa 100644
--- a/editor/plugins/path_2d_editor_plugin.cpp
+++ b/editor/plugins/path_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h
index e15ad2f541..c92a696967 100644
--- a/editor/plugins/path_2d_editor_plugin.h
+++ b/editor/plugins/path_2d_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_2D_EDITOR_PLUGIN_H
#define PATH_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/path_editor_plugin.cpp b/editor/plugins/path_editor_plugin.cpp
index 92f5025956..056219a575 100644
--- a/editor/plugins/path_editor_plugin.cpp
+++ b/editor/plugins/path_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_editor_plugin.h"
#include "os/keyboard.h"
diff --git a/editor/plugins/path_editor_plugin.h b/editor/plugins/path_editor_plugin.h
index a61905ffe0..6d5f07f729 100644
--- a/editor/plugins/path_editor_plugin.h
+++ b/editor/plugins/path_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_EDITOR_PLUGIN_H
#define PATH_EDITOR_PLUGIN_H
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp
index 43d4f5df18..1db6621718 100644
--- a/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "polygon_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h
index 3721c98486..f1472e4522 100644
--- a/editor/plugins/polygon_2d_editor_plugin.h
+++ b/editor/plugins/polygon_2d_editor_plugin.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* polygon_2d_editor_plugin.cpp */
+/* polygon_2d_editor_plugin.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POLYGON_2D_EDITOR_PLUGIN_H
#define POLYGON_2D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index 0db002b689..a47cb40240 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_preloader_editor_plugin.h"
#include "editor/editor_settings.h"
diff --git a/editor/plugins/resource_preloader_editor_plugin.h b/editor/plugins/resource_preloader_editor_plugin.h
index f18e7a18ec..6e04c70741 100644
--- a/editor/plugins/resource_preloader_editor_plugin.h
+++ b/editor/plugins/resource_preloader_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_PRELOADER_EDITOR_PLUGIN_H
#define RESOURCE_PRELOADER_EDITOR_PLUGIN_H
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 73fd64f8db..d18422c0c0 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_editor_plugin.h"
#include "core/io/resource_loader.h"
@@ -312,24 +313,22 @@ void ScriptEditor::_goto_script_line2(int p_line) {
void ScriptEditor::_goto_script_line(REF p_script, int p_line) {
- editor->push_item(p_script.ptr());
-
- if (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) {
-
- Ref<Script> script = Object::cast_to<Script>(*p_script);
- if (!script.is_null() && script->get_path().is_resource_file())
- edit(p_script, p_line, 0);
- }
+ Ref<Script> script = Object::cast_to<Script>(*p_script);
+ if (!script.is_null() && script->get_path().is_resource_file()) {
+ if (edit(p_script, p_line, 0)) {
+ editor->push_item(p_script.ptr());
- int selected = tab_container->get_current_tab();
- if (selected < 0 || selected >= tab_container->get_child_count())
- return;
+ int selected = tab_container->get_current_tab();
+ if (selected < 0 || selected >= tab_container->get_child_count())
+ return;
- ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
- if (!current)
- return;
+ ScriptEditorBase *current = Object::cast_to<ScriptEditorBase>(tab_container->get_child(selected));
+ if (!current)
+ return;
- current->goto_line(p_line, true);
+ current->goto_line(p_line, true);
+ }
+ }
}
void ScriptEditor::_update_history_arrows() {
@@ -513,7 +512,6 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) {
if (p_save) {
apply_scripts();
}
- current->clear_edit_menu();
notify_script_close(current->get_edited_script());
} else {
EditorHelp *help = Object::cast_to<EditorHelp>(tab_container->get_child(selected));
@@ -539,6 +537,9 @@ void ScriptEditor::_close_tab(int p_idx, bool p_save) {
}
int idx = tab_container->get_current_tab();
+ if (current) {
+ current->clear_edit_menu();
+ }
memdelete(tselected);
if (idx >= tab_container->get_child_count())
idx = tab_container->get_child_count() - 1;
@@ -635,7 +636,7 @@ void ScriptEditor::_close_all_tabs() {
}
void ScriptEditor::_ask_close_current_unsaved_tab(ScriptEditorBase *current) {
- erase_tab_confirm->set_text(TTR("Close and save changes?\n\"") + current->get_name() + "\"");
+ erase_tab_confirm->set_text(TTR("Close and save changes?") + "\n\"" + current->get_name() + "\"");
erase_tab_confirm->popup_centered_minsize();
}
@@ -1027,6 +1028,15 @@ void ScriptEditor::_menu_option(int p_option) {
case FILE_COPY_PATH: {
_copy_script_path();
} break;
+ case SHOW_IN_FILE_SYSTEM: {
+ ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_child(tab_container->get_current_tab()));
+ Ref<Script> script = se->get_edited_script();
+ FileSystemDock *file_system_dock = EditorNode::get_singleton()->get_filesystem_dock();
+ file_system_dock->navigate_to_path(script->get_path());
+ // Ensure that the FileSystem dock is visible.
+ TabContainer *tab_container = (TabContainer *)file_system_dock->get_parent_control();
+ tab_container->set_current_tab(file_system_dock->get_position_in_parent());
+ } break;
case CLOSE_DOCS: {
_close_docs_tab();
} break;
@@ -1662,10 +1672,14 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool
bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change");
+ const bool should_open = open_dominant || !EditorNode::get_singleton()->is_changing_scene();
+
if (p_script->get_language()->overrides_external_editor()) {
- Error err = p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col);
- if (err != OK)
- ERR_PRINT("Couldn't open script in the overridden external text editor");
+ if (should_open) {
+ Error err = p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col);
+ if (err != OK)
+ ERR_PRINT("Couldn't open script in the overridden external text editor");
+ }
return false;
}
@@ -1716,7 +1730,7 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool
if (se->get_edited_script() == p_script) {
- if (open_dominant || !EditorNode::get_singleton()->is_changing_scene()) {
+ if (should_open) {
if (tab_container->get_current_tab() != i) {
_go_to_tab(i);
script_list->select(script_list->find_metadata(i));
@@ -2164,7 +2178,7 @@ void ScriptEditor::_make_script_list_context_menu() {
context_menu->add_separator();
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/copy_path"), FILE_COPY_PATH);
context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/reload_script_soft"), FILE_TOOL_RELOAD_SOFT);
-
+ context_menu->add_shortcut(ED_GET_SHORTCUT("script_editor/show_in_file_system"), SHOW_IN_FILE_SYSTEM);
Ref<Script> scr = se->get_edited_script();
if (!scr.is_null() && scr->is_tool()) {
context_menu->add_separator();
@@ -2613,6 +2627,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
file_menu->get_popup()->add_separator();
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Script"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_R), FILE_TOOL_RELOAD_SOFT);
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/copy_path", TTR("Copy Script Path")), FILE_COPY_PATH);
+ file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/show_in_file_system", TTR("Show In File System")), SHOW_IN_FILE_SYSTEM);
file_menu->get_popup()->add_separator();
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_previous", TTR("History Prev"), KEY_MASK_ALT | KEY_LEFT), WINDOW_PREV);
diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h
index 3305147442..e60e4cf8c0 100644
--- a/editor/plugins/script_editor_plugin.h
+++ b/editor/plugins/script_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_EDITOR_PLUGIN_H
#define SCRIPT_EDITOR_PLUGIN_H
@@ -137,6 +138,7 @@ class ScriptEditor : public PanelContainer {
CLOSE_ALL,
CLOSE_OTHER_TABS,
TOGGLE_SCRIPTS_PANEL,
+ SHOW_IN_FILE_SYSTEM,
FILE_COPY_PATH,
FILE_TOOL_RELOAD,
FILE_TOOL_RELOAD_SOFT,
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 9ad4bfb037..a3728a1d46 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_text_editor.h"
#include "editor/editor_node.h"
@@ -62,6 +63,7 @@ void ScriptTextEditor::apply_code() {
//print_line("applying code");
script->set_source_code(code_editor->get_text_edit()->get_text());
script->update_exports();
+ _update_member_keywords();
}
Ref<Script> ScriptTextEditor::get_edited_script() const {
@@ -69,6 +71,37 @@ Ref<Script> ScriptTextEditor::get_edited_script() const {
return script;
}
+void ScriptTextEditor::_update_member_keywords() {
+ member_keywords.clear();
+ code_editor->get_text_edit()->clear_member_keywords();
+ Color member_variable_color = EDITOR_GET("text_editor/highlighting/member_variable_color");
+
+ StringName instance_base = script->get_instance_base_type();
+
+ if (instance_base == StringName())
+ return;
+ 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)
+ continue;
+ if (name.find("/") != -1)
+ continue;
+
+ code_editor->get_text_edit()->add_member_keyword(name, member_variable_color);
+ }
+
+ List<String> clist;
+ ClassDB::get_integer_constant_list(instance_base, &clist);
+
+ for (List<String>::Element *E = clist.front(); E; E = E->next()) {
+
+ code_editor->get_text_edit()->add_member_keyword(E->get(), member_variable_color);
+ }
+}
+
void ScriptTextEditor::_load_theme_settings() {
TextEdit *text_edit = code_editor->get_text_edit();
@@ -198,6 +231,7 @@ void ScriptTextEditor::_set_theme_for_script() {
text_edit->add_keyword_color(n, colors_cache.type_color);
}
+ _update_member_keywords();
//colorize comments
List<String> comments;
@@ -562,6 +596,7 @@ void ScriptTextEditor::_validate_script() {
if (!script->is_tool()) {
script->set_source_code(text);
script->update_exports();
+ _update_member_keywords();
//script->reload(); //will update all the variables in property editors
}
@@ -1530,16 +1565,12 @@ ScriptTextEditor::ScriptTextEditor() {
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/indent_right"), EDIT_INDENT_RIGHT);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/delete_line"), EDIT_DELETE_LINE);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_comment"), EDIT_TOGGLE_COMMENT);
- edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/toggle_fold_line"), EDIT_TOGGLE_FOLD_LINE);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/fold_all_lines"), EDIT_FOLD_ALL_LINES);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/unfold_all_lines"), EDIT_UNFOLD_ALL_LINES);
edit_menu->get_popup()->add_separator();
-#ifdef OSX_ENABLED
- edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE);
-#else
+ edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/clone_down"), EDIT_CLONE_DOWN);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/complete_symbol"), EDIT_COMPLETE);
-#endif
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/trim_trailing_whitespace"), EDIT_TRIM_TRAILING_WHITESAPCE);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/convert_indent_to_spaces"), EDIT_CONVERT_INDENT_TO_SPACES);
edit_menu->get_popup()->add_shortcut(ED_GET_SHORTCUT("script_text_editor/convert_indent_to_tabs"), EDIT_CONVERT_INDENT_TO_TABS);
@@ -1610,13 +1641,14 @@ void ScriptTextEditor::register_editor() {
ED_SHORTCUT("script_text_editor/indent_left", TTR("Indent Left"), 0);
ED_SHORTCUT("script_text_editor/indent_right", TTR("Indent Right"), 0);
ED_SHORTCUT("script_text_editor/toggle_comment", TTR("Toggle Comment"), KEY_MASK_CMD | KEY_K);
- ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_CMD | KEY_B);
ED_SHORTCUT("script_text_editor/toggle_fold_line", TTR("Fold/Unfold Line"), KEY_MASK_ALT | KEY_F);
ED_SHORTCUT("script_text_editor/fold_all_lines", TTR("Fold All Lines"), 0);
ED_SHORTCUT("script_text_editor/unfold_all_lines", TTR("Unfold All Lines"), 0);
#ifdef OSX_ENABLED
+ ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_C);
ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CTRL | KEY_SPACE);
#else
+ ED_SHORTCUT("script_text_editor/clone_down", TTR("Clone Down"), KEY_MASK_CMD | KEY_B);
ED_SHORTCUT("script_text_editor/complete_symbol", TTR("Complete Symbol"), KEY_MASK_CMD | KEY_SPACE);
#endif
ED_SHORTCUT("script_text_editor/trim_trailing_whitespace", TTR("Trim Trailing Whitespace"), KEY_MASK_CTRL | KEY_MASK_ALT | KEY_T);
diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h
index 86b829495d..22e8fbce25 100644
--- a/editor/plugins/script_text_editor.h
+++ b/editor/plugins/script_text_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_TEXT_EDITOR_H
#define SCRIPT_TEXT_EDITOR_H
@@ -43,6 +44,8 @@ class ScriptTextEditor : public ScriptEditorBase {
Vector<String> functions;
+ Vector<String> member_keywords;
+
HBoxContainer *edit_hb;
MenuButton *edit_menu;
@@ -57,6 +60,8 @@ class ScriptTextEditor : public ScriptEditorBase {
int color_line;
String color_args;
+ void _update_member_keywords();
+
struct ColorsCache {
Color symbol_color;
Color keyword_color;
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index 4f2fbca862..9b31e1a421 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_editor_plugin.h"
#include "core/io/resource_loader.h"
diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h
index a446fc4134..2ea1562310 100644
--- a/editor/plugins/shader_editor_plugin.h
+++ b/editor/plugins/shader_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_EDITOR_PLUGIN_H
#define SHADER_EDITOR_PLUGIN_H
diff --git a/editor/plugins/shader_graph_editor_plugin.h b/editor/plugins/shader_graph_editor_plugin.h
index 98a9365727..f273507fcf 100644
--- a/editor/plugins/shader_graph_editor_plugin.h
+++ b/editor/plugins/shader_graph_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_GRAPH_EDITOR_PLUGIN_H
#define SHADER_GRAPH_EDITOR_PLUGIN_H
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index f6aef52e8b..bd2cdf0dda 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "spatial_editor_plugin.h"
#include "camera_matrix.h"
@@ -1588,7 +1589,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
float snap = spatial_editor->get_rotate_snap();
if (snap) {
- angle = Math::rad2deg(angle) + snap * 0.5; //else it wont reach +180
+ angle = Math::rad2deg(angle) + snap * 0.5; //else it won't reach +180
angle -= Math::fmod(angle, snap);
set_message(vformat(TTR("Rotating %s degrees."), rtos(angle)));
angle = Math::deg2rad(angle);
@@ -2016,6 +2017,20 @@ Point2i SpatialEditorViewport::_get_warped_mouse_motion(const Ref<InputEventMous
return relative;
}
+static bool is_shortcut_pressed(const String &p_path) {
+ Ref<ShortCut> shortcut = ED_GET_SHORTCUT(p_path);
+ if (shortcut.is_null()) {
+ return false;
+ }
+ InputEventKey *k = Object::cast_to<InputEventKey>(shortcut->get_shortcut().ptr());
+ if (k == NULL) {
+ return false;
+ }
+ const Input &input = *Input::get_singleton();
+ int scancode = k->get_scancode();
+ return input.is_key_pressed(scancode);
+}
+
void SpatialEditorViewport::_update_freelook(real_t delta) {
if (!is_freelook_active()) {
@@ -2026,38 +2041,28 @@ void SpatialEditorViewport::_update_freelook(real_t delta) {
Vector3 right = camera->get_transform().basis.xform(Vector3(1, 0, 0));
Vector3 up = camera->get_transform().basis.xform(Vector3(0, 1, 0));
- int key_left = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_left")->get_shortcut().ptr())->get_scancode();
- int key_right = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_right")->get_shortcut().ptr())->get_scancode();
- int key_forward = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_forward")->get_shortcut().ptr())->get_scancode();
- int key_backwards = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_backwards")->get_shortcut().ptr())->get_scancode();
- int key_up = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_up")->get_shortcut().ptr())->get_scancode();
- int key_down = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_down")->get_shortcut().ptr())->get_scancode();
- int key_speed_modifier = Object::cast_to<InputEventKey>(ED_GET_SHORTCUT("spatial_editor/freelook_speed_modifier")->get_shortcut().ptr())->get_scancode();
-
Vector3 direction;
bool speed_modifier = false;
- const Input &input = *Input::get_singleton();
-
- if (input.is_key_pressed(key_left)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_left")) {
direction -= right;
}
- if (input.is_key_pressed(key_right)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_right")) {
direction += right;
}
- if (input.is_key_pressed(key_forward)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_forward")) {
direction += forward;
}
- if (input.is_key_pressed(key_backwards)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_backwards")) {
direction -= forward;
}
- if (input.is_key_pressed(key_up)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_up")) {
direction += up;
}
- if (input.is_key_pressed(key_down)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_down")) {
direction -= up;
}
- if (input.is_key_pressed(key_speed_modifier)) {
+ if (is_shortcut_pressed("spatial_editor/freelook_speed_modifier")) {
speed_modifier = true;
}
@@ -2688,7 +2693,7 @@ void SpatialEditorViewport::_toggle_camera_preview(bool p_activate) {
if (!p_activate) {
- previewing->disconnect("tree_exited", this, "_preview_exited_scene");
+ previewing->disconnect("tree_exiting", this, "_preview_exited_scene");
previewing = NULL;
VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), camera->get_camera()); //restore
if (!preview)
@@ -2699,7 +2704,7 @@ void SpatialEditorViewport::_toggle_camera_preview(bool p_activate) {
} else {
previewing = preview;
- previewing->connect("tree_exited", this, "_preview_exited_scene");
+ previewing->connect("tree_exiting", this, "_preview_exited_scene");
VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), preview->get_camera()); //replace
view_menu->hide();
surface->update();
@@ -2850,7 +2855,7 @@ void SpatialEditorViewport::set_state(const Dictionary &p_state) {
Node *pv = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["previewing"]);
if (Object::cast_to<Camera>(pv)) {
previewing = Object::cast_to<Camera>(pv);
- previewing->connect("tree_exited", this, "_preview_exited_scene");
+ previewing->connect("tree_exiting", this, "_preview_exited_scene");
VS::get_singleton()->viewport_attach_camera(viewport->get_viewport_rid(), previewing->get_camera()); //replace
view_menu->hide();
surface->update();
@@ -3822,9 +3827,6 @@ Object *SpatialEditor::_get_editor_data(Object *p_what) {
si->sbox_instance = VisualServer::get_singleton()->instance_create2(selection_box->get_rid(), sp->get_world()->get_scenario());
VS::get_singleton()->instance_geometry_set_cast_shadows_setting(si->sbox_instance, VS::SHADOW_CASTING_SETTING_OFF);
- if (Engine::get_singleton()->is_editor_hint())
- editor->call("edit_node", sp);
-
return si;
}
@@ -3914,7 +3916,7 @@ void SpatialEditor::set_state(const Dictionary &p_state) {
if (d.has("snap_enabled")) {
snap_enabled = d["snap_enabled"];
- tool_option_button[TOOL_OPT_LOCAL_COORDS]->set_pressed(d["snap_enabled"]);
+ tool_option_button[TOOL_OPT_USE_SNAP]->set_pressed(d["snap_enabled"]);
}
if (d.has("translate_snap"))
@@ -4947,7 +4949,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
tool_button[TOOL_MODE_SELECT]->set_pressed(true);
button_binds[0] = MENU_TOOL_SELECT;
tool_button[TOOL_MODE_SELECT]->connect("pressed", this, "_menu_item_pressed", button_binds);
- tool_button[TOOL_MODE_SELECT]->set_tooltip(TTR("Select Mode (Q)\n") + keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection"));
+ tool_button[TOOL_MODE_SELECT]->set_tooltip(TTR("Select Mode (Q)") + "\n" + keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection"));
tool_button[TOOL_MODE_MOVE] = memnew(ToolButton);
hbc_menu->add_child(tool_button[TOOL_MODE_MOVE]);
diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h
index b1d4a03893..e12f7affb7 100644
--- a/editor/plugins/spatial_editor_plugin.h
+++ b/editor/plugins/spatial_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPATIAL_EDITOR_PLUGIN_H
#define SPATIAL_EDITOR_PLUGIN_H
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 35fc987e10..7a4eee0344 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sprite_frames_editor_plugin.h"
#include "editor/editor_settings.h"
diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h
index f94eb6f98c..1f45b10323 100644
--- a/editor/plugins/sprite_frames_editor_plugin.h
+++ b/editor/plugins/sprite_frames_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPRITE_FRAMES_EDITOR_PLUGIN_H
#define SPRITE_FRAMES_EDITOR_PLUGIN_H
diff --git a/editor/plugins/style_box_editor_plugin.cpp b/editor/plugins/style_box_editor_plugin.cpp
index a0c7eb178a..f4faab69ed 100644
--- a/editor/plugins/style_box_editor_plugin.cpp
+++ b/editor/plugins/style_box_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "style_box_editor_plugin.h"
void StyleBoxEditor::edit(const Ref<StyleBox> &p_stylebox) {
diff --git a/editor/plugins/style_box_editor_plugin.h b/editor/plugins/style_box_editor_plugin.h
index 7a8e5aa99b..34d8caaeb6 100644
--- a/editor/plugins/style_box_editor_plugin.h
+++ b/editor/plugins/style_box_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STYLE_BOX_EDITOR_PLUGIN_H
#define STYLE_BOX_EDITOR_PLUGIN_H
diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp
index 572e2f9d83..36a578037e 100644
--- a/editor/plugins/texture_editor_plugin.cpp
+++ b/editor/plugins/texture_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_editor_plugin.h"
#include "editor/editor_settings.h"
diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h
index 590dd6d9aa..4ca2bc641e 100644
--- a/editor/plugins/texture_editor_plugin.h
+++ b/editor/plugins/texture_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_EDITOR_PLUGIN_H
#define TEXTURE_EDITOR_PLUGIN_H
diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp
index 861af05c61..e04798d6d6 100644
--- a/editor/plugins/texture_region_editor_plugin.cpp
+++ b/editor/plugins/texture_region_editor_plugin.cpp
@@ -8,8 +8,6 @@
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
-/* Author: Mariano Suligoy */
-/* */
/* 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 */
@@ -29,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_region_editor_plugin.h"
#include "core/core_string_names.h"
@@ -36,6 +35,10 @@
#include "os/keyboard.h"
#include "scene/gui/check_box.h"
+/**
+ @author Mariano Suligoy
+*/
+
void draw_margin_line(Control *edit_draw, Vector2 from, Vector2 to) {
Vector2 line = (to - from).normalized() * 10;
while ((to - from).length_squared() > 200) {
diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h
index b84480d3d6..cf9396bd5b 100644
--- a/editor/plugins/texture_region_editor_plugin.h
+++ b/editor/plugins/texture_region_editor_plugin.h
@@ -8,8 +8,6 @@
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
-/* Author: Mariano Suligoy */
-/* */
/* 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 */
@@ -41,6 +39,10 @@
#include "scene/resources/style_box.h"
#include "scene/resources/texture.h"
+/**
+ @author Mariano Suligoy
+*/
+
class TextureRegionEditor : public Control {
GDCLASS(TextureRegionEditor, Control);
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index 5f1944fe74..f51e691be3 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "theme_editor_plugin.h"
#include "os/file_access.h"
diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h
index 6484fb948d..625b35e2c1 100644
--- a/editor/plugins/theme_editor_plugin.h
+++ b/editor/plugins/theme_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THEME_EDITOR_PLUGIN_H
#define THEME_EDITOR_PLUGIN_H
diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp
index acaf2ebcd3..a102d99d1c 100644
--- a/editor/plugins/tile_map_editor_plugin.cpp
+++ b/editor/plugins/tile_map_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tile_map_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h
index 6388cfb3cc..0a937e200e 100644
--- a/editor/plugins/tile_map_editor_plugin.h
+++ b/editor/plugins/tile_map_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TILE_MAP_EDITOR_PLUGIN_H
#define TILE_MAP_EDITOR_PLUGIN_H
diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp
index da507db5da..dd5127181d 100644
--- a/editor/plugins/tile_set_editor_plugin.cpp
+++ b/editor/plugins/tile_set_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tile_set_editor_plugin.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
@@ -238,19 +239,16 @@ void TileSetEditor::_bind_methods() {
TileSetEditor::TileSetEditor(EditorNode *p_editor) {
- Panel *panel = memnew(Panel);
- panel->set_anchors_and_margins_preset(Control::PRESET_WIDE);
- add_child(panel);
- MenuButton *options = memnew(MenuButton);
- panel->add_child(options);
- options->set_position(Point2(1, 1));
- options->set_text(TTR("Tile Set"));
- options->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM);
- options->get_popup()->add_item(TTR("Remove Item"), MENU_OPTION_REMOVE_ITEM);
- options->get_popup()->add_separator();
- options->get_popup()->add_item(TTR("Create from Scene"), MENU_OPTION_CREATE_FROM_SCENE);
- options->get_popup()->add_item(TTR("Merge from Scene"), MENU_OPTION_MERGE_FROM_SCENE);
- options->get_popup()->connect("id_pressed", this, "_menu_cbk");
+ menu = memnew(MenuButton);
+ CanvasItemEditor::get_singleton()->add_control_to_menu_panel(menu);
+ menu->hide();
+ menu->set_text(TTR("Tile Set"));
+ menu->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM);
+ menu->get_popup()->add_item(TTR("Remove Item"), MENU_OPTION_REMOVE_ITEM);
+ menu->get_popup()->add_separator();
+ menu->get_popup()->add_item(TTR("Create from Scene"), MENU_OPTION_CREATE_FROM_SCENE);
+ menu->get_popup()->add_item(TTR("Merge from Scene"), MENU_OPTION_MERGE_FROM_SCENE);
+ menu->get_popup()->connect("id_pressed", this, "_menu_cbk");
editor = p_editor;
cd = memnew(ConfirmationDialog);
add_child(cd);
@@ -286,6 +284,7 @@ void TileSetEditorPlugin::make_visible(bool p_visible) {
if (p_visible) {
tileset_editor->show();
+ tileset_editor->menu->show();
autotile_button->show();
autotile_editor->side_panel->show();
if (autotile_button->is_pressed()) {
@@ -293,6 +292,7 @@ void TileSetEditorPlugin::make_visible(bool p_visible) {
}
} else {
tileset_editor->hide();
+ tileset_editor->menu->hide();
autotile_editor->side_panel->hide();
autotile_editor->hide();
autotile_button->hide();
@@ -304,8 +304,7 @@ TileSetEditorPlugin::TileSetEditorPlugin(EditorNode *p_node) {
tileset_editor = memnew(TileSetEditor(p_node));
add_control_to_container(CONTAINER_CANVAS_EDITOR_MENU, tileset_editor);
- tileset_editor->set_anchors_and_margins_preset(Control::PRESET_WIDE);
- tileset_editor->set_anchor(MARGIN_BOTTOM, Control::ANCHOR_BEGIN);
+ tileset_editor->set_anchors_and_margins_preset(Control::PRESET_TOP_WIDE);
tileset_editor->set_end(Point2(0, 22));
tileset_editor->hide();
@@ -333,19 +332,20 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) {
autotile_list = memnew(ItemList);
autotile_list->set_v_size_flags(SIZE_EXPAND_FILL);
autotile_list->set_h_size_flags(SIZE_EXPAND_FILL);
- autotile_list->set_custom_minimum_size(Size2(02, 200));
+ autotile_list->set_custom_minimum_size(Size2(10, 200));
autotile_list->connect("item_selected", this, "_on_autotile_selected");
split->add_child(autotile_list);
property_editor = memnew(PropertyEditor);
property_editor->set_v_size_flags(SIZE_EXPAND_FILL);
property_editor->set_h_size_flags(SIZE_EXPAND_FILL);
+ property_editor->set_custom_minimum_size(Size2(10, 70));
split->add_child(property_editor);
helper = memnew(AutotileEditorHelper(this));
- property_editor->edit(helper);
+ property_editor->call_deferred("edit", helper);
- // Editor
+ //Editor
dragging_point = -1;
creating_shape = false;
@@ -420,9 +420,7 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) {
p.push_back((int)SHAPE_DELETE);
tools[SHAPE_DELETE]->connect("pressed", this, "_on_tool_clicked", p);
tool_containers[TOOLBAR_SHAPE]->add_child(tools[SHAPE_DELETE]);
- //tools[SHAPE_CREATE_FROM_NOT_BITMASKED] = memnew(ToolButton);
- //tool_containers[TOOLBAR_SHAPE]->add_child(tools[SHAPE_CREATE_FROM_NOT_BITMASKED]);
- tool_containers[TOOLBAR_SHAPE]->add_change_receptor(memnew(VSeparator));
+ tool_containers[TOOLBAR_SHAPE]->add_child(memnew(VSeparator));
tools[SHAPE_KEEP_INSIDE_TILE] = memnew(ToolButton);
tools[SHAPE_KEEP_INSIDE_TILE]->set_toggle_mode(true);
tools[SHAPE_KEEP_INSIDE_TILE]->set_pressed(true);
@@ -531,7 +529,7 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) {
main_vb->add_child(toolbar);
- ScrollContainer *scroll = memnew(ScrollContainer);
+ scroll = memnew(ScrollContainer);
main_vb->add_child(scroll);
scroll->set_v_size_flags(SIZE_EXPAND_FILL);
@@ -550,6 +548,10 @@ AutotileEditor::AutotileEditor(EditorNode *p_editor) {
preview->set_region(true);
}
+AutotileEditor::~AutotileEditor() {
+ memdelete(helper);
+}
+
void AutotileEditor::_bind_methods() {
ClassDB::bind_method("_on_autotile_selected", &AutotileEditor::_on_autotile_selected);
@@ -584,6 +586,14 @@ void AutotileEditor::_notification(int p_what) {
}
}
+void AutotileEditor::_changed_callback(Object *p_changed, const char *p_prop) {
+ if (p_prop == StringName("texture") || p_prop == StringName("is_autotile")) {
+ edit(tile_set.ptr());
+ autotile_list->update();
+ workspace->update();
+ }
+}
+
void AutotileEditor::_on_autotile_selected(int p_index) {
if (get_current_tile() >= 0) {
@@ -620,6 +630,9 @@ void AutotileEditor::_on_edit_mode_changed(int p_edit_mode) {
tool_containers[TOOLBAR_SHAPE]->show();
tools[TOOL_SELECT]->set_tooltip(TTR("Select current edited sub-tile."));
spin_priority->hide();
+
+ current_shape = PoolVector2Array();
+ select_coord(edited_shape_coord);
} break;
default: {
tool_containers[TOOLBAR_DUMMY]->show();
@@ -629,7 +642,7 @@ void AutotileEditor::_on_edit_mode_changed(int p_edit_mode) {
tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to use as icon, this will be also used on invalid autotile bindings."));
spin_priority->hide();
} else {
- tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change it's priority."));
+ tools[TOOL_SELECT]->set_tooltip(TTR("Select sub-tile to change its priority."));
spin_priority->show();
}
} break;
@@ -931,50 +944,18 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
edited_shape_coord = coord;
edited_occlusion_shape = tile_set->autotile_get_light_occluder(get_current_tile(), edited_shape_coord);
edited_navigation_shape = tile_set->autotile_get_navigation_polygon(get_current_tile(), edited_shape_coord);
- shape_anchor = edited_shape_coord;
- shape_anchor.x *= (size.x + spacing);
- shape_anchor.y *= (size.y + spacing);
- if (edit_mode == EDITMODE_OCCLUSION) {
- current_shape.resize(0);
- if (edited_occlusion_shape.is_valid()) {
- for (int i = 0; i < edited_occlusion_shape->get_polygon().size(); i++) {
- current_shape.push_back(edited_occlusion_shape->get_polygon()[i] + shape_anchor);
- }
- }
- } else if (edit_mode == EDITMODE_NAVIGATION) {
- current_shape.resize(0);
- if (edited_navigation_shape.is_valid()) {
- if (edited_navigation_shape->get_polygon_count() > 0) {
- PoolVector<Vector2> vertices = edited_navigation_shape->get_vertices();
- for (int i = 0; i < edited_navigation_shape->get_polygon(0).size(); i++) {
- current_shape.push_back(vertices[edited_navigation_shape->get_polygon(0)[i]] + shape_anchor);
- }
- }
- }
- }
- } else {
- if (edit_mode == EDITMODE_COLLISION) {
- Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(get_current_tile());
- for (int i = 0; i < sd.size(); i++) {
- if (sd[i].autotile_coord == coord) {
- Ref<ConvexPolygonShape2D> shape = sd[i].shape;
- if (shape.is_valid()) {
-
- Rect2 bounding_rect;
- PoolVector2Array polygon;
- bounding_rect.position = shape->get_points()[0];
- for (int j = 0; j < shape->get_points().size(); j++) {
- polygon.push_back(shape->get_points()[j] + shape_anchor);
- bounding_rect.expand_to(shape->get_points()[j] + shape_anchor);
- }
- if (bounding_rect.has_point(mb->get_position())) {
- current_shape = polygon;
- edited_collision_shape = shape;
- }
- }
- }
+ Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(get_current_tile());
+ bool found_collision_shape = false;
+ for (int i = 0; i < sd.size(); i++) {
+ if (sd[i].autotile_coord == coord) {
+ edited_collision_shape = sd[i].shape;
+ found_collision_shape = true;
+ break;
}
}
+ if (!found_collision_shape)
+ edited_collision_shape = Ref<ConvexPolygonShape2D>(NULL);
+ select_coord(edited_shape_coord);
}
workspace->update();
} else if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) {
@@ -1061,20 +1042,43 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
} else {
int t_id = get_current_tile();
if (t_id >= 0) {
- Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(t_id);
- for (int i = 0; i < sd.size(); i++) {
- if (sd[i].autotile_coord == edited_shape_coord) {
- Ref<ConvexPolygonShape2D> shape = sd[i].shape;
-
- if (!shape.is_null()) {
- sd.remove(i);
- tile_set->tile_set_shapes(get_current_tile(), sd);
- edited_collision_shape = Ref<Shape2D>();
- current_shape.resize(0);
- workspace->update();
+ if (edit_mode == EDITMODE_COLLISION) {
+ Vector<TileSet::ShapeData> sd = tile_set->tile_get_shapes(t_id);
+ for (int i = 0; i < sd.size(); i++) {
+ if (sd[i].autotile_coord == edited_shape_coord) {
+ Ref<ConvexPolygonShape2D> shape = sd[i].shape;
+
+ if (!shape.is_null()) {
+ sd.remove(i);
+ tile_set->tile_set_shapes(get_current_tile(), sd);
+ edited_collision_shape = Ref<Shape2D>();
+ workspace->update();
+ }
+ break;
+ }
+ }
+ } else if (edit_mode == EDITMODE_OCCLUSION) {
+ Map<Vector2, Ref<OccluderPolygon2D> > map = tile_set->autotile_get_light_oclusion_map(t_id);
+ for (Map<Vector2, Ref<OccluderPolygon2D> >::Element *E = map.front(); E; E = E->next()) {
+ if (E->key() == edited_shape_coord) {
+ tile_set->autotile_set_light_occluder(get_current_tile(), Ref<OccluderPolygon2D>(), edited_shape_coord);
+ break;
+ }
+ }
+
+ edited_occlusion_shape = Ref<OccluderPolygon2D>();
+ workspace->update();
+ } else if (edit_mode == EDITMODE_NAVIGATION) {
+ Map<Vector2, Ref<NavigationPolygon> > map = tile_set->autotile_get_navigation_map(t_id);
+ for (Map<Vector2, Ref<NavigationPolygon> >::Element *E = map.front(); E; E = E->next()) {
+ if (E->key() == edited_shape_coord) {
+ tile_set->autotile_set_navigation_polygon(t_id, Ref<NavigationPolygon>(), edited_shape_coord);
+ break;
}
- break;
}
+
+ edited_navigation_shape = Ref<NavigationPolygon>();
+ workspace->update();
}
}
@@ -1095,6 +1099,16 @@ void AutotileEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) {
}
} break;
}
+
+ //Drag Middle Mouse
+ if (mm.is_valid()) {
+ if (mm->get_button_mask() & BUTTON_MASK_MIDDLE) {
+
+ Vector2 dragged(mm->get_relative().x, mm->get_relative().y);
+ scroll->set_h_scroll(scroll->get_h_scroll() - dragged.x * workspace->get_scale().x);
+ scroll->set_v_scroll(scroll->get_v_scroll() - dragged.y * workspace->get_scale().x);
+ }
+ }
}
}
@@ -1225,14 +1239,14 @@ void AutotileEditor::draw_highlight_tile(Vector2 coord, const Vector<Vector2> &o
workspace->draw_rect(Rect2(0, coord.y, coord.x, size.y), Color(0.5, 0.5, 0.5, 0.5));
workspace->draw_rect(Rect2(coord.x + size.x, coord.y, region.size.x - coord.x - size.x, size.y), Color(0.5, 0.5, 0.5, 0.5));
workspace->draw_rect(Rect2(0, coord.y + size.y, region.size.x, region.size.y - size.y - coord.y), Color(0.5, 0.5, 0.5, 0.5));
- coord += Vector2(1, 1);
- workspace->draw_rect(Rect2(coord, size - Vector2(2, 2)), Color(1, 0, 0), false);
+ coord += Vector2(1, 1) / workspace->get_scale().x;
+ workspace->draw_rect(Rect2(coord, size - Vector2(2, 2) / workspace->get_scale().x), Color(1, 0, 0), false);
for (int i = 0; i < other_highlighted.size(); i++) {
coord = other_highlighted[i];
coord.x *= (size.x + spacing);
coord.y *= (size.y + spacing);
- coord += Vector2(1, 1);
- workspace->draw_rect(Rect2(coord, size - Vector2(2, 2)), Color(1, 0, 0), false);
+ coord += Vector2(1, 1) / workspace->get_scale().x;
+ workspace->draw_rect(Rect2(coord, size - Vector2(2, 2) / workspace->get_scale().x), Color(1, 0, 0), false);
}
}
@@ -1241,8 +1255,6 @@ void AutotileEditor::draw_grid_snap() {
Color grid_color = Color(0.39, 0, 1, 0.2f);
Size2 s = workspace->get_size();
- Vector2 size = tile_set->autotile_get_size(get_current_tile());
-
int width_count = (int)(s.width / (snap_step.x + snap_separation.x));
int height_count = (int)(s.height / (snap_step.y + snap_separation.y));
@@ -1308,7 +1320,7 @@ void AutotileEditor::draw_polygon_shapes() {
}
Vector<Vector2> polygon;
Vector<Color> colors;
- if (shape == edited_collision_shape) {
+ if (shape == edited_collision_shape && current_shape.size() > 2) {
for (int j = 0; j < current_shape.size(); j++) {
polygon.push_back(current_shape[j]);
colors.push_back(c_bg);
@@ -1358,7 +1370,7 @@ void AutotileEditor::draw_polygon_shapes() {
}
Vector<Vector2> polygon;
Vector<Color> colors;
- if (shape == edited_occlusion_shape) {
+ if (shape == edited_occlusion_shape && current_shape.size() > 2) {
for (int j = 0; j < current_shape.size(); j++) {
polygon.push_back(current_shape[j]);
colors.push_back(c_bg);
@@ -1406,7 +1418,7 @@ void AutotileEditor::draw_polygon_shapes() {
}
Vector<Vector2> polygon;
Vector<Color> colors;
- if (shape == edited_navigation_shape) {
+ if (shape == edited_navigation_shape && current_shape.size() > 2) {
for (int j = 0; j < current_shape.size(); j++) {
polygon.push_back(current_shape[j]);
colors.push_back(c_bg);
@@ -1453,11 +1465,20 @@ void AutotileEditor::close_shape(const Vector2 &shape_anchor) {
Ref<ConvexPolygonShape2D> shape = memnew(ConvexPolygonShape2D);
Vector<Vector2> segments;
+ float p_total = 0;
for (int i = 0; i < current_shape.size(); i++) {
segments.push_back(current_shape[i] - shape_anchor);
+
+ if (i != current_shape.size() - 1)
+ p_total += ((current_shape[i + 1].x - current_shape[i].x) * (-current_shape[i + 1].y + (-current_shape[i].y)));
+ else
+ p_total += ((current_shape[0].x - current_shape[i].x) * (-current_shape[0].y + (-current_shape[i].y)));
}
+ if (p_total < 0)
+ segments.invert();
+
shape->set_points(segments);
tile_set->tile_add_shape(get_current_tile(), shape, Transform2D(), false, edited_shape_coord);
@@ -1507,6 +1528,39 @@ void AutotileEditor::close_shape(const Vector2 &shape_anchor) {
}
}
+void AutotileEditor::select_coord(const Vector2 &coord) {
+ int spacing = tile_set->autotile_get_spacing(get_current_tile());
+ Vector2 size = tile_set->autotile_get_size(get_current_tile());
+ Vector2 shape_anchor = coord;
+ shape_anchor.x *= (size.x + spacing);
+ shape_anchor.y *= (size.y + spacing);
+ if (edit_mode == EDITMODE_COLLISION) {
+ current_shape.resize(0);
+ if (edited_collision_shape.is_valid()) {
+ for (int j = 0; j < edited_collision_shape->get_points().size(); j++) {
+ current_shape.push_back(edited_collision_shape->get_points()[j] + shape_anchor);
+ }
+ }
+ } else if (edit_mode == EDITMODE_OCCLUSION) {
+ current_shape.resize(0);
+ if (edited_occlusion_shape.is_valid()) {
+ for (int i = 0; i < edited_occlusion_shape->get_polygon().size(); i++) {
+ current_shape.push_back(edited_occlusion_shape->get_polygon()[i] + shape_anchor);
+ }
+ }
+ } else if (edit_mode == EDITMODE_NAVIGATION) {
+ current_shape.resize(0);
+ if (edited_navigation_shape.is_valid()) {
+ if (edited_navigation_shape->get_polygon_count() > 0) {
+ PoolVector<Vector2> vertices = edited_navigation_shape->get_vertices();
+ for (int i = 0; i < edited_navigation_shape->get_polygon(0).size(); i++) {
+ current_shape.push_back(vertices[edited_navigation_shape->get_polygon(0)[i]] + shape_anchor);
+ }
+ }
+ }
+ }
+}
+
Vector2 AutotileEditor::snap_point(const Vector2 &point) {
Vector2 p = point;
Vector2 coord = edited_shape_coord;
@@ -1536,6 +1590,7 @@ Vector2 AutotileEditor::snap_point(const Vector2 &point) {
void AutotileEditor::edit(Object *p_node) {
tile_set = Ref<TileSet>(Object::cast_to<TileSet>(p_node));
+ tile_set->add_change_receptor(this);
helper->set_tileset(tile_set);
autotile_list->clear();
diff --git a/editor/plugins/tile_set_editor_plugin.h b/editor/plugins/tile_set_editor_plugin.h
index 7d9558d4e7..30f6e2b925 100644
--- a/editor/plugins/tile_set_editor_plugin.h
+++ b/editor/plugins/tile_set_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TILE_SET_EDITOR_PLUGIN_H
#define TILE_SET_EDITOR_PLUGIN_H
@@ -86,6 +87,7 @@ class AutotileEditor : public Control {
int current_item_index;
Sprite *preview;
+ ScrollContainer *scroll;
Control *workspace_container;
Control *workspace;
Button *tool_editmode[EDITMODE_MAX];
@@ -118,10 +120,12 @@ class AutotileEditor : public Control {
AutotileEditorHelper *helper;
AutotileEditor(EditorNode *p_editor);
+ ~AutotileEditor();
protected:
static void _bind_methods();
void _notification(int p_what);
+ virtual void _changed_callback(Object *p_changed, const char *p_prop);
private:
void _on_autotile_selected(int p_index);
@@ -142,6 +146,7 @@ private:
void draw_grid_snap();
void draw_polygon_shapes();
void close_shape(const Vector2 &shape_anchor);
+ void select_coord(const Vector2 &coord);
Vector2 snap_point(const Vector2 &point);
void edit(Object *p_node);
diff --git a/editor/progress_dialog.cpp b/editor/progress_dialog.cpp
index 70866df8ec..f735ef97db 100644
--- a/editor/progress_dialog.cpp
+++ b/editor/progress_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "progress_dialog.h"
#include "editor_scale.h"
@@ -199,7 +200,7 @@ bool ProgressDialog::task_step(const String &p_task, const String &p_state, int
if (!p_force_redraw) {
uint64_t tus = OS::get_singleton()->get_ticks_usec();
- if (tus - last_progress_tick < 50000) //50ms
+ if (tus - last_progress_tick < 200000) //200ms
return cancelled;
}
diff --git a/editor/progress_dialog.h b/editor/progress_dialog.h
index a914606e6d..bf0b3cca1c 100644
--- a/editor/progress_dialog.h
+++ b/editor/progress_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROGRESS_DIALOG_H
#define PROGRESS_DIALOG_H
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index dfcd3da42a..d15a37a19c 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "project_export.h"
#include "compressed_translation.h"
#include "editor_data.h"
diff --git a/editor/project_export.h b/editor/project_export.h
index d793e21f45..6c74743769 100644
--- a/editor/project_export.h
+++ b/editor/project_export.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROJECT_EXPORT_SETTINGS_H
#define PROJECT_EXPORT_SETTINGS_H
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 233e07c4c7..da283b16dc 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "project_manager.h"
#include "editor_initialize_ssl.h"
@@ -79,7 +80,7 @@ private:
Label *msg;
LineEdit *project_path;
LineEdit *project_name;
- ToolButton *status_btn;
+ TextureRect *status_rect;
FileDialog *fdialog;
String zip_path;
String zip_title;
@@ -89,33 +90,43 @@ private:
String created_folder_path;
void set_message(const String &p_msg, MessageType p_type = MESSAGE_SUCCESS) {
+
msg->set_text(p_msg);
- if (p_msg == "") {
- status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons"));
- return;
- }
- msg->hide();
+ Ref<Texture> current_icon = status_rect->get_texture();
+ Ref<Texture> new_icon;
+
switch (p_type) {
- case MESSAGE_ERROR:
+
+ case MESSAGE_ERROR: {
+
msg->add_color_override("font_color", get_color("error_color", "Editor"));
- status_btn->set_icon(get_icon("StatusError", "EditorIcons"));
- msg->show();
- break;
- case MESSAGE_WARNING:
+ msg->set_modulate(Color(1, 1, 1, 1));
+ new_icon = get_icon("StatusError", "EditorIcons");
+
+ } break;
+ case MESSAGE_WARNING: {
+
msg->add_color_override("font_color", get_color("warning_color", "Editor"));
- status_btn->set_icon(get_icon("StatusWarning", "EditorIcons"));
- break;
- case MESSAGE_SUCCESS:
- msg->add_color_override("font_color", get_color("success_color", "Editor"));
- status_btn->set_icon(get_icon("StatusSuccess", "EditorIcons"));
- break;
+ msg->set_modulate(Color(1, 1, 1, 1));
+ new_icon = get_icon("StatusWarning", "EditorIcons");
+
+ } break;
+ case MESSAGE_SUCCESS: {
+
+ msg->set_modulate(Color(1, 1, 1, 0));
+ new_icon = get_icon("StatusSuccess", "EditorIcons");
+
+ } break;
}
+
+ if (current_icon != new_icon)
+ status_rect->set_texture(new_icon);
+
+ set_size(Size2(500, 0) * EDSCALE);
}
String _test_path() {
- set_message(" ");
- get_ok()->set_disabled(true);
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
String valid_path;
if (d->change_dir(project_path->get_text()) == OK) {
@@ -127,6 +138,7 @@ private:
if (valid_path == "") {
set_message(TTR("The path does not exist."), MESSAGE_ERROR);
memdelete(d);
+ get_ok()->set_disabled(true);
return "";
}
@@ -136,17 +148,18 @@ private:
set_message(TTR("Please choose a 'project.godot' file."), MESSAGE_ERROR);
memdelete(d);
+ get_ok()->set_disabled(true);
return "";
}
- } else if (mode == MODE_NEW) {
+ } else {
// check if the specified folder is empty, even though this is not an error, it is good to check here
d->list_dir_begin();
bool is_empty = true;
String n = d->get_next();
while (n != String()) {
- if (!n.begins_with(".")) { // i dont know if this is enough to guarantee an empty dir
+ if (!n.begins_with(".")) { // i don't know if this is enough to guarantee an empty dir
is_empty = false;
break;
}
@@ -155,19 +168,15 @@ private:
d->list_dir_end();
if (!is_empty) {
- set_message(TTR("Your project will be created in a non empty folder (you might want to create a new folder)."), MESSAGE_WARNING);
- }
- } else {
-
- if (d->file_exists("project.godot")) {
-
- set_message(TTR("Please choose a folder that does not contain a 'project.godot' file."), MESSAGE_ERROR);
+ set_message(TTR("Please choose an empty folder."), MESSAGE_ERROR);
memdelete(d);
+ get_ok()->set_disabled(true);
return "";
}
}
+ set_message("");
memdelete(d);
get_ok()->set_disabled(false);
return valid_path;
@@ -213,7 +222,6 @@ private:
}
String sp = p.simplify_path();
project_path->set_text(sp);
- set_message(" "); // just so it does not disappear
get_ok()->call_deferred("grab_focus");
}
@@ -242,21 +250,32 @@ private:
void _create_folder() {
- if (project_name->get_text() == "" || created_folder_path != "") {
+ if (project_name->get_text() == "" || created_folder_path != "")
return;
- }
DirAccess *d = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
if (d->change_dir(project_path->get_text()) == OK) {
+
if (!d->dir_exists(project_name->get_text())) {
+
if (d->make_dir(project_name->get_text()) == OK) {
+
d->change_dir(project_name->get_text());
project_path->set_text(d->get_current_dir());
created_folder_path = d->get_current_dir();
create_dir->set_disabled(true);
+ } else {
+
+ dialog_error->set_text(TTR("Couldn't create folder."));
+ dialog_error->popup_centered_minsize();
}
+ } else {
+
+ dialog_error->set_text(TTR("There is already a folder in this path with the specified name."));
+ dialog_error->popup_centered_minsize();
}
}
+
memdelete(d);
}
@@ -337,6 +356,7 @@ private:
if (!pkg) {
dialog_error->set_text(TTR("Error opening package file, not in zip format."));
+ dialog_error->popup_centered_minsize();
return;
}
@@ -447,16 +467,21 @@ private:
}
}
- void _toggle_message() {
- msg->set_visible(!msg->is_visible());
- }
-
void cancel_pressed() {
_remove_created_folder();
project_path->clear();
project_name->clear();
+
+ if (status_rect->get_texture() == get_icon("StatusError", "EditorIcons"))
+ msg->show();
+ }
+
+ void _notification(int p_what) {
+
+ if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST)
+ _remove_created_folder();
}
protected:
@@ -468,7 +493,6 @@ protected:
ClassDB::bind_method("_path_text_changed", &ProjectDialog::_path_text_changed);
ClassDB::bind_method("_path_selected", &ProjectDialog::_path_selected);
ClassDB::bind_method("_file_selected", &ProjectDialog::_file_selected);
- ClassDB::bind_method("_toggle_message", &ProjectDialog::_toggle_message);
ADD_SIGNAL(MethodInfo("project_created"));
ADD_SIGNAL(MethodInfo("project_renamed"));
}
@@ -500,11 +524,17 @@ public:
set_title(TTR("Rename Project"));
get_ok()->set_text(TTR("Rename"));
name_container->show();
+ status_rect->hide();
+ msg->hide();
+ get_ok()->set_disabled(false);
ProjectSettings *current = memnew(ProjectSettings);
if (current->setup(project_path->get_text(), "")) {
set_message(TTR("Couldn't get project.godot in the project path."), MESSAGE_ERROR);
+ status_rect->show();
+ msg->show();
+ get_ok()->set_disabled(true);
} else if (current->has_setting("application/config/name")) {
project_name->set_text(current->get("application/config/name"));
}
@@ -512,7 +542,6 @@ public:
project_name->call_deferred("grab_focus");
create_dir->hide();
- status_btn->hide();
} else {
@@ -532,7 +561,8 @@ public:
browse->set_disabled(false);
browse->show();
create_dir->show();
- status_btn->show();
+ status_rect->show();
+ msg->show();
if (mode == MODE_IMPORT) {
set_title(TTR("Import Existing Project"));
@@ -558,7 +588,7 @@ public:
_test_path();
}
- popup_centered(Size2(500, 125) * EDSCALE);
+ popup_centered(Size2(500, 0) * EDSCALE);
}
ProjectDialog() {
@@ -599,10 +629,10 @@ public:
project_path->set_h_size_flags(SIZE_EXPAND_FILL);
pphb->add_child(project_path);
- // status button
- status_btn = memnew(ToolButton);
- status_btn->connect("pressed", this, "_toggle_message");
- pphb->add_child(status_btn);
+ // status icon
+ status_rect = memnew(TextureRect);
+ status_rect->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
+ pphb->add_child(status_rect);
browse = memnew(Button);
browse->set_text(TTR("Browse"));
@@ -610,9 +640,7 @@ public:
pphb->add_child(browse);
msg = memnew(Label);
- msg->set_text(TTR("That's a BINGO!"));
msg->set_align(Label::ALIGN_CENTER);
- msg->hide();
vb->add_child(msg);
fdialog = memnew(FileDialog);
@@ -652,19 +680,20 @@ struct ProjectItem {
void ProjectManager::_notification(int p_what) {
- if (p_what == NOTIFICATION_ENTER_TREE) {
-
- Engine::get_singleton()->set_editor_hint(false);
-
- } else if (p_what == NOTIFICATION_READY) {
+ switch (p_what) {
+ case NOTIFICATION_ENTER_TREE: {
- if (scroll_childs->get_child_count() == 0) {
- open_templates->popup_centered_minsize();
- }
+ Engine::get_singleton()->set_editor_hint(false);
+ } break;
+ case NOTIFICATION_READY: {
- } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
+ if (scroll_children->get_child_count() == 0)
+ open_templates->popup_centered_minsize();
+ } break;
+ case NOTIFICATION_VISIBILITY_CHANGED: {
- set_process_unhandled_input(is_visible_in_tree());
+ set_process_unhandled_input(is_visible_in_tree());
+ } break;
}
}
@@ -680,9 +709,9 @@ void ProjectManager::_panel_draw(Node *p_hb) {
}
void ProjectManager::_update_project_buttons() {
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
- CanvasItem *item = Object::cast_to<CanvasItem>(scroll_childs->get_child(i));
+ CanvasItem *item = Object::cast_to<CanvasItem>(scroll_children->get_child(i));
item->update();
}
@@ -704,8 +733,8 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) {
int clicked_id = -1;
int last_clicked_id = -1;
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (!hb) continue;
if (hb->get_meta("name") == clicked) clicked_id = i;
if (hb->get_meta("name") == last_clicked) last_clicked_id = i;
@@ -714,8 +743,8 @@ void ProjectManager::_panel_input(const Ref<InputEvent> &p_ev, Node *p_hb) {
if (last_clicked_id != -1 && clicked_id != -1) {
int min = clicked_id < last_clicked_id ? clicked_id : last_clicked_id;
int max = clicked_id > last_clicked_id ? clicked_id : last_clicked_id;
- for (int i = 0; i < scroll_childs->get_child_count(); ++i) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ for (int i = 0; i < scroll_children->get_child_count(); ++i) {
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (!hb) continue;
if (i != clicked_id && (i < min || i > max) && !mb->get_control()) {
selected_list.erase(hb->get_meta("name"));
@@ -769,9 +798,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
} break;
case KEY_HOME: {
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (hb) {
selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
@@ -784,13 +813,13 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
} break;
case KEY_END: {
- for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) {
+ for (int i = scroll_children->get_child_count() - 1; i >= 0; i--) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (hb) {
selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
- scroll->set_v_scroll(scroll_childs->get_size().y);
+ scroll->set_v_scroll(scroll_children->get_size().y);
_update_project_buttons();
break;
}
@@ -806,9 +835,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
bool found = false;
- for (int i = scroll_childs->get_child_count() - 1; i >= 0; i--) {
+ for (int i = scroll_children->get_child_count() - 1; i >= 0; i--) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (!hb) continue;
String current = hb->get_meta("name");
@@ -843,9 +872,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
bool found = selected_list.empty();
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
if (!hb) continue;
String current = hb->get_meta("name");
@@ -909,8 +938,8 @@ void ProjectManager::_load_recent_projects() {
ProjectListFilter::FilterOption filter_option = project_filter->get_filter_option();
String search_term = project_filter->get_search_term();
- while (scroll_childs->get_child_count() > 0) {
- memdelete(scroll_childs->get_child(0));
+ while (scroll_children->get_child_count() > 0) {
+ memdelete(scroll_children->get_child(0));
}
Map<String, String> selected_list_copy = selected_list;
@@ -1039,9 +1068,9 @@ void ProjectManager::_load_recent_projects() {
favorite->set_normal_texture(favorite_icon);
if (!is_favorite)
favorite->set_modulate(Color(1, 1, 1, 0.2));
- favorite->set_v_size_flags(SIZE_EXPAND);
favorite->connect("pressed", this, "_favorite_pressed", varray(hb));
favorite_box->add_child(favorite);
+ favorite_box->set_alignment(BoxContainer::ALIGN_CENTER);
hb->add_child(favorite_box);
TextureRect *tf = memnew(TextureRect);
@@ -1056,6 +1085,7 @@ void ProjectManager::_load_recent_projects() {
hb->add_child(vb);
Control *ec = memnew(Control);
ec->set_custom_minimum_size(Size2(0, 1));
+ ec->set_mouse_filter(MOUSE_FILTER_PASS);
vb->add_child(ec);
Label *title = memnew(Label(project_name));
title->add_font_override("font", gui_base->get_font("title", "EditorFonts"));
@@ -1069,7 +1099,7 @@ void ProjectManager::_load_recent_projects() {
fpath->add_color_override("font_color", font_color);
fpath->set_clip_text(true);
- scroll_childs->add_child(hb);
+ scroll_children->add_child(hb);
}
for (Map<String, String>::Element *E = selected_list_copy.front(); E; E = E->next()) {
@@ -1092,8 +1122,8 @@ void ProjectManager::_on_project_renamed() {
void ProjectManager::_on_project_created(const String &dir) {
bool has_already = false;
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path")));
if (fpath->get_text() == dir) {
has_already = true;
@@ -1110,8 +1140,8 @@ void ProjectManager::_on_project_created(const String &dir) {
}
void ProjectManager::_update_scroll_position(const String &dir) {
- for (int i = 0; i < scroll_childs->get_child_count(); i++) {
- HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_childs->get_child(i));
+ for (int i = 0; i < scroll_children->get_child_count(); i++) {
+ HBoxContainer *hb = Object::cast_to<HBoxContainer>(scroll_children->get_child(i));
Label *fpath = Object::cast_to<Label>(hb->get_node(NodePath("project/path")));
if (fpath->get_text() == dir) {
last_clicked = hb->get_meta("name");
@@ -1214,7 +1244,6 @@ void ProjectManager::_run_project_confirm() {
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
ERR_FAIL_COND(err);
}
- //get_scene()->quit(); do not quit
}
void ProjectManager::_run_project() {
@@ -1552,12 +1581,9 @@ ProjectManager::ProjectManager() {
VBoxContainer *tree_vb = memnew(VBoxContainer);
tree_hb->add_child(tree_vb);
- scroll_childs = memnew(VBoxContainer);
- scroll_childs->set_h_size_flags(SIZE_EXPAND_FILL);
- scroll->add_child(scroll_childs);
-
- //HBoxContainer *hb = memnew( HBoxContainer );
- //vb->add_child(hb);
+ scroll_children = memnew(VBoxContainer);
+ scroll_children->set_h_size_flags(SIZE_EXPAND_FILL);
+ scroll->add_child(scroll_children);
Button *open = memnew(Button);
open->set_text(TTR("Edit"));
@@ -1663,7 +1689,7 @@ ProjectManager::ProjectManager() {
cancel->connect("pressed", this, "_exit_dialog");
vb->add_child(cc);
- //
+ //////////////////////////////////////////////////////////////
language_restart_ask = memnew(ConfirmationDialog);
language_restart_ask->get_ok()->set_text(TTR("Restart Now"));
@@ -1772,12 +1798,9 @@ void ProjectListFilter::_filter_option_selected(int p_idx) {
}
void ProjectListFilter::_notification(int p_what) {
- switch (p_what) {
- case NOTIFICATION_ENTER_TREE: {
- clear_search_button->set_icon(get_icon("Close", "EditorIcons"));
- } break;
- }
+ if (p_what == NOTIFICATION_ENTER_TREE)
+ clear_search_button->set_icon(get_icon("Close", "EditorIcons"));
}
void ProjectListFilter::_bind_methods() {
diff --git a/editor/project_manager.h b/editor/project_manager.h
index 7fc938f660..23ffa2f857 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROJECT_MANAGER_H
#define PROJECT_MANAGER_H
@@ -63,7 +64,7 @@ class ProjectManager : public Control {
AcceptDialog *dialog_error;
ProjectDialog *npdialog;
ScrollContainer *scroll;
- VBoxContainer *scroll_childs;
+ VBoxContainer *scroll_children;
Map<String, String> selected_list; // name -> main_scene
String last_clicked;
bool importing;
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 06befe8f3c..058f517ae9 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "project_settings_editor.h"
#include "core/global_constants.h"
@@ -749,7 +750,16 @@ void ProjectSettingsEditor::_item_add() {
String catname = category->get_text().strip_edges();
String propname = property->get_text().strip_edges();
- String name = catname != "" ? catname + "/" + propname : propname;
+
+ if (propname.empty()) {
+ return;
+ }
+
+ if (catname.empty()) {
+ catname = "global";
+ }
+
+ String name = catname + "/" + propname;
undo_redo->create_action(TTR("Add Global Property"));
diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h
index be5a51dd45..d6c2c0f5a8 100644
--- a/editor/project_settings_editor.h
+++ b/editor/project_settings_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROJECT_SETTINGS_H
#define PROJECT_SETTINGS_H
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index 1dcc5a3231..87906c5a93 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "property_editor.h"
#include "core/class_db.h"
@@ -664,6 +665,8 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
} else if (hint == PROPERTY_HINT_PROPERTY_OF_INSTANCE) {
+ MAKE_PROPSELECT
+
Object *instance = ObjectDB::get_instance(hint_text.to_int64());
if (instance)
property_select->select_property_from_instance(instance, v);
@@ -4135,6 +4138,7 @@ void PropertyEditor::_bind_methods() {
ClassDB::bind_method("_resource_preview_done", &PropertyEditor::_resource_preview_done);
ClassDB::bind_method("refresh", &PropertyEditor::refresh);
ClassDB::bind_method("_draw_transparency", &PropertyEditor::_draw_transparency);
+ ClassDB::bind_method("edit", &PropertyEditor::edit);
ClassDB::bind_method(D_METHOD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw);
ClassDB::bind_method(D_METHOD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw);
diff --git a/editor/property_editor.h b/editor/property_editor.h
index bd088ad0f6..017a190adb 100644
--- a/editor/property_editor.h
+++ b/editor/property_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROPERTY_EDITOR_H
#define PROPERTY_EDITOR_H
diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp
index eac5e2efd7..3e95064ead 100644
--- a/editor/property_selector.cpp
+++ b/editor/property_selector.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "property_selector.h"
#include "editor_scale.h"
diff --git a/editor/property_selector.h b/editor/property_selector.h
index 1f6903de20..d9b1aee422 100644
--- a/editor/property_selector.h
+++ b/editor/property_selector.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROPERTYSELECTOR_H
#define PROPERTYSELECTOR_H
diff --git a/editor/pvrtc_compress.cpp b/editor/pvrtc_compress.cpp
index aace3e895b..57a2b0d97f 100644
--- a/editor/pvrtc_compress.cpp
+++ b/editor/pvrtc_compress.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "pvrtc_compress.h"
#include "editor_settings.h"
diff --git a/editor/pvrtc_compress.h b/editor/pvrtc_compress.h
index 2d626aa9ef..cdd2f0d242 100644
--- a/editor/pvrtc_compress.h
+++ b/editor/pvrtc_compress.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PVRTC_COMPRESS_H
#define PVRTC_COMPRESS_H
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index c2a194ebaf..26dd931321 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "quick_open.h"
#include "os/keyboard.h"
diff --git a/editor/quick_open.h b/editor/quick_open.h
index 52f9c08ae6..ecc6af0c53 100644
--- a/editor/quick_open.h
+++ b/editor/quick_open.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef EDITOR_QUICK_OPEN_H
#define EDITOR_QUICK_OPEN_H
diff --git a/editor/register_exporters.h b/editor/register_exporters.h
index 9645ffddea..dc0a53a686 100644
--- a/editor/register_exporters.h
+++ b/editor/register_exporters.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_EXPORTERS_H
#define REGISTER_EXPORTERS_H
diff --git a/editor/reparent_dialog.cpp b/editor/reparent_dialog.cpp
index 7aa8d849e6..da8bfdbbd2 100644
--- a/editor/reparent_dialog.cpp
+++ b/editor/reparent_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "reparent_dialog.h"
#include "print_string.h"
diff --git a/editor/reparent_dialog.h b/editor/reparent_dialog.h
index 2f185b3d88..301dbe8bb5 100644
--- a/editor/reparent_dialog.h
+++ b/editor/reparent_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REPARENT_DIALOG_H
#define REPARENT_DIALOG_H
diff --git a/editor/run_settings_dialog.cpp b/editor/run_settings_dialog.cpp
index dede4c6dc8..ea53de7e8c 100644
--- a/editor/run_settings_dialog.cpp
+++ b/editor/run_settings_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "run_settings_dialog.h"
void RunSettingsDialog::popup_run_settings() {
diff --git a/editor/run_settings_dialog.h b/editor/run_settings_dialog.h
index f9c09b06c2..9fec71a468 100644
--- a/editor/run_settings_dialog.h
+++ b/editor/run_settings_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RUN_SETTINGS_DIALOG_H
#define RUN_SETTINGS_DIALOG_H
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 7e8a6fcb6d..41ee5ab286 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scene_tree_dock.h"
#include "core/io/resource_saver.h"
@@ -236,13 +237,20 @@ void SceneTreeDock::_replace_with_branch_scene(const String &p_file, Node *base)
Node *parent = base->get_parent();
int pos = base->get_index();
- memdelete(base);
+ parent->remove_child(base);
parent->add_child(instanced_scene);
parent->move_child(instanced_scene, pos);
instanced_scene->set_owner(edited_scene);
editor_selection->clear();
editor_selection->add_node(instanced_scene);
scene_tree->set_selected(instanced_scene);
+
+ // Delete the node as late as possible because before another one is selected
+ // an editor plugin could be referencing it to do something with it before
+ // switching to another (or to none); and since some steps of changing the
+ // editor state are deferred, the safest thing is to do this is as the last
+ // step of this function and also by enqueing instead of memdelete()-ing it here
+ base->queue_delete();
}
bool SceneTreeDock::_cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node) {
@@ -307,7 +315,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
} break;
case TOOL_REPLACE: {
- create_dialog->popup_create(false);
+ create_dialog->popup_create(false, true);
} break;
case TOOL_ATTACH_SCRIPT: {
@@ -342,8 +350,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (existing.is_valid()) {
const RefPtr empty;
selected->set_script(empty);
- button_create_script->show();
- button_clear_script->hide();
+ _update_script_button();
}
} break;
@@ -417,7 +424,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (editor_selection->is_selected(edited_scene)) {
current_option = -1;
- //accept->get_cancel()->hide();
accept->get_ok()->set_text(TTR("I see.."));
accept->set_text(TTR("This operation can't be done on the tree root."));
accept->popup_centered_minsize();
@@ -1204,8 +1210,7 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) {
return;
selected->set_script(p_script.get_ref_ptr());
editor->push_item(p_script.operator->());
- button_create_script->hide();
- button_clear_script->show();
+ _update_script_button();
}
void SceneTreeDock::_delete_confirm() {
@@ -1285,17 +1290,15 @@ void SceneTreeDock::_delete_confirm() {
editor->get_viewport_control()->update();
editor->push_item(NULL);
-}
-
-void SceneTreeDock::_selection_changed() {
- int selection_size = EditorNode::get_singleton()->get_editor_selection()->get_selection().size();
- if (selection_size > 1) {
- //automatically turn on multi-edit
- _tool_selected(TOOL_MULTI_EDIT);
- }
+ // Fixes the EditorHistory from still offering deleted notes
+ EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ editor_history->cleanup_history();
+ EditorNode::get_singleton()->call("_prepare_history");
+}
- if (selection_size == 1) {
+void SceneTreeDock::_update_script_button() {
+ if (EditorNode::get_singleton()->get_editor_selection()->get_selection().size() == 1) {
if (EditorNode::get_singleton()->get_editor_selection()->get_selection().front()->key()->get_script().is_null()) {
button_create_script->show();
button_clear_script->hide();
@@ -1309,6 +1312,16 @@ void SceneTreeDock::_selection_changed() {
}
}
+void SceneTreeDock::_selection_changed() {
+
+ int selection_size = EditorNode::get_singleton()->get_editor_selection()->get_selection().size();
+ if (selection_size > 1) {
+ //automatically turn on multi-edit
+ _tool_selected(TOOL_MULTI_EDIT);
+ }
+ _update_script_button();
+}
+
void SceneTreeDock::_create() {
if (current_option == TOOL_NEW) {
@@ -1643,6 +1656,7 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) {
Node *n = get_node(p_to);
if (n) {
n->set_script(scr.get_ref_ptr());
+ _update_script_button();
}
}
@@ -2052,6 +2066,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel
menu->connect("id_pressed", this, "_tool_selected");
menu_subresources = memnew(PopupMenu);
menu_subresources->set_name("Sub-Resources");
+ menu_subresources->connect("id_pressed", this, "_tool_selected");
menu->add_child(menu_subresources);
first_enter = true;
restore_script_editor_on_drag = false;
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 0a5b20ed9c..0a68aa7dc2 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_TREE_DOCK_H
#define SCENE_TREE_DOCK_H
@@ -159,6 +160,7 @@ class SceneTreeDock : public VBoxContainer {
bool _validate_no_foreign();
void _selection_changed();
+ void _update_script_button();
void _fill_path_renames(Vector<StringName> base_path, Vector<StringName> new_base_path, Node *p_node, List<Pair<NodePath, NodePath> > *p_renames);
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index 957f50a052..fd21b83605 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scene_tree_editor.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index 542b32d4cd..45194bb81d 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_TREE_EDITOR_H
#define SCENE_TREE_EDITOR_H
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index ad6ea2180f..cee356b930 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_create_dialog.h"
#include "editor/editor_node.h"
@@ -232,7 +233,7 @@ void ScriptCreateDialog::_lang_changed(int l) {
String path = file_path->get_text();
String extension = "";
if (path != "") {
- if (path.find(".") >= 0) {
+ if (path.find(".") != -1) {
extension = path.get_extension();
}
@@ -359,16 +360,14 @@ void ScriptCreateDialog::_path_changed(const String &p_path) {
return;
}
- if (p.find("/") || p.find("\\")) {
- DirAccess *d = DirAccess::create(DirAccess::ACCESS_RESOURCES);
- if (d->change_dir(p.get_base_dir()) != OK) {
- _msg_path_valid(false, TTR("Invalid base path"));
- memdelete(d);
- _update_dialog();
- return;
- }
+ DirAccess *d = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ if (d->change_dir(p.get_base_dir()) != OK) {
+ _msg_path_valid(false, TTR("Invalid base path"));
memdelete(d);
+ _update_dialog();
+ return;
}
+ memdelete(d);
/* Does file already exist */
diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h
index 882e4796f9..b5afe2e38e 100644
--- a/editor/script_create_dialog.h
+++ b/editor/script_create_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_CREATE_DIALOG_H
#define SCRIPT_CREATE_DIALOG_H
diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp
index 4fe7bef9f7..d0527a13ea 100644
--- a/editor/script_editor_debugger.cpp
+++ b/editor/script_editor_debugger.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "script_editor_debugger.h"
#include "editor_node.h"
@@ -611,7 +612,9 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
if (!EditorNode::get_log()->is_visible()) {
if (EditorNode::get_singleton()->are_bottom_panels_hidden()) {
- EditorNode::get_singleton()->make_bottom_panel_item_visible(EditorNode::get_log());
+ if (EDITOR_GET("run/output/always_open_output_on_play")) {
+ EditorNode::get_singleton()->make_bottom_panel_item_visible(EditorNode::get_log());
+ }
}
}
EditorNode::get_log()->add_message(t);
@@ -1052,6 +1055,8 @@ void ScriptEditorDebugger::_notification(int p_what) {
break;
};
+ const uint64_t until = OS::get_singleton()->get_ticks_msec() + 20;
+
while (ppeer->get_available_packet_count() > 0) {
if (pending_in_queue) {
@@ -1116,6 +1121,9 @@ void ScriptEditorDebugger::_notification(int p_what) {
break;
}
}
+
+ if (OS::get_singleton()->get_ticks_msec() > until)
+ break;
}
} break;
@@ -1165,6 +1173,7 @@ void ScriptEditorDebugger::start() {
}
set_process(true);
+ breaked = false;
}
void ScriptEditorDebugger::pause() {
@@ -1176,6 +1185,7 @@ void ScriptEditorDebugger::unpause() {
void ScriptEditorDebugger::stop() {
set_process(false);
+ breaked = false;
server->stop();
@@ -1608,30 +1618,33 @@ void ScriptEditorDebugger::_error_selected(int p_idx) {
error_stack->clear();
Array st = error_list->get_item_metadata(p_idx);
- for (int i = 0; i < st.size(); i += 2) {
+ for (int i = 0; i < st.size(); i += 3) {
String script = st[i];
- int line = st[i + 1];
+ String func = st[i + 1];
+ int line = st[i + 2];
Array md;
md.push_back(st[i]);
md.push_back(st[i + 1]);
+ md.push_back(st[i + 2]);
- String str = script.get_file() + ":" + itos(line);
+ String str = func + " in " + script.get_file() + ":line " + itos(line);
error_stack->add_item(str);
error_stack->set_item_metadata(error_stack->get_item_count() - 1, md);
- error_stack->set_item_tooltip(error_stack->get_item_count() - 1, TTR("File:") + " " + String(st[i]) + "\n" + TTR("Line:") + " " + itos(line));
+ error_stack->set_item_tooltip(error_stack->get_item_count() - 1,
+ TTR("File:") + " " + script + "\n" + TTR("Function:") + " " + func + "\n" + TTR("Line:") + " " + itos(line));
}
}
void ScriptEditorDebugger::_error_stack_selected(int p_idx) {
Array arr = error_stack->get_item_metadata(p_idx);
- if (arr.size() != 2)
+ if (arr.size() != 3)
return;
Ref<Script> s = ResourceLoader::load(arr[0]);
- emit_signal("goto_script_line", s, int(arr[1]) - 1);
+ emit_signal("goto_script_line", s, int(arr[2]) - 1);
}
void ScriptEditorDebugger::set_hide_on_stop(bool p_hide) {
@@ -1686,6 +1699,45 @@ void ScriptEditorDebugger::_clear_remote_objects() {
remote_objects.clear();
}
+void ScriptEditorDebugger::_clear_errors_list() {
+
+ error_list->clear();
+ error_count = 0;
+ _notification(NOTIFICATION_PROCESS);
+}
+
+// Right click on specific file(s) or folder(s).
+void ScriptEditorDebugger::_error_list_item_rmb_selected(int p_item, const Vector2 &p_pos) {
+
+ item_menu->clear();
+ item_menu->set_size(Size2(1, 1));
+
+ // Allow specific actions only on one item.
+ bool single_item_selected = error_list->get_selected_items().size() == 1;
+
+ if (single_item_selected) {
+ item_menu->add_icon_item(get_icon("CopyNodePath", "EditorIcons"), TTR("Copy Error"), ITEM_MENU_COPY_ERROR);
+ }
+
+ if (item_menu->get_item_count() > 0) {
+ item_menu->set_position(error_list->get_global_position() + p_pos);
+ item_menu->popup();
+ }
+}
+
+void ScriptEditorDebugger::_item_menu_id_pressed(int p_option) {
+
+ switch (p_option) {
+
+ case ITEM_MENU_COPY_ERROR: {
+ String title = error_list->get_item_text(error_list->get_current());
+ String desc = error_list->get_item_tooltip(error_list->get_current());
+
+ OS::get_singleton()->set_clipboard(title + "\n----------\n" + desc);
+ } break;
+ }
+}
+
void ScriptEditorDebugger::_bind_methods() {
ClassDB::bind_method(D_METHOD("_stack_dump_frame_selected"), &ScriptEditorDebugger::_stack_dump_frame_selected);
@@ -1705,6 +1757,10 @@ void ScriptEditorDebugger::_bind_methods() {
ClassDB::bind_method(D_METHOD("_error_stack_selected"), &ScriptEditorDebugger::_error_stack_selected);
ClassDB::bind_method(D_METHOD("_profiler_activate"), &ScriptEditorDebugger::_profiler_activate);
ClassDB::bind_method(D_METHOD("_profiler_seeked"), &ScriptEditorDebugger::_profiler_seeked);
+ ClassDB::bind_method(D_METHOD("_clear_errors_list"), &ScriptEditorDebugger::_clear_errors_list);
+
+ ClassDB::bind_method(D_METHOD("_error_list_item_rmb_selected"), &ScriptEditorDebugger::_error_list_item_rmb_selected);
+ ClassDB::bind_method(D_METHOD("_item_menu_id_pressed"), &ScriptEditorDebugger::_item_menu_id_pressed);
ClassDB::bind_method(D_METHOD("_paused"), &ScriptEditorDebugger::_paused);
@@ -1829,9 +1885,31 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {
error_split = memnew(HSplitContainer);
VBoxContainer *errvb = memnew(VBoxContainer);
+ HBoxContainer *errhb = memnew(HBoxContainer);
errvb->set_h_size_flags(SIZE_EXPAND_FILL);
+ Label *velb = memnew(Label(TTR("Errors:")));
+ velb->set_h_size_flags(SIZE_EXPAND_FILL);
+ errhb->add_child(velb);
+
+ clearbutton = memnew(Button);
+ clearbutton->set_text(TTR("Clear"));
+ clearbutton->connect("pressed", this, "_clear_errors_list");
+ errhb->add_child(clearbutton);
+ errvb->add_child(errhb);
+
error_list = memnew(ItemList);
- errvb->add_margin_child(TTR("Errors:"), error_list, true);
+ error_list->set_v_size_flags(SIZE_EXPAND_FILL);
+ error_list->set_h_size_flags(SIZE_EXPAND_FILL);
+ error_list->connect("item_rmb_selected", this, "_error_list_item_rmb_selected");
+ error_list->set_allow_rmb_select(true);
+ error_list->set_autoscroll_to_bottom(true);
+
+ item_menu = memnew(PopupMenu);
+ item_menu->connect("id_pressed", this, "_item_menu_id_pressed");
+ error_list->add_child(item_menu);
+
+ errvb->add_child(error_list);
+
error_split->add_child(errvb);
errvb = memnew(VBoxContainer);
diff --git a/editor/script_editor_debugger.h b/editor/script_editor_debugger.h
index e380a56b18..e86add940a 100644
--- a/editor/script_editor_debugger.h
+++ b/editor/script_editor_debugger.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCRIPT_EDITOR_DEBUGGER_H
#define SCRIPT_EDITOR_DEBUGGER_H
@@ -62,6 +63,10 @@ class ScriptEditorDebugger : public Control {
MESSAGE_SUCCESS,
};
+ enum ItemMenu {
+ ITEM_MENU_COPY_ERROR,
+ };
+
AcceptDialog *msgdialog;
Button *debugger_button;
@@ -85,6 +90,8 @@ class ScriptEditorDebugger : public Control {
ItemList *error_list;
ItemList *error_stack;
Tree *inspect_scene_tree;
+ Button *clearbutton;
+ PopupMenu *item_menu;
int error_count;
int last_error_count;
@@ -175,6 +182,10 @@ class ScriptEditorDebugger : public Control {
void _set_remote_object(ObjectID p_id, ScriptEditorDebuggerInspectedObject *p_obj);
void _clear_remote_objects();
+ void _clear_errors_list();
+
+ void _error_list_item_rmb_selected(int p_item, const Vector2 &p_pos);
+ void _item_menu_id_pressed(int p_option);
protected:
void _notification(int p_what);
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index 1919504b5c..d75ef5df8a 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "settings_config_dialog.h"
#include "editor_file_system.h"
diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h
index 6925de0777..6676e870d0 100644
--- a/editor/settings_config_dialog.h
+++ b/editor/settings_config_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SETTINGS_CONFIG_DIALOG_H
#define SETTINGS_CONFIG_DIALOG_H
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index b06d25d8ee..72c0f050d2 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "spatial_editor_gizmos.h"
#include "geometry.h"
diff --git a/editor/spatial_editor_gizmos.h b/editor/spatial_editor_gizmos.h
index 240d2145c1..cb483ed653 100644
--- a/editor/spatial_editor_gizmos.h
+++ b/editor/spatial_editor_gizmos.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPATIAL_EDITOR_GIZMOS_H
#define SPATIAL_EDITOR_GIZMOS_H
diff --git a/editor/translations/af.po b/editor/translations/af.po
index cfe5cdc24e..9d4ce1e29d 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -198,8 +198,7 @@ msgstr "Skep %d NUWE bane en voeg sleutels by?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Skep"
@@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Het %d verskynsel(s) vervang."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Vervang"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Vervang Alles"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Pas Letterkas"
@@ -395,48 +386,16 @@ msgid "Whole Words"
msgstr "Hele Woorde"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Slegs Seleksie"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Soek"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Vind"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Volgende"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Nie gevind nie!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Vervang Met"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Letterkas Sensitief"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Terugwaarts"
+msgid "Replace"
+msgstr "Vervang"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Por Op Vervang"
+msgid "Replace All"
+msgstr "Vervang Alles"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Spring Oor"
+msgid "Selection Only"
+msgstr "Slegs Seleksie"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -557,6 +516,16 @@ msgstr "Seine"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Verander Skikking Waarde-Soort"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Skep Nuwe"
@@ -669,7 +638,8 @@ msgstr ""
"Verwyder die lêers in elk geval? (geen ontdoen)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Kan nie verwyder nie:\n"
#: editor/dependency_editor.cpp
@@ -752,8 +722,9 @@ msgstr "Projek Stigters"
msgid "Lead Developer"
msgstr "Hoof Ontwikkelaar"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Projek Bestuurder"
#: editor/editor_about.cpp
@@ -842,7 +813,7 @@ msgid "Success!"
msgstr "Sukses!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installeer"
@@ -1153,7 +1124,8 @@ msgid "Packing"
msgstr "Verpak"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "Sjabloon lêer nie gevind nie:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1366,6 +1338,20 @@ msgid "Description"
msgstr "Beskrywing"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Daar is tans geen beskrywing vir hierdie metode nie. Help ons asseblief deur "
+"[color=$color][url=$url]een by te dra[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Eienskappe"
@@ -1401,6 +1387,10 @@ msgstr ""
msgid "Search Text"
msgstr "Deursoek Teks"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Vind"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Afvoer:"
@@ -1412,6 +1402,11 @@ msgstr "Afvoer:"
msgid "Clear"
msgstr "Vee uit"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Afvoer:"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Fout tydens storing van hulpbron!"
@@ -1420,8 +1415,8 @@ msgstr "Fout tydens storing van hulpbron!"
msgid "Save Resource As.."
msgstr "Stoor Hulpbron As..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ek sien..."
@@ -1475,7 +1470,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2028,6 +2024,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Soek"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2407,7 +2410,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2562,9 +2565,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2572,21 +2573,23 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Fout terwyl laai:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Fout terwyl laai:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:"
+msgstr "Toneel kon nie laai nie as gevolg van vermiste afhanklikhede:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -3227,6 +3230,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animasie Zoem."
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3392,6 +3400,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3692,19 +3701,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4075,7 +4087,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4464,14 +4476,17 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Hulpbron"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4547,6 +4562,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4978,83 +4997,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5069,6 +5088,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5142,15 +5165,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5425,10 +5444,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5454,14 +5481,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5599,6 +5629,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5699,6 +5733,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Skep Vouer"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5806,9 +5865,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5820,6 +5877,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Kon nie vouer skep nie."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5860,14 +5926,28 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Skep"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installeer"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5884,10 +5964,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5933,6 +6009,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projek Bestuurder"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6059,11 +6139,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6441,10 +6516,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6529,8 +6600,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "Hulpbron"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6820,7 +6892,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6829,6 +6901,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7175,10 +7251,52 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Kon nie vouer skep nie."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Skep Intekening"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7524,23 +7642,30 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not write file:"
+msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+#, fuzzy
+msgid "Could not read boot splash image file:"
+msgstr "Kon nie vouer skep nie."
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7555,6 +7680,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7623,7 +7755,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7682,6 +7814,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7727,8 +7866,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7793,8 +7932,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7821,12 +7960,29 @@ msgstr ""
msgid "Invalid font size."
msgstr ""
+#~ msgid "Next"
+#~ msgstr "Volgende"
+
+#~ msgid "Not found!"
+#~ msgstr "Nie gevind nie!"
+
+#~ msgid "Replace By"
+#~ msgstr "Vervang Met"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Letterkas Sensitief"
+
+#~ msgid "Backwards"
+#~ msgstr "Terugwaarts"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Por Op Vervang"
+
+#~ msgid "Skip"
+#~ msgstr "Spring Oor"
+
#~ msgid "Move Add Key"
#~ msgstr "Skuif Byvoeg Sleutel"
-#, fuzzy
-#~ msgid "Create Subscription"
-#~ msgstr "Skep Intekening"
-
#~ msgid "List:"
#~ msgstr "Lys:"
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 908f49ab94..deb49f0619 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -8,9 +8,10 @@
# Jamal Alyafei <jamal.qassim@gmail.com>, 2017.
# john lennon <khoanantonio@outlook.com>, 2017.
# Mohammmad Khashashneh <mohammad.rasmi@gmail.com>, 2016.
+# Mr ChaosXD <mrchaosxd3@gmail.com>, 2018.
# Mrwan Ashraf <mrwan.ashraf94@gmail.com>, 2017.
# noureldin sharaf <sharaf.noureldin@yahoo.com>, 2017.
-# omar anwar aglan <omar.aglan91@yahoo.com>, 2017.
+# omar anwar aglan <omar.aglan91@yahoo.com>, 2017-2018.
# OWs Tetra <owstetra@gmail.com>, 2017.
# Rex_sa <asd1234567890m@gmail.com>, 2017.
# Wajdi Feki <wajdi.feki@gmail.com>, 2017.
@@ -18,8 +19,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:42+0000\n"
-"Last-Translator: Rex_sa <asd1234567890m@gmail.com>\n"
+"PO-Revision-Date: 2018-01-24 11:45+0000\n"
+"Last-Translator: anonymous <>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -27,7 +28,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -38,9 +39,8 @@ msgid "All Selection"
msgstr "ÙƒÙÙ„ Ø§Ù„Ù…ÙØ­Ø¯Ø¯"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "قيمة تغيير التحريك"
+msgstr "تغيير وقت الإطار الرئيسي للحركة"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -51,9 +51,8 @@ msgid "Anim Change Transform"
msgstr "تحويل تغيير التحريك"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "قيمة تغيير التحريك"
+msgstr "تغيير قيمة الإطار الأساسي للحركة"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -209,8 +208,7 @@ msgstr "أنشئ %d مسارات جديدة Ùˆ أدخل Ù…ÙØ§ØªÙŠØ­ØŸ"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "أنشئ"
@@ -387,14 +385,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Ø¥Ø³ØªØ¨ÙØ¯Ù„ %d حادثة(حوادث)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "إستبدال"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "إستبدال الكل"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "قضية تشابه"
@@ -403,48 +393,16 @@ msgid "Whole Words"
msgstr "كل الكلمات"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "المحدد Ùقط"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "بحث"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "جد"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "التالي"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "لم يوجد!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "إستبدلت بـ"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "حساسة لحالة الأحرÙ"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "إلي الخلÙ"
+msgid "Replace"
+msgstr "إستبدال"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "تأكيد عند الإستبدال"
+msgid "Replace All"
+msgstr "إستبدال الكل"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "تخطي"
+msgid "Selection Only"
+msgstr "المحدد Ùقط"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -546,9 +504,8 @@ msgid "Connecting Signal:"
msgstr "يوصل الإشارة:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "وصل '%s' إلي '%s'"
+msgstr "قطع إتصال'%s' من '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -564,9 +521,17 @@ msgid "Signals"
msgstr "الإشارات"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "غير نوع %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "تغير"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "إنشاء جديد"
+msgstr "إنشاء %s جديد"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -676,8 +641,8 @@ msgstr ""
"إمسح علي أية حال؟ (لا رجعة)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "لا يمكن المسح:\n"
+msgid "Cannot remove:"
+msgstr "لا يمكن المسح:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -759,9 +724,9 @@ msgstr "مؤسسون المشروع"
msgid "Lead Developer"
msgstr "قائد المطوريين"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "مدير المشروع"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "مدير المشروع "
#: editor/editor_about.cpp
msgid "Developers"
@@ -849,7 +814,7 @@ msgid "Success!"
msgstr "تم بنجاح!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "تثبيت"
@@ -870,9 +835,8 @@ msgid "Rename Audio Bus"
msgstr "إعادة تسمية بيوس الصوت"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "تبديل بيوس الصوت إلي ÙØ±Ø¯ÙŠ"
+msgstr "تغيير حجم صوت البيوس"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -937,7 +901,7 @@ msgstr "إمسح التأثير"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "صوت"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1113,11 +1077,11 @@ msgstr "ÙŠÙØ­Ø¯Ø« المشهد..."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[ÙØ§Ø±Øº]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[غير محÙوظ]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1157,8 +1121,8 @@ msgid "Packing"
msgstr "يَحزم\"ينتج المل٠المضغوط\""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "مل٠النموذج غير موجود:\n"
+msgid "Template file not found:"
+msgstr "مل٠النموذج غير موجود:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1186,7 +1150,7 @@ msgstr "تحديث"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
-msgstr "جميع الأنواع المعتمدة"
+msgstr "جميع الأنواع المعتمدة\"Ø§Ù„Ù…Ø¹Ø±ÙˆÙØ©\""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
@@ -1369,6 +1333,20 @@ msgid "Description"
msgstr "الوصÙ"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "الدورس علي الإنترنت:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"ليس هناك دروس تعليمية ÙÙŠ هذا Ø§Ù„ÙØµÙ„ØŒ يمكنك [color=$color][url=$url] المساهمة "
+"ÙÙŠ إحداها [/url][/color] أو [color=$color][url=$url2]أطلب أحداها [/url][/"
+"color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "خصائص"
@@ -1404,6 +1382,10 @@ msgstr ""
msgid "Search Text"
msgstr "إبحث عن كتابة"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "جد"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "الخرج:"
@@ -1415,6 +1397,10 @@ msgstr "الخرج:"
msgid "Clear"
msgstr "خالي"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "أخلاء الخرج"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "خطأ ÙÙŠ Ø­ÙØ¸ المورد!"
@@ -1423,8 +1409,8 @@ msgstr "خطأ ÙÙŠ Ø­ÙØ¸ المورد!"
msgid "Save Resource As.."
msgstr "Ø­ÙØ¸ المورد باسم..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "أنا أري.."
@@ -1478,7 +1464,8 @@ msgstr "هذه العملية لا يمكنها الإكتمال من غير جØ
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr "لا يمكن Ø­ÙØ¸ المشهد. على الأرجح لا يمكن Ø¥Ø³ØªÙŠÙØ§Ø¡ التبعيات (مجسّدات)."
#: editor/editor_node.cpp
@@ -1855,7 +1842,7 @@ msgstr "تمكين/إيقا٠الوضع الخالي من الإلهاء."
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr "أض٠مشهد جديدة."
+msgstr "أض٠مشهد جديد"
#: editor/editor_node.cpp
msgid "Scene"
@@ -2080,6 +2067,13 @@ msgstr "مساعدة"
msgid "Classes"
msgstr "Ø§Ù„ÙØ¦Ø§Øª"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "بحث"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "مستندات الإنترنت"
@@ -2351,14 +2345,12 @@ msgid "Frame #:"
msgstr "اطار #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "الوقت:"
+msgstr "الوقت"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "نداء"
+msgstr "ندائات"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2463,8 +2455,8 @@ msgid "No version.txt found inside templates."
msgstr "لا مل٠version.txt تم إيجاده داخل القالب."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:\n"
+msgid "Error creating path for templates:"
+msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2499,7 +2491,6 @@ msgstr "لا يوجد إستجابة."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "ÙØ´Ù„ الطلب."
@@ -2547,7 +2538,6 @@ msgid "Connecting.."
msgstr "جاري الإتصال..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "لا يمكن الإتصال"
@@ -2622,33 +2612,28 @@ msgid "View items as a list"
msgstr "أظهر العناصر كقائمة"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-"\n"
-"الحالة: إستيراد Ø§Ù„Ù…Ù„Ù ÙØ´Ù„. من ÙØ¶Ù„Ùƒ أصلح المل٠و أعد إستيراده يدوياً."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
+msgstr "الحالة: إستيراد Ø§Ù„Ù…Ù„Ù ÙØ´Ù„. من ÙØ¶Ù„Ùƒ أصلح المل٠و أعد إستيراده يدوياً."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "لا يمكن مسح/إعادة تسمية جذر الموارد."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "لا يمكن تحريك مجلد إلي Ù†ÙØ³Ù‡.\n"
+msgid "Cannot move a folder into itself."
+msgstr "لا يمكن تحريك مجلد إلي Ù†ÙØ³Ù‡."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "خطأ ÙÙŠ تحريك:\n"
+msgid "Error moving:"
+msgstr "خطأ ÙÙŠ تحريك:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "خطآ ÙÙŠ التحميل:"
+msgid "Error duplicating:"
+msgstr "خطآ ÙÙŠ التكرار:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "غير قادر علي تحديث التبعيات:\n"
+msgid "Unable to update dependencies:"
+msgstr "غير قادر علي تحديث التبعيات:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2679,14 +2664,12 @@ msgid "Renaming folder:"
msgstr "إعادة تسمية مجلد:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "تكرير"
+msgstr "تكرير الملÙ:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "إعادة تسمية مجلد:"
+msgstr "تكرار مجلد:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2705,9 +2688,8 @@ msgid "Move To.."
msgstr "تحريك إلي.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "ÙØªØ­ مشهد"
+msgstr "ÙØªØ­ مشهد (مشاهد)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2722,9 +2704,8 @@ msgid "View Owners.."
msgstr "أظهر المÙلاك.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "تكرير"
+msgstr "تكرير..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2822,11 +2803,11 @@ msgstr "حاري إستيراد المشهد.."
#: editor/import/resource_importer_scene.cpp
msgid "Generating Lightmaps"
-msgstr ""
+msgstr "انشاء خارطة الضوء"
#: editor/import/resource_importer_scene.cpp
msgid "Generating for Mesh: "
-msgstr ""
+msgstr "انشاء من اجل الميش: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3074,11 +3055,11 @@ msgstr "نسخ الحركة"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Onion Skinning"
-msgstr ""
+msgstr "تقشير البصل"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
-msgstr ""
+msgstr "ØªÙØ¹ÙŠÙ„ تقشير البصل"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Directions"
@@ -3102,19 +3083,19 @@ msgstr "الخطوة 1"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "2 steps"
-msgstr ""
+msgstr "خطوتان"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "3 steps"
-msgstr ""
+msgstr "ثلاثة خطوات"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Differences Only"
-msgstr "Ø§Ù„Ø§Ø®ØªÙ„Ø§ÙØ§Øª Ùقط"
+msgstr "Ø§Ù„Ø¥Ø®ØªÙ„Ø§ÙØ§Øª Ùقط"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
-msgstr ""
+msgstr "الاجبار على التعديل الابيض"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
@@ -3294,6 +3275,10 @@ msgstr "تعديل مصاÙÙŠ العقد"
msgid "Filters.."
msgstr "الÙلترة.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "شجرة الحركة"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "مجاني/ÙØ§Ø±Øº"
@@ -3443,22 +3428,28 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"لا يمكن تحديد مسار Ø­ÙØ¸ لصور خرائط الضوء.\n"
+"Ø§Ø­ÙØ¸ مشهدك (لكي ØªØ­ÙØ¸ الصور ÙÙŠ المسار ذاته), او اختر مسار Ø­ÙØ¸ لخصائص خرائط "
+"الضوء المعدة مسبقا."
#: 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 Ùˆ ان زر الضوء "
+"'المعد' Ù…ÙØ¹Ù„."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
+msgstr "لا يمكن انشاء خرائط الضوء, تاكد من ان المسار صحيح."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr ""
+msgstr "اعداد خرائط الضوء"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "إستعراض"
@@ -3761,6 +3752,14 @@ msgstr "أض٠%s"
msgid "Adding %s..."
msgstr "Ø¥Ø¶Ø§ÙØ© %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3772,11 +3771,6 @@ msgid "Error instancing scene from %s"
msgstr "خطأ ÙÙŠ توضيح المشهد من %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "هذه العملية تتطلب عقدة واحدة محددة."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "غير النوع Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
@@ -3969,19 +3963,19 @@ msgstr "أنشئ ميش التنقل"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "الميش المتضمن ليس من النوع الميش المتعدد."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "نشر Unwrap ÙØ´Ù„ØŒ الميش ربما لا يكون متعدد؟"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "لا ميش لتصحيحة."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "النموذج ليس لديه UV ÙÙŠ هذا الطابق"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4005,37 +3999,35 @@ msgstr "الميش"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "إنشاء جسم تراميش ثابت"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "أنشئ جسم محدب ثابت"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "إنشاء متصادم تراميش قريب"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Collision Sibling"
-msgstr ""
+msgstr "إنشاء متصادم محدب قريب"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
msgstr "إنشاء شبكة الخطوط العريضة .."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "أظهر"
+msgstr "أظهر UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "أظهر"
+msgstr "أظهر UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "بسط UV2 من أجل خريطة الضوء/الإطباق المحيط"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4047,127 +4039,127 @@ msgstr "حجم الخطوط:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
+msgstr "لا مصدر ميش تم تحديده (Ùˆ لا ميش متعدد تم تحديده ÙÙŠ العقدة)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
+msgstr "لا مصدر ميش تم تحديده (و ميش المتعدد لا يحتوي علي ميش)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
-msgstr ""
+msgstr "مصدر الميش خاطئ (المسار خاطئ)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
+msgstr "مصدر الميش خاطئ (لييس ميش نموذجي)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
+msgstr "مصدر الميش خاطئ (لا يحتوي علي مصادر للميش)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
-msgstr ""
+msgstr "لا مصدر للسطح تم تحديده."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (invalid path)."
-msgstr ""
+msgstr "مصدر السطح خاطئ (مسار خاطئ)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no geometry)."
-msgstr ""
+msgstr "مصدر السطح خاطئ (لا شكل هندسي)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no faces)."
-msgstr ""
+msgstr "مصدر السطح خاطئ (لا وجوه)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Parent has no solid faces to populate."
-msgstr ""
+msgstr "الأب ليس لديه وجوه ثابته لكي تتزايد."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Couldn't map area."
-msgstr ""
+msgstr "لا يمكنه تخطيط المنطقة."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Source Mesh:"
-msgstr ""
+msgstr "حدد مصدر ميش:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Target Surface:"
-msgstr ""
+msgstr "حدد السطح المستهدÙ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate Surface"
-msgstr ""
+msgstr "تزويد السطح"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr ""
+msgstr "تزويد الميش المتعدد"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
-msgstr ""
+msgstr "السطح المستهدÙ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr ""
+msgstr "الميش المصدر:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
-msgstr ""
+msgstr "محور-X"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Y-Axis"
-msgstr ""
+msgstr "محور-Y"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Z-Axis"
-msgstr ""
+msgstr "محور-Z"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr ""
+msgstr "ميش المحاور:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
-msgstr ""
+msgstr "دوران عشوائي:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Tilt:"
-msgstr ""
+msgstr "إمالة عشوائية:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Scale:"
-msgstr ""
+msgstr "حجم عشوائي:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate"
-msgstr ""
+msgstr "تكثير/تزويد"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr ""
+msgstr "طبخ!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr ""
+msgid "Bake the navigation mesh."
+msgstr "طبخ ميش المحاور."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr ""
+msgstr "إخلاء ميش المحاور."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
-msgstr ""
+msgstr "ÙŠÙØ¬Ù‡Ø² الإعدادات..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Calculating grid size..."
-msgstr ""
+msgstr "يحسب حجم الشبكة..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating heightfield..."
-msgstr ""
+msgstr "إنشاء مجال Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Marking walkable triangles..."
@@ -4175,48 +4167,48 @@ msgstr "تعليم مثلثات التحرك.."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Constructing compact heightfield..."
-msgstr ""
+msgstr "يبني مجال Ø§Ù„Ø¥Ø±ØªÙØ§Ø¹ المدمج..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Eroding walkable area..."
-msgstr ""
+msgstr "تقويض منطقة السير..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Partitioning..."
-msgstr ""
+msgstr "تجزئة..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating contours..."
-msgstr ""
+msgstr "إنشاء المحيط..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating polymesh..."
-msgstr ""
+msgstr "إنشاء نموذج الميش..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr ""
+msgstr "يحول إلي ميش التنقل المحلي..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
-msgstr ""
+msgstr "منشئ تثبيت ميش التنقل:"
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
-msgstr ""
+msgstr "توزيع الأشكال الهندسية..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Done!"
-msgstr ""
+msgstr "تم!"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr ""
+msgstr "إنشاء Ù…ÙØ¶Ù„ع التنقل"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
-msgstr ""
+msgstr "ÙŠÙنشئ AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -4539,14 +4531,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "محدث مسبق للموارد"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4618,9 +4612,12 @@ msgid "Soft Reload Script"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "نسخ المسار"
+msgstr "نسخ مسار الكود"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "أظهر ÙÙŠ مدير Ø§Ù„Ù…Ù„ÙØ§Øª"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4809,9 +4806,8 @@ msgid "Clone Down"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "خط مطوي"
+msgstr "إلغاء/ØªÙØ¹ÙŠÙ„ طي الخط"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5055,83 +5051,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5146,6 +5142,10 @@ msgstr "حسناً :("
msgid "No parent to instance a child at."
msgstr "لا أب للصق الطÙÙ„ عليه."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "هذه العملية تتطلب عقدة واحدة محددة."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5219,16 +5219,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+msgid "Select Mode (Q)"
+msgstr "تحديد الوضع (ض)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5258,9 +5254,8 @@ msgid "Local Space Mode (%s)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "أكبس إلي الموجهات"
+msgstr "وضع الكبس (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5503,10 +5498,18 @@ msgstr "تحريك (للسابق)"
msgid "Move (After)"
msgstr "تحريك (للتالي)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5532,14 +5535,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5677,6 +5683,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5762,9 +5772,8 @@ msgid "Merge from scene?"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "مجموعة البلاط.."
+msgstr "مجموعة البلاط"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5778,6 +5787,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Ø­ÙØ¸ العنوان Ø§Ù„ÙØ±Ø¹ÙŠ Ø§Ù„Ø°ÙŠ يتم تعديله حاليا."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "إلغاء"
@@ -5885,9 +5918,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5899,6 +5930,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "لا يمكن إنشاء المجلد."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5939,14 +5978,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "إستيراد و تعديل"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "إنشاء و تعديل"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "تثبيت و تعديل"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5963,10 +6014,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6012,6 +6059,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "مدير المشروع"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6138,11 +6189,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6520,10 +6566,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6608,8 +6650,8 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+msgid "Sub-Resources"
+msgstr "مورد ÙØ±Ø¹ÙŠ"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6899,7 +6941,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6908,6 +6950,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "خطأ ÙÙŠ نسخ"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7060,9 +7106,8 @@ msgid "Select dependencies of the library for this entry"
msgstr ""
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "مسح نقطة الإنحناء"
+msgstr "مسح المدخلة الحالية"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
@@ -7259,10 +7304,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "إنشاء الحل..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "لا يمكن إنشاء الحد."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "ÙØ´Ù„ Ø­ÙØ¸ الحل."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "تم"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "ÙØ´Ù„ إنشاء مشروع C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "إنشاء حل C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "بناء المشروع"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7608,23 +7693,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr "شغل مل٠HTML Ø§Ù„Ù…ÙØµØ¯Ø± ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­ Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„Ù„Ù†Ø¸Ø§Ù…."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "لا يمكن كتابة الملÙ:\n"
+msgid "Could not write file:"
+msgstr "لا يمكن كتابة الملÙ:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير.\n"
+msgid "Could not open template for export:"
+msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr ""
+msgid "Invalid export template:"
+msgstr "إدارة قوالب التصدير:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read custom HTML shell:"
+msgstr "لا يمكن قراءة مل٠HTML مخصص:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "لا يمكن قراءة مل٠HTML مخصص:\n"
+msgid "Could not read boot splash image file:"
+msgstr "لا يمكن قراءة مل٠الإقلاع الصوري:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7641,6 +7730,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7711,7 +7807,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7770,6 +7866,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7815,8 +7918,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7881,8 +7984,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7909,6 +8012,27 @@ msgstr ""
msgid "Invalid font size."
msgstr ""
+#~ msgid "Next"
+#~ msgstr "التالي"
+
+#~ msgid "Not found!"
+#~ msgstr "لم يوجد!"
+
+#~ msgid "Replace By"
+#~ msgstr "إستبدلت بـ"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "حساسة لحالة الأحرÙ"
+
+#~ msgid "Backwards"
+#~ msgstr "إلي الخلÙ"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "تأكيد عند الإستبدال"
+
+#~ msgid "Skip"
+#~ msgstr "تخطي"
+
#~ msgid "Move Add Key"
#~ msgstr "Ù…ÙØªØ§Ø­ Ø¥Ø¶Ø§ÙØ© الحركة"
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 001ec0f321..ecef737d82 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -5,19 +5,21 @@
#
# Bojidar Marinov <bojidar.marinov.bg@gmail.com>, 2016.
# Иван Пенев (Ðдмирал ÐнимЕ) <aeternus.arcis@gmail.com>, 2016-2017.
+# Любомир ВаÑилев <lyubomirv@abv.bg>, 2018.
+# MaresPW <marespw206@gmail.com>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-07-27 06:33+0000\n"
-"Last-Translator: Иван Пенев <aeternus.arcis@gmail.com>\n"
+"PO-Revision-Date: 2018-01-24 18:44+0000\n"
+"Last-Translator: MaresPW <marespw206@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/bg/>\n"
"Language: bg\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 2.16-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -197,8 +199,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Създаване"
@@ -375,14 +376,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -391,47 +384,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ТърÑене"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -549,9 +510,17 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Създаване на нов проект"
+msgstr "Създайте нов/а %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -655,7 +624,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -731,17 +700,16 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "ДиÑпечер на проектите"
+msgstr "ОÑнователи на проекта"
#: editor/editor_about.cpp
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "ДиÑпечер на проектите"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Ръководител на проекта "
#: editor/editor_about.cpp
msgid "Developers"
@@ -796,14 +764,12 @@ msgid ""
msgstr ""
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Съдържание:"
+msgstr "Ð’Ñички компоненти"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Съдържание:"
+msgstr "Компоненти"
#: editor/editor_about.cpp
msgid "Licenses"
@@ -814,9 +780,8 @@ msgid "Error opening package file, not in zip format."
msgstr ""
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Извършва Ñе повторно внаÑÑне"
+msgstr "Разархивиране на активи"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
@@ -828,7 +793,7 @@ msgid "Success!"
msgstr "Готово!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "ИнÑталиране"
@@ -897,9 +862,8 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Bus options"
-msgstr "ÐаÑтройки за отÑтранÑване на грешки"
+msgstr "ÐаÑтройки на шината"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -927,9 +891,8 @@ msgid "Master bus can't be deleted!"
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Изтриване на анимациÑта?"
+msgstr "Изтриване звуковата шина"
#: editor/editor_audio_buses.cpp
msgid "Duplicate Audio Bus"
@@ -1101,9 +1064,8 @@ msgid "[unsaved]"
msgstr ""
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "МолÑ, първо запазете Ñцената."
+msgstr "МолÑ, първо изберете оÑновна папка"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
@@ -1139,7 +1101,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1147,9 +1109,8 @@ msgid "File Exists, Overwrite?"
msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select Current Folder"
-msgstr "Създаване на папка"
+msgstr "Избиране на текущата папка"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
@@ -1160,9 +1121,8 @@ msgid "Show In File Manager"
msgstr ""
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "New Folder.."
-msgstr "Създаване на папка"
+msgstr "Ðова папка.."
#: editor/editor_file_dialog.cpp
msgid "Refresh"
@@ -1239,9 +1199,8 @@ msgid "Move Favorite Down"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Go to parent folder"
-msgstr "ÐеуÑпешно Ñъздаване на папка."
+msgstr "Към горната папка"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
@@ -1310,9 +1269,8 @@ msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Public Methods"
-msgstr "Изберете метод"
+msgstr "Публични методи"
#: editor/editor_help.cpp
msgid "Public Methods:"
@@ -1331,9 +1289,8 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Enumerations"
-msgstr "Преходи"
+msgstr "Изброени типове"
#: editor/editor_help.cpp
msgid "Enumerations:"
@@ -1344,18 +1301,27 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Constants"
-msgstr "ПоÑтоÑнно"
+msgstr "КонÑтанти"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "ОпиÑание:"
+msgstr "ОпиÑание"
+
+#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
#: editor/editor_help.cpp
msgid "Properties"
@@ -1372,9 +1338,8 @@ msgid ""
msgstr ""
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods"
-msgstr "Изберете метод"
+msgstr "Методи"
#: editor/editor_help.cpp
msgid "Method Description:"
@@ -1390,6 +1355,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1401,6 +1370,11 @@ msgstr ""
msgid "Clear"
msgstr "ИзчиÑтване"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Ðова Ñцена"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1409,8 +1383,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1431,23 +1405,20 @@ msgid "Can't open '%s'."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while parsing '%s'."
-msgstr "Имаше грешка при внаÑÑнето на Ñцената."
+msgstr "Грешка при анализа на „%s“."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Missing '%s' or its dependencies."
-msgstr "Сцената '%s' има нарушени завиÑимоÑти:"
+msgstr "ЛипÑва „%s“ или Ñъответните завиÑимоÑти."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while loading '%s'."
-msgstr "Имаше грешка при зареждане на Ñцената."
+msgstr "Грешка при зареждането на „%s“."
#: editor/editor_node.cpp
msgid "Saving Scene"
@@ -1467,7 +1438,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -1626,9 +1598,8 @@ msgid "Quick Open Script.."
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Запазване на файл"
+msgstr "Запазване и затварÑне"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
@@ -1639,9 +1610,8 @@ msgid "Save Scene As.."
msgstr "Запазване на Ñцената като.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Възел"
+msgstr "Ðе"
#: editor/editor_node.cpp
msgid "Yes"
@@ -1705,9 +1675,8 @@ msgid "Open Project Manager?"
msgstr "ДиÑпечер на проектите"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Запазване на файл"
+msgstr "Запазване и изход"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
@@ -2028,6 +1997,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ТърÑене"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2410,7 +2386,7 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "Имаше грешка при изнаÑÑне на проекта!"
#: editor/export_template_manager.cpp
@@ -2574,9 +2550,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2584,22 +2558,22 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "Имаше грешка при внаÑÑнето:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Имаше грешка при внаÑÑнето:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "Сцената '%s' има нарушени завиÑимоÑти:"
#: editor/filesystem_dock.cpp
@@ -3247,6 +3221,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Изтриване на анимациÑта?"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3413,6 +3392,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3716,19 +3696,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4102,7 +4085,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4491,15 +4474,18 @@ msgstr ""
msgid "Paste"
msgstr "ПоÑтавÑне"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
+#, fuzzy
+msgid "Close and save changes?"
+msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4575,6 +4561,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5009,83 +4999,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5100,6 +5090,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5175,16 +5169,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Избиране на вÑичко"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5461,10 +5451,18 @@ msgstr "ПоÑтавÑне на възелите"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5490,14 +5488,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5636,6 +5637,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5738,6 +5743,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Избиране на текущата папка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Отказ"
@@ -5847,10 +5877,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "МолÑ, изнеÑете извън папката на проекта!"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "МолÑ, изнеÑете извън папката на проекта!"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5861,6 +5890,15 @@ msgid "Imported Project"
msgstr "ВнеÑен проект"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "ÐеуÑпешно Ñъздаване на папка."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5902,14 +5940,29 @@ msgid "Import Existing Project"
msgstr "ВнаÑÑне на ÑъщеÑтвуващ проект"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "ВнаÑÑне и отварÑне"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Създаване на нов проект"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Създаване"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "ИнÑталиране"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Име:"
@@ -5927,10 +5980,6 @@ msgid "Browse"
msgstr "Разглеждане"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5977,6 +6026,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ДиÑпечер на проектите"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "СпиÑък Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸"
@@ -6104,11 +6157,6 @@ msgid "Button 9"
msgstr "Копче 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6490,10 +6538,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6578,7 +6622,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6881,7 +6925,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Грешки"
@@ -6890,6 +6934,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Грешки"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7256,10 +7305,52 @@ msgstr "ÐаÑтройки"
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "ÐеуÑпешно Ñъздаване на папка."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Проект"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7610,26 +7701,31 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "ÐеуÑпешно Ñъздаване на папка."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "ÐеуÑпешно Ñъздаване на папка."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "ÐеуÑпешно Ñъздаване на папка."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "ÐеуÑпешно Ñъздаване на папка."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "ÐеуÑпешно Ñъздаване на папка."
#: scene/2d/animated_sprite.cpp
@@ -7649,6 +7745,13 @@ msgstr ""
"Може да има Ñамо един видим CanvasModulate на Ñцене (или нÑколко "
"инÑтанцирани Ñцени). Само първиÑÑ‚ ще работи, а вÑички оÑтанали - игнорирани."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7734,7 +7837,7 @@ msgstr "PathFollow2D работи Ñамо когато е наÑледник н
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7795,6 +7898,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7840,8 +7950,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7910,8 +8020,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7985,9 +8095,6 @@ msgstr ""
#~ msgid "Import Anyway"
#~ msgstr "ВнаÑÑне въпреки това"
-#~ msgid "Import & Open"
-#~ msgstr "ВнаÑÑне и отварÑне"
-
#~ msgid "Import Image:"
#~ msgstr "ВнаÑÑне на изображение:"
@@ -8027,9 +8134,6 @@ msgstr ""
#~ msgid "Invalid project path, the path must exist!"
#~ msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!"
-#~ msgid "Close scene? (Unsaved changes will be lost)"
-#~ msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)"
-
#, fuzzy
#~ msgid "Error creating the signature object."
#~ msgstr "Имаше грешка при изнаÑÑне на проекта!"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 63719c1a8b..b50fc38439 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -200,8 +200,7 @@ msgstr "%d à¦à¦° জনà§à¦¯ নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমà
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "তৈরি করà§à¦¨"
@@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d সংখà§à¦¯à¦• সংঘটন পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¿à¦¤ হয়েছে ।"
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) মিল করà§à¦¨"
@@ -395,48 +386,16 @@ msgid "Whole Words"
msgstr "সমà§à¦ªà§‚রà§à¦£ শবà§à¦¦"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "পরবরà§à¦¤à§€"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "পিছনের/অতীতের দিকে"
+msgid "Replace"
+msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨à§‡ অবহিত করà§à¦¨"
+msgid "Replace All"
+msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "অতিকà§à¦°à¦® করে যান"
+msgid "Selection Only"
+msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -557,6 +516,16 @@ msgstr "সংকেতসমূহ"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "নতà§à¦¨ তৈরি করà§à¦¨"
@@ -669,7 +638,8 @@ msgstr ""
"তবà§à¦“ তাদের অপসারণ করবেন? (অফেরৎযোগà§à¦¯)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "অপসারণ সমà§à¦­à¦¬ নয় :\n"
#: editor/dependency_editor.cpp
@@ -752,8 +722,9 @@ msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ ফাউনà§à¦¡à¦¾à¦°"
msgid "Lead Developer"
msgstr "মূল ডেভেলপার"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
#: editor/editor_about.cpp
@@ -841,7 +812,7 @@ msgid "Success!"
msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "ইনà§à¦¸à¦Ÿà¦²"
@@ -1157,7 +1128,8 @@ msgid "Packing"
msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল পাওয়া যায়নি:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1381,6 +1353,22 @@ msgstr "বরà§à¦£à¦¨à¦¾:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Online Tutorials:"
+msgstr "টিউটোরিয়ালসমূহ"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"à¦à¦‡ মেথড সমà§à¦ªà¦°à§à¦•ে বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯ লিপিবদà§à¦§ করা হয়নি। অনà§à¦—à§à¦°à¦¹ করে তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨à§‡à¦° মাধà§à¦¯à¦®à§‡ "
+"সহায়তা করà§à¦¨à¥¤ তথà§à¦¯ পà§à¦°à¦¦à¦¾à¦¨à§‡à¦° জনà§à¦¯ [color=$color][url=$url], [/url][/color] ফরমà§à¦¯à¦¾à¦Ÿ "
+"বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦° করà§à¦¨ !"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Properties"
msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
@@ -1419,6 +1407,10 @@ msgstr ""
msgid "Search Text"
msgstr "টেকà§à¦¸à¦Ÿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨"
+
#: editor/editor_log.cpp
#, fuzzy
msgid "Output:"
@@ -1431,6 +1423,11 @@ msgstr " আউটপà§à¦Ÿ/ফলাফল:"
msgid "Clear"
msgstr "পরিসà§à¦•ার করà§à¦¨/কà§à¦²à§€à§Ÿà¦¾à¦°"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "আউটপà§à¦Ÿ/ফলাফল"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
@@ -1439,8 +1436,8 @@ msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়
msgid "Save Resource As.."
msgstr "রিসোরà§à¦¸ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "বà§à¦à¦²à¦¾à¦®.."
@@ -1498,8 +1495,10 @@ msgid "This operation can't be done without a tree root."
msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"দৃশà§à¦¯à¦Ÿà¦¿ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না। সমà§à¦­à¦¬à¦¤ যেসবের (ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸) উপর নিরà§à¦­à¦° করছে তাদের "
"সনà§à¦¤à§à¦·à§à¦Ÿ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না।"
@@ -2124,6 +2123,13 @@ msgstr "হেলà§à¦ª"
msgid "Classes"
msgstr "কà§à¦²à¦¾à¦¸à¦¸à¦®à§‚হ"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Online Docs"
@@ -2525,7 +2531,7 @@ msgstr "টেমপà§à¦²à§‡à¦Ÿà§‡ version.txt খà§à¦à¦œà§‡ পাওয়া
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/export_template_manager.cpp
@@ -2706,9 +2712,8 @@ msgid "View items as a list"
msgstr "লিসà§à¦Ÿ হিসেবে আইটেম দেখà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"সà§à¦Ÿà§à¦¯à¦¾à¦Ÿà¦¾à¦¸: ফাইল ইমà§à¦ªà§‹à¦°à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে। অনà§à¦—à§à¦°à¦¹ করে ফাইলটি ঠিক করà§à¦¨ à¦à¦¬à¦‚ মà§à¦¯à¦¾à¦¨à§à¦¯à¦¼à¦¾à¦²à¦¿ পà§à¦¨à¦°à¦¾à§Ÿ "
@@ -2721,22 +2726,22 @@ msgstr "ফনà§à¦Ÿà§‡à¦° উৎস লোড/পà§à¦°à¦¸à§‡à¦¸ করা সà
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr "ফাইলকে তার নিজের উপরেই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦­à¦¬ নয়:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "লোডে সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "'%s' দৃশà§à¦¯à¦Ÿà¦¿à¦° অসংলগà§à¦¨ নিরà§à¦­à¦°à¦¤à¦¾ রয়েছে:"
#: editor/filesystem_dock.cpp
@@ -3406,6 +3411,11 @@ msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ কর
msgid "Filters.."
msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "মà§à¦•à§à¦¤ করে দিন"
@@ -3579,6 +3589,7 @@ msgid "Bake Lightmaps"
msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
@@ -3899,6 +3910,14 @@ msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
msgid "Adding %s..."
msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "ঠিক আছে"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3910,11 +3929,6 @@ msgid "Error instancing scene from %s"
msgstr "%s হতে দৃশà§à¦¯ ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করাতে সমসà§à¦¯à¦¾ হয়েছে"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•টি à¦à¦•ক নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোড পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "ডিফলà§à¦Ÿ ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -4300,7 +4314,7 @@ msgstr "সিদà§à¦§/বেকà§â€Œ!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
#, fuzzy
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr "Navigation Mesh তৈরি করà§à¦¨"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4716,15 +4730,19 @@ msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
msgid "Paste"
msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "রিসোরà§à¦¸-à¦à¦° পথ"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
msgstr "বোনà§â€Œ/হাড় পরিষà§à¦•ার করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"বনà§à¦§ à¦à¦¬à¦‚ পরিবরà§à¦¤à¦¨ সংরকà§à¦·à¦£ করবেন?\n"
"\""
@@ -4804,6 +4822,11 @@ msgid "Copy Script Path"
msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "ফাইলসিসà§à¦Ÿà§‡à¦®"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr "পূরà§à¦¬à§‡à¦° ইতিহাস"
@@ -5248,50 +5271,6 @@ msgid "Rotating %s degrees."
msgstr "%s ডিগà§à¦°à¦¿ ঘূরà§à¦£à¦¿à¦¤ হচà§à¦›à§‡à¥¤"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "নিমà§à¦¨"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "শীরà§à¦· দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "পশà§à¦šà¦¾à§Ž"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "সনà§à¦®à§à¦–"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "বাম দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "বাম"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "ডান দরà§à¦¶à¦¨à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "ডান"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Keying is disabled (no key inserted)."
msgstr "চাবিসংযোক নিষà§à¦•à§à¦°à¦¿à§Ÿ আছে (কোনো চাবি সংযà§à¦•à§à¦¤ হয়নি)।"
@@ -5332,6 +5311,50 @@ msgid "FPS"
msgstr "à¦à¦« পি à¦à¦¸"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View."
+msgstr "শীরà§à¦· দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View."
+msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom"
+msgstr "নিমà§à¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View."
+msgstr "বাম দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left"
+msgstr "বাম"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View."
+msgstr "ডান দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right"
+msgstr "ডান"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View."
+msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front"
+msgstr "সনà§à¦®à§à¦–"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View."
+msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨à¥¤"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear"
+msgstr "পশà§à¦šà¦¾à§Ž"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
msgstr "দরà§à¦¶à¦¨à§‡à¦° সাথে সারিবদà§à¦§ করà§à¦¨"
@@ -5343,6 +5366,10 @@ msgstr "ঠিক আছে :("
msgid "No parent to instance a child at."
msgstr "ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করার জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ ধারক উপসà§à¦¥à¦¿à¦¤ নেই।"
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•টি à¦à¦•ক নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোড পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Normal পà§à¦°à¦¦à¦°à§à¦¶à¦¨"
@@ -5425,17 +5452,12 @@ msgid "Freelook Speed Modifier"
msgstr "ফà§à¦°à¦¿ লà§à¦• সà§à¦ªà¦¿à¦¡ মডিফায়ার"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm à¦à¦° সংলাপ"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "মোড (Mode) বাছাই করà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5720,10 +5742,20 @@ msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
msgid "Move (After)"
msgstr "বামে সরান"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ সà§à¦¤à§‚প করà§à¦¨"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox পà§à¦°à¦¿à¦­à¦¿à¦‰:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
+
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Set Region Rect"
@@ -5750,14 +5782,17 @@ msgid "Auto Slice"
msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ টà§à¦•রো"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "অফসেট/ভারসামà§à¦¯:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "পদকà§à¦·à§‡à¦ª:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "বিচà§à¦›à§‡à¦¦:"
@@ -5898,6 +5933,10 @@ msgstr "ফনà§à¦Ÿ"
msgid "Color"
msgstr "রঙ"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "থিম"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -6003,6 +6042,32 @@ msgstr "দৃশà§à¦¯ হতে à¦à¦•তà§à¦°à¦¿à¦¤ করবেন"
msgid "Error"
msgstr "সমসà§à¦¯à¦¾/ভà§à¦²"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ টà§à¦•রো"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "বাতিল"
@@ -6134,12 +6199,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿ à¦à¦•টি খালি ফোলà§à¦¡à¦¾à¦°à§‡ তৈরি করা হবে (আপনি চাইলে à¦à¦•টি নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° তৈরি "
-"করতে পারেন)।"
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6150,6 +6212,15 @@ msgid "Imported Project"
msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿà¦Ÿà¦¿à¦° জনà§à¦¯ à¦à¦•টি নাম নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করà§à¦¨à¥¤"
@@ -6195,14 +6266,29 @@ msgid "Import Existing Project"
msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª তৈরি করà§à¦¨"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Emitter তৈরি করà§à¦¨"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:"
@@ -6220,10 +6306,6 @@ msgid "Browse"
msgstr "বà§à¦°à¦¾à¦‰à¦¸"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "দারà§à¦£ খবর!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
@@ -6280,6 +6362,10 @@ msgstr ""
"সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° তালিকা"
@@ -6409,11 +6495,6 @@ msgid "Button 9"
msgstr "বোতাম ৯"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
-
-#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "জয়সà§à¦Ÿà¦¿à¦• অকà§à¦· ইনà§à¦¡à§‡à¦•à§à¦¸:"
@@ -6815,10 +6896,6 @@ msgid "Error loading scene from %s"
msgstr "%s হতে দৃশà§à¦¯ লোড করতে সমসà§à¦¯à¦¾ হয়েছে"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "ঠিক আছে"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6908,7 +6985,7 @@ msgstr "দৃশà§à¦¯ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করে সংরকà§à¦·
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "রিসোরà§à¦¸à¦¸à¦®à§‚হ:"
#: editor/scene_tree_dock.cpp
@@ -7230,7 +7307,7 @@ msgstr "ফাংশন:"
msgid "Pick one or more items from the list to display the graph."
msgstr "গà§à¦°à¦¾à¦« পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করতে তালিকা থেকে à¦à¦• বা à¦à¦•াধিক আইটেম বাছাই করà§à¦¨à¥¤"
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "সমসà§à¦¯à¦¾à¦¸à¦®à§‚হ"
@@ -7239,6 +7316,11 @@ msgid "Child Process Connected"
msgstr "চাইলà§à¦¡ পà§à¦°à¦¸à§‡à¦¸ সংযà§à¦•à§à¦¤ হয়েছে"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "ভà§à¦²/সমসà§à¦¯à¦¾-সমূহ লোড করà§à¦¨"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ পরীকà§à¦·à¦¾ করà§à¦¨"
@@ -7605,10 +7687,58 @@ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª সেটিংস"
msgid "Pick Distance:"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি করা হচà§à¦›à§‡"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া তৈরি করা সমà§à¦­à¦¬ হয়নি!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "মনো"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া তৈরি করà§à¦¨"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "সতরà§à¦•তা"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7991,27 +8121,32 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: scene/2d/animated_sprite.cpp
@@ -8030,6 +8165,13 @@ msgstr ""
"পà§à¦°à¦¤à¦¿ দৃশà§à¦¯à§‡ (অথবা ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸à¦¡ দৃশà§à¦¯à§‡à¦° সমà§à¦®à§‡à¦²à¦¨à§‡) সরà§à¦¬à§‹à¦šà§à¦š à¦à¦•টি দৃশà§à¦¯à¦®à¦¾à¦¨ CanvasModulate "
"সমà§à¦­à¦¬à¥¤ সরà§à¦¬à¦ªà§à¦°à¦¥à¦®à§‡à¦°à¦Ÿà¦¿ দৃশà§à¦¯à¦¤ হলেও বাকিগà§à¦²à§‹ বাতিল হয়ে যাবে।"
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -8113,7 +8255,7 @@ msgstr "PathFollow2D à¦à¦•মাতà§à¦° Path2D à¦à¦° অংশ হিসেà
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8177,6 +8319,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr "ছবিসমূহ বà§à¦²à¦¿à¦Ÿà¦¿à¦‚ (Blitting) করা হচà§à¦›à§‡"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8235,8 +8384,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8310,8 +8459,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -8342,6 +8491,41 @@ msgstr "ফনà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েà¦
msgid "Invalid font size."
msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
+#~ msgid "Next"
+#~ msgstr "পরবরà§à¦¤à§€"
+
+#~ msgid "Not found!"
+#~ msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
+
+#~ msgid "Replace By"
+#~ msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) সংবেদনশীল"
+
+#~ msgid "Backwards"
+#~ msgstr "পিছনের/অতীতের দিকে"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨à§‡ অবহিত করà§à¦¨"
+
+#~ msgid "Skip"
+#~ msgstr "অতিকà§à¦°à¦® করে যান"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "আপনার পà§à¦°à¦œà§‡à¦•à§à¦Ÿ à¦à¦•টি খালি ফোলà§à¦¡à¦¾à¦°à§‡ তৈরি করা হবে (আপনি চাইলে à¦à¦•টি নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° "
+#~ "তৈরি করতে পারেন)।"
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "দারà§à¦£ খবর!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
+
#~ msgid "Move Add Key"
#~ msgstr "অà§à¦¯à¦¾à¦¡ কি মà§à¦­ করà§à¦¨"
@@ -8430,9 +8614,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
#~ msgid "Filter:"
#~ msgstr "ফিলà§à¦Ÿà¦¾à¦°:"
-#~ msgid "Theme"
-#~ msgstr "থিম"
-
#~ msgid "Method List For '%s':"
#~ msgstr "'%s' à¦à¦° জনà§à¦¯ মেথডের তালিকা:"
@@ -8697,9 +8878,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
#~ msgid "Import Anyway"
#~ msgstr "যেকোনো উপায়েই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-#~ msgid "Import & Open"
-#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr "সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ সংরকà§à¦·à¦£ করা হয়নি, তবà§à¦“ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা দৃশà§à¦¯à¦Ÿà¦¿ খà§à¦²à¦¬à§‡à¦¨?"
@@ -8955,9 +9133,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
#~ msgid "Stereo"
#~ msgstr "সà§à¦Ÿà§‡à¦°à¦¿à¦“"
-#~ msgid "Mono"
-#~ msgstr "মনো"
-
#~ msgid "Pitch"
#~ msgstr "পিচà§â€Œ"
@@ -9120,9 +9295,6 @@ msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "বহি:সà§à¦¥ রিসোরà§à¦¸à§‡à¦° পরিবরà§à¦¤à¦¨à§‡ সতরà§à¦• করে।"
-#~ msgid "Tutorials"
-#~ msgstr "টিউটোরিয়ালসমূহ"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "টিউটোরিয়ালের সà§à¦¥à¦¾à¦¨à§‡ https://godotengine.org খà§à¦²à§à¦¨à¥¤"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 6c30c703c1..91d1d55e64 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -4,12 +4,12 @@
# This file is distributed under the same license as the Godot source code.
#
# BennyBeat <bennybeat@gmail.com>, 2017.
-# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2017.
+# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:42+0000\n"
+"PO-Revision-Date: 2018-01-24 02:50+0000\n"
"Last-Translator: Roger Blanco Ribera <roger.blancoribera@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
@@ -17,7 +17,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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -28,9 +28,8 @@ msgid "All Selection"
msgstr "Tota la Selecció"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Modifica el Valor"
+msgstr "Modifica el temps de la clau"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -41,9 +40,8 @@ msgid "Anim Change Transform"
msgstr "Modifica la Transformació de l'Animació"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Modifica el Valor"
+msgstr "Modifica el valor de la clau"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -199,8 +197,7 @@ msgstr "Voleu crear %d NOVES pistes i inserir-hi claus?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Crea"
@@ -378,14 +375,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d ocurrència/es reemplaçades."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Reemplaça"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Reemplaça-hoTot"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Distingeix entre majúscules i minúscules"
@@ -394,48 +383,16 @@ msgid "Whole Words"
msgstr "Paraules senceres"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Selecció Només"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cerca"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Troba"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Següent"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "No s'ha trobat!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Reemplaça per"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Majúscules i minúscules"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Enrere"
+msgid "Replace"
+msgstr "Reemplaça"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Indica en reemplaçar"
+msgid "Replace All"
+msgstr "Reemplaça-hoTot"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Omet"
+msgid "Selection Only"
+msgstr "Selecció Només"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -537,9 +494,8 @@ msgid "Connecting Signal:"
msgstr "Connectant Senyal:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Connecta '%s' amb '%s'"
+msgstr "Desconnecta '%s' de '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -555,9 +511,17 @@ msgid "Signals"
msgstr "Senyals"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Modifica el Tipus de %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Modifica"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Crea Nou"
+msgstr "Crea Nou %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -668,8 +632,8 @@ msgstr ""
"Voleu Eliminar-los de totes maneres? (No es pot desfer!)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "No es pot eliminar:\n"
+msgid "Cannot remove:"
+msgstr "No es pot eliminar:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -751,9 +715,9 @@ msgstr "Fundadors del Projecte"
msgid "Lead Developer"
msgstr "Desenvolupador Principal"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestor del Projecte"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Gestor del Projecte "
#: editor/editor_about.cpp
msgid "Developers"
@@ -841,7 +805,7 @@ msgid "Success!"
msgstr "Èxit!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instal·la"
@@ -862,9 +826,8 @@ msgid "Rename Audio Bus"
msgstr "Reanomena Bus d'Àudio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Commuta el solo del Bus d'àudio"
+msgstr "Modifica el Volum del Bus d'àudio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -929,7 +892,7 @@ msgstr "Elimina l'Efecte"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Àudio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1110,13 +1073,12 @@ msgid "Updating scene.."
msgstr "S'està actualitzant l'escena.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(buit)"
+msgstr "[buit]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[no desat]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1156,8 +1118,8 @@ msgid "Packing"
msgstr "Compressió"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "No s'ha trobat la Plantilla:\n"
+msgid "Template file not found:"
+msgstr "No s'ha trobat la Plantilla:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1368,6 +1330,20 @@ msgid "Description"
msgstr "Descripció"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Tutorials en línia:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Aquesta classe no disposa encara de cap Tutorial. Podeu contribuir [color="
+"$color][url=$url] tot aportant-ne un[/url][/color] o [color=$color][url="
+"$url2]sol·licitant-lo[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propietats"
@@ -1403,6 +1379,10 @@ msgstr ""
msgid "Search Text"
msgstr "Cerca Text"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Troba"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Sortida:"
@@ -1414,6 +1394,10 @@ msgstr "Sortida:"
msgid "Clear"
msgstr "Neteja"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Buida la Sortida"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Error en desar recurs!"
@@ -1422,8 +1406,8 @@ msgstr "Error en desar recurs!"
msgid "Save Resource As.."
msgstr "Anomena i Desa el Recurs..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Vaja..."
@@ -1477,10 +1461,11 @@ msgstr "Aquesta operació no es pot fer sense cap arrel d'arbre."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"No s'ha pogut desar l'escena. Probablement, no s'han pogut establir totes "
-"les dependències (instàncies)."
+"les dependències (instàncies o herències)."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -2092,6 +2077,13 @@ msgstr "Ajuda"
msgid "Classes"
msgstr "Classes"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cerca"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentació en línia"
@@ -2363,14 +2355,12 @@ msgid "Frame #:"
msgstr "Fotograma núm.:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Temps:"
+msgstr "Temps"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Crida"
+msgstr "Crides"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2477,8 +2467,8 @@ 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:\n"
-msgstr "Error en crear el camí per a les plantilles:\n"
+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"
@@ -2513,7 +2503,6 @@ msgstr "Cap resposta."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Ha fallat la sol·licitud."
@@ -2561,7 +2550,6 @@ msgid "Connecting.."
msgstr "Connexió en marxa..."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "No es pot connectar"
@@ -2637,33 +2625,28 @@ msgid "View items as a list"
msgstr "Visualitza en una llista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-"\n"
-"Estat: No s'ha pogut importar. Corregiu el fitxer i torneu a importar."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
+msgstr "Estat: No s'ha pogut importar. Corregiu el fitxer i torneu a importar."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "No es pot moure/reanomenar l'arrel dels recursos."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "No es pot moure un directori dins si mateix:\n"
+msgid "Cannot move a folder into itself."
+msgstr "No es pot moure un directori dins si mateix."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Error en moure:\n"
+msgid "Error moving:"
+msgstr "Error en moure:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Error en carregar:"
+msgid "Error duplicating:"
+msgstr "Error en duplicar:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "No s'han pogut actualitzar les dependències:\n"
+msgid "Unable to update dependencies:"
+msgstr "No s'han pogut actualitzar les dependències:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2694,14 +2677,12 @@ msgid "Renaming folder:"
msgstr "Reanomenant directori:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplica"
+msgstr "S'està duplicant el fitxer:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Reanomenant directori:"
+msgstr "S'està duplicant el directori:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2720,9 +2701,8 @@ msgid "Move To.."
msgstr "Mou cap a..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Obre una Escena"
+msgstr "Obre Escenes"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2737,9 +2717,8 @@ msgid "View Owners.."
msgstr "Mostra Propietaris..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplica"
+msgstr "Duplica.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2834,14 +2813,12 @@ msgid "Importing Scene.."
msgstr "Important Escena..."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Generant AABB"
+msgstr "S'estan generant els Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Generant AABB"
+msgstr "S'està generant per a la Malla: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3310,6 +3287,10 @@ msgstr "Edita els filtres de Node"
msgid "Filters.."
msgstr "Filtres..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "Arbre d'Animació"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Allibera"
@@ -3459,23 +3440,31 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"No es pot determinar un camí per desar les imatges corresponents als "
+"lightmaps.\n"
+"Deseu l'escena ( les imatges es desaran en el mateix directori), o trieu un "
+"camí des de les propietats de BakedLightmap."
#: 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 ""
+"Cap Malla per precalcular. Comproveu que disposin d'un canal d'UV2 i que "
+"l'indicador 'Bake Light' és activat."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"No s'han pogut crear les imatges de lightmap. Comproveu que el camí tingui "
+"permisos d'escriptura."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Modifica el Radi de Llum"
+msgstr "Precalcular Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Previsualització"
@@ -3780,6 +3769,14 @@ msgstr "Afegeix %s"
msgid "Adding %s..."
msgstr "Afegint %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "D'acord"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "No es poden instanciar múltiples nodes sense cap arrel."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3791,11 +3788,6 @@ msgid "Error instancing scene from %s"
msgstr "Error en instanciar l'escena des de %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Aquesta operació requereix un únic node seleccionat."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Modifica el tipus per defecte"
@@ -3903,7 +3895,7 @@ msgstr "Prem Maj. per editar les tangents individualment"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr "Calcula la Sonda d' IG"
+msgstr "Precalcula la Sonda d'IG"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3988,19 +3980,19 @@ msgstr "Crea un malla de Navegació"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "La Malla continguda no és del tipus ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "No s'han pogut desembolcar les UV. Comproveu la topologia de la malla"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Cap malla per depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "El model no té UVs en aquesta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4043,18 +4035,16 @@ msgid "Create Outline Mesh.."
msgstr "Crea una malla de contorn..."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Vista"
+msgstr "Visualitza UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Vista"
+msgstr "Visualitza UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Desembolcalla UV2 per a Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4169,8 +4159,8 @@ msgid "Bake!"
msgstr "Calcula!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Cou la malla de navegació.\n"
+msgid "Bake the navigation mesh."
+msgstr "Precalcula la malla de navegació."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4558,17 +4548,17 @@ msgstr "Carrega un Recurs"
msgid "Paste"
msgstr "Enganxa"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ResourcePreloader"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Buida la llista de Fitxers recents"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Tancar i desar els canvis?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Tancar i desar els canvis?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4639,9 +4629,12 @@ msgid "Soft Reload Script"
msgstr "Recarrega parcialment l'Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Copia Camí"
+msgstr "Copia el camí de l'Script"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Mostra'l en el Sistema de Fitxers"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4834,9 +4827,8 @@ msgid "Clone Down"
msgstr "Clona avall"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Desplega la línia"
+msgstr "(Des)Plega la línia"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5080,84 +5072,84 @@ msgid "Rotating %s degrees."
msgstr "Rotació de %s graus."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vista inferior."
+msgid "Keying is disabled (no key inserted)."
+msgstr "l'Edició de Claus està inhabilitada (no s'ha inserit cap Clau)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Part inferior"
+msgid "Animation Key Inserted."
+msgstr "S'ha insertit una Clau d'Animació."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vista superior."
+msgid "Objects Drawn"
+msgstr "Objectes Dibuixats"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vista Posterior."
+msgid "Material Changes"
+msgstr "Canvis de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Darrere"
+msgid "Shader Changes"
+msgstr "Canvis de Ombreig"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vista Frontal."
+msgid "Surface Changes"
+msgstr "Canvis de superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Davant"
+msgid "Draw Calls"
+msgstr "Crides de Dibuix"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vista esquerra."
+msgid "Vertices"
+msgstr "Vèrtexs"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Esquerra"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vista Dreta."
+msgid "Top View."
+msgstr "Vista superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Dreta"
+msgid "Bottom View."
+msgstr "Vista inferior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "l'Edició de Claus està inhabilitada (no s'ha inserit cap Clau)."
+msgid "Bottom"
+msgstr "Part inferior"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "S'ha insertit una Clau d'Animació."
+msgid "Left View."
+msgstr "Vista esquerra."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Objectes Dibuixats"
+msgid "Left"
+msgstr "Esquerra"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Canvis de Material"
+msgid "Right View."
+msgstr "Vista Dreta."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Canvis de Ombreig"
+msgid "Right"
+msgstr "Dreta"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Canvis de superfície"
+msgid "Front View."
+msgstr "Vista Frontal."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Crides de Dibuix"
+msgid "Front"
+msgstr "Davant"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vèrtexs"
+msgid "Rear View."
+msgstr "Vista Posterior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Darrere"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5171,6 +5163,10 @@ msgstr "Buenu, pos molt bé, pos adiós... :("
msgid "No parent to instance a child at."
msgstr "No hi ha cap node Pare per instanciar-li un fill."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Aquesta operació requereix un únic node seleccionat."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Mostra les Normals"
@@ -5244,16 +5240,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de la Velocitat de la Vista Lliure"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "Previsualització"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diàleg XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Mode Selecció (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Mode Selecció (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5282,14 +5274,12 @@ msgid "Local Coords"
msgstr "Coordenades Locals"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Mode Escala (R)"
+msgstr "Mode Espai Local (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Mode Imant:"
+msgstr "Mode Imant (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5406,7 +5396,7 @@ msgstr "Configuració"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Visibilitat del giny esquelet"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5532,10 +5522,18 @@ msgstr "Mou (Abans)"
msgid "Move (After)"
msgstr "Mou (Després)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Previsualització del StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Defineix la Regió Rectangular"
@@ -5561,14 +5559,17 @@ msgid "Auto Slice"
msgstr "Auto Tall"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "òfset:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Pas:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separació:"
@@ -5706,6 +5707,10 @@ msgstr "Lletra"
msgid "Color"
msgstr "Color"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Elimina la Selecció"
@@ -5791,9 +5796,8 @@ msgid "Merge from scene?"
msgstr "Combinar-ho a partir de l'escena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet..."
+msgstr "Tile Set"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5807,6 +5811,34 @@ msgstr "Combina-ho a partir de l'Escena"
msgid "Error"
msgstr "Error"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "AutoTiles"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Selecciona una sub-tessel·la com a icona. També s'utilitzarà per les "
+"assignacions automàtiques no-vàlides de l'autotile."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"clic Esquerra: activa el bit\n"
+"clic Dreta: desactiva el bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Selecciona la sub-tessel·la en edició."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Selecciona una sub-tessel·la per a modificar-ne la prioritat."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Cancel·la"
@@ -5919,12 +5951,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Selecciona un fitxer 'projecte.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"El projecte es crearà en un directori ja existent (Si s'escau, creeu un "
-"directori nou)."
+msgid "Please choose an empty folder."
+msgstr "Selecciona un directori buit."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5936,6 +5964,14 @@ msgid "Imported Project"
msgstr "Project importat"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "No s'ha pogut crear el directori."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "Ja hi ha un directori amb el mateix nom en aquest camí."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Fóra bo anomenar el projecte."
@@ -5976,14 +6012,26 @@ msgid "Import Existing Project"
msgstr "Importa un Projecte existent"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importa i Edita"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Crea un Projecte nou"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Crea i Edita"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Instal·la el Projecte:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Instal·la i Edita"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nom del Projecte:"
@@ -6000,10 +6048,6 @@ msgid "Browse"
msgstr "Navega"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projecte sense nom"
@@ -6058,6 +6102,10 @@ msgid ""
msgstr "S'examinaran %s directoris a la recerca de projectes. Ho Confirmeu?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestor del Projecte"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Llista de Projectes"
@@ -6186,11 +6234,6 @@ msgid "Button 9"
msgstr "Botó 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Modifica"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ãndex de l'eix de la maneta:"
@@ -6203,9 +6246,8 @@ msgid "Joypad Button Index:"
msgstr "Ãndex del Botó de la Maneta:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Elimina la Incidència d'Acció d'Entrada"
+msgstr "Elimina l'Acció d'Entrada"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6453,7 +6495,7 @@ msgstr "Script Nou"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Nou %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6488,9 +6530,8 @@ msgid "On"
msgstr "Activat"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Afegeix un element Buit"
+msgstr "[Buit]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6570,10 +6611,6 @@ msgid "Error loading scene from %s"
msgstr "Error en carregar l'escena des de %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "D'acord"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6662,8 +6699,8 @@ msgid "Error duplicating scene to save it."
msgstr "Error en duplicar l'escena per desar-la."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Sub-Recursos:"
+msgid "Sub-Resources"
+msgstr "Sub-Recursos"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6965,7 +7002,7 @@ msgstr "Funció:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Trieu un o més elements de la llista per mostrar el Graf."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Errors"
@@ -6974,6 +7011,10 @@ msgid "Child Process Connected"
msgstr "Procés Fill Connectat"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Error de Còpia"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspecciona la Instància anterior"
@@ -7067,7 +7108,7 @@ msgstr "Dreceres"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Vinculació"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7119,42 +7160,39 @@ msgstr "Modifica l'abast de la Sonda"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Selecciona una biblioteca dinàmica per l'entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Selecciona les dependències per l'entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Elimina un punt de la Corba"
+msgstr "Elimina l'entrada actual"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Doble clic per a afegir-hi una entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Plataforma:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform"
-msgstr ""
+msgstr "Plataforma"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Biblioteca"
+msgstr "Biblioteca Dinàmica"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Afegeix una entrada d'arquitectura"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7326,10 +7364,50 @@ msgstr "Configuració del GridMap"
msgid "Pick Distance:"
msgstr "Trieu la distància:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "S'està generant la solució..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "S'està generant el projecte en C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "No s'ha pogut crear la solució."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "No s'ha pogut desar la solució."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Fet"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "No s'ha pogut crear el projecte en C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Crea una solució en C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Muntatges"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Munta el Projecte"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Avisos"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7690,24 +7768,28 @@ 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:\n"
-msgstr "No s'ha pogut escriure el fitxer:\n"
+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:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "No es pot obrir la plantilla d'exportació:\n"
+msgid "Invalid export template:"
+msgstr "Plantilla d'exportació no vàlida:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Plantilla d'exportació no vàlida:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:\n"
+msgid "Could not read boot splash image file:"
+msgstr "No es pot llegir la imatge de presentació:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "No es pot llegir l'imatge per a la pantalla de presentació:\n"
+msgid "Using default boot splash image."
+msgstr "Utilitzant la imatge de presentació per defecte."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7726,6 +7808,17 @@ msgstr ""
"Només es permet un sol CanvasModulate per escena (o conjunt d'escenes "
"instanciades). El primer funcionarà, mentre que la resta seran ignorats."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"En no disposar de cap fill del tipus Shape, aquest node no pot interactuar "
+"amb l'espai.\n"
+"Considereu afegir-hi nodes fill del tipus CollisionShape2D o "
+"CollisionPolygon2D per definir-ne la forma."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7816,7 +7909,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7867,23 +7960,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "El node ARVROrigin requreix un node Fill del tipus ARVRCamera"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "S'estàn traçant les Malles"
+msgstr "S'estàn traçant les Malles: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "S'estàn traçant les Malles"
+msgstr "S'està traçant l'Il·luminació:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "S'està finalitzant el Traçat"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "S'estàn traçant les Malles"
+msgstr "Il·luminant les Malles: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"En no disposar de cap fill del tipus Shape, aquest node no pot interactuar "
+"amb l'espai.\n"
+"Considereu afegir-hi nodes fill del tipus CollisionShape2D o "
+"CollisionPolygon2D per definir-ne la forma."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7942,8 +8043,8 @@ msgstr "Res és visible perquè no s'ha assignat cap Malla a cap pas de Dibuix."
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"El motor de físiques sobreescriurà els canvis en la mida dels nodes "
@@ -8024,11 +8125,11 @@ msgstr "(Altres)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"No es pot carregar l'Entorn per Defecte especificat en la Configuració del "
-"Projecte (Renderització->Visualització->Entorn Per Defecte)."
+"Projecte (Renderització->Entorn->Entorn Per Defecte)."
#: scene/main/viewport.cpp
msgid ""
@@ -8058,6 +8159,40 @@ msgstr "Error carregant lletra."
msgid "Invalid font size."
msgstr "La mida de la lletra no és vàlida."
+#~ msgid "Next"
+#~ msgstr "Següent"
+
+#~ msgid "Not found!"
+#~ msgstr "No s'ha trobat!"
+
+#~ msgid "Replace By"
+#~ msgstr "Reemplaça per"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Majúscules i minúscules"
+
+#~ msgid "Backwards"
+#~ msgstr "Enrere"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Indica en reemplaçar"
+
+#~ msgid "Skip"
+#~ msgstr "Omet"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "El projecte es crearà en un directori ja existent (Si s'escau, creeu un "
+#~ "directori nou)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "BINGO!"
+
+#~ msgid "preview"
+#~ msgstr "Previsualització"
+
#~ msgid "Move Add Key"
#~ msgstr "Mou o Afegeix una Clau"
@@ -8407,9 +8542,6 @@ msgstr "La mida de la lletra no és vàlida."
#~ msgid "Import Anyway"
#~ msgstr "Importa Igualment"
-#~ msgid "Import & Open"
-#~ msgstr "Importa i Obre"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "No s'ha desat l'escena editada. Vol obrir l'escena importada igualment?"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 5cf6103dcc..ce645b139b 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -6,21 +6,22 @@
# Fadex <vitekpaulik@gmail.com>, 2017.
# Jan 'spl!te' Kondelík <j.kondelik@centrum.cz>, 2016.
# Jiri Hysek <contact@jirihysek.com>, 2017.
-# Luděk Novotný <gladosicek@gmail.com>, 2016.
+# Luděk Novotný <gladosicek@gmail.com>, 2016, 2018.
# Martin Novák <maidx@seznam.cz>, 2017.
+# zxey <r.hozak@seznam.cz>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-09 19:45+0000\n"
-"Last-Translator: Martin Novák <maidx@seznam.cz>\n"
+"PO-Revision-Date: 2018-01-24 12:07+0000\n"
+"Last-Translator: zxey <r.hozak@seznam.cz>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
"Language: cs\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -203,8 +204,7 @@ msgstr "VytvoÅ™it %d NOVÃCH stop a vložit klíÄe?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Vytvořit"
@@ -338,7 +338,7 @@ msgstr "Odstranit neplatné klíÄe"
#: editor/animation_editor.cpp
msgid "Remove unresolved and empty tracks"
-msgstr "Odstranit nevyřešené a prázdné stopy"
+msgstr "Odstranit neurÄené a prázdné stopy"
#: editor/animation_editor.cpp
msgid "Clean-up all animations"
@@ -381,14 +381,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Nahrazeno %d výskytů."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Nahradit"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Nahradit všechny"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Rozlišovat malá/velká"
@@ -397,48 +389,16 @@ msgid "Whole Words"
msgstr "Celá slova"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Pouze výběr"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Hledat"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Najít"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Další"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Nenalezeno!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
+msgid "Replace"
msgstr "Nahradit"
#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Rozlišovat velká a malá písmena"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Pozpátku"
-
-#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Potvrzovat nahrazení"
+msgid "Replace All"
+msgstr "Nahradit všechny"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "PÅ™eskoÄit"
+msgid "Selection Only"
+msgstr "Pouze výběr"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -540,9 +500,8 @@ msgid "Connecting Signal:"
msgstr "Připojuji signál:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Připojit '%s' k '%s'"
+msgstr "Odpojit '%s' od '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -558,9 +517,17 @@ msgid "Signals"
msgstr "Signály"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Změnit typ %d"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Změnit"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Vytvořit nový"
+msgstr "Vytvořit nový %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -670,8 +637,8 @@ msgstr ""
"Přesto je chcete smazat? (nelze vrátit zpět)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Nelze odstranit:\n"
+msgid "Cannot remove:"
+msgstr "Nelze odstranit:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -746,17 +713,16 @@ msgid "Godot Engine contributors"
msgstr "Přispívající do Godot Enginu"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Nastavení projektu"
+msgstr "Zakladatelé projektu"
#: editor/editor_about.cpp
msgid "Lead Developer"
msgstr "Vedoucí vývojář"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Správce projektů"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Správce projektu "
#: editor/editor_about.cpp
msgid "Developers"
@@ -815,14 +781,12 @@ msgstr ""
"popisy autorských práv a s licenÄními podmínkami."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Spojité"
+msgstr "Všechny komponenty"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Spojité"
+msgstr "Komponenty"
#: editor/editor_about.cpp
msgid "Licenses"
@@ -846,7 +810,7 @@ msgid "Success!"
msgstr "Úspěch!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instalovat"
@@ -863,22 +827,20 @@ msgid "Add Effect"
msgstr "Přidat efekt"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Přejmenovat AutoLoad"
+msgstr "Přejmenovat Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Změnit hodnotu pole"
+msgstr "Změnit hlasitost Audio Busu"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr ""
+msgstr "Hraje pouze tento Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "Ztlumit tento Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
@@ -890,16 +852,15 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Přidat Audio Bus efekt"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Přesunout Bus efekt"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Smazat vybraný"
+msgstr "Smazat Bus efekt"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
@@ -907,11 +868,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Ztlumit"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
@@ -919,77 +880,72 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Bus options"
-msgstr ""
+msgstr "Možnosti Busu"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr ""
+msgstr "Duplikovat"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Reset Volume"
-msgstr "Obnovit původní přiblížení"
+msgstr "Resetovat hlasitost"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Effect"
-msgstr "Smazat vybraný"
+msgstr "Smazat efekt"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Zvuk"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
-msgstr ""
+msgstr "Přidat Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Master bus nelze smazat!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Optimalizovat animaci"
+msgstr "Smazat Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Duplikovat výběr"
+msgstr "Duplikovat Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Reset Bus Volume"
-msgstr "Obnovit původní přiblížení"
+msgstr "Obnovit hlasitost Busu"
#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr ""
+msgstr "Přesunout Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "Uložit rozložení Audio Busu jako.."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "Umístění pro nové rozložení.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "Otevřít rozložení Audio Busu"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Soubor 'res://default_bus_layout.tres' neexistuje."
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr ""
+msgstr "Neplatný soubor, neni to rozložení Audio Busu."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr ""
+msgstr "Přidat bus"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
@@ -998,7 +954,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr ""
+msgstr "NaÄíst"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
@@ -1015,7 +971,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr ""
+msgstr "NaÄíst výchozí"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
@@ -1107,31 +1063,31 @@ msgstr "Singleton"
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr ""
+msgstr "Aktualizuji scénu"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr ""
+msgstr "Ukládám lokální změny.."
#: editor/editor_data.cpp
msgid "Updating scene.."
-msgstr ""
+msgstr "Aktualizuji scénu.."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[prázdné]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[neuloženo]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr ""
+msgstr "Nejprve vyberte výchozí složku"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
-msgstr ""
+msgstr "Vyberte složku"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
@@ -1152,45 +1108,43 @@ msgstr "Nelze vytvořit složku."
#: editor/editor_dir_dialog.cpp
msgid "Choose"
-msgstr ""
+msgstr "Vyberte"
#: editor/editor_export.cpp
msgid "Storing File:"
-msgstr ""
+msgstr "Ukládám soubor:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr ""
+msgstr "Balím"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr ""
+msgid "Template file not found:"
+msgstr "Soubor šablony nenalezen:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Soubor už existuje. Přepsat?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select Current Folder"
-msgstr "Vytvořit složku"
+msgstr "Vybrat stávající složku"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
-msgstr ""
+msgstr "Kopírovat cestu"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Show In File Manager"
-msgstr ""
+msgstr "Ukázat ve správci souborů"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
-#, fuzzy
msgid "New Folder.."
-msgstr "Vytvořit složku"
+msgstr "Nová složka.."
#: editor/editor_file_dialog.cpp
msgid "Refresh"
-msgstr ""
+msgstr "Obnovit"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
@@ -1228,44 +1182,45 @@ msgstr "Uložit soubor"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
-msgstr ""
+msgstr "Jít zpět"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr ""
+msgstr "Jit dopředu"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
-msgstr ""
+msgstr "Jít o úroveň výš"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr ""
+msgstr "Zobrazit skryté soubory"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr ""
+msgstr "Zobrazit oblíbené"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr ""
+msgstr "Přepnout režim"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
msgstr ""
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Move Favorite Up"
-msgstr ""
+msgstr "Přesunout oblíbenou položku o úroveň výš"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Move Favorite Down"
-msgstr ""
+msgstr "Přesunout oblíbenou položku o úroveň níž"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Go to parent folder"
-msgstr "Nelze vytvořit složku."
+msgstr "Jít na nadřazenou složku"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
@@ -1273,7 +1228,7 @@ msgstr "Složky a soubory:"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr ""
+msgstr "Náhled:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
@@ -1299,11 +1254,11 @@ msgstr "Prohledat nápovědu"
#: editor/editor_help.cpp
msgid "Class List:"
-msgstr ""
+msgstr "Seznam tříd:"
#: editor/editor_help.cpp
msgid "Search Classes"
-msgstr ""
+msgstr "Hledat třídy"
#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Top"
@@ -1311,37 +1266,35 @@ msgstr ""
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
-msgstr ""
+msgstr "Třída:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
msgid "Inherits:"
-msgstr ""
+msgstr "Dědí z:"
#: editor/editor_help.cpp
msgid "Inherited by:"
-msgstr ""
+msgstr "Děděná z:"
#: editor/editor_help.cpp
msgid "Brief Description:"
-msgstr ""
+msgstr "StruÄný popis:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Members"
-msgstr "Členové:"
+msgstr "Členové"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Členové:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Public Methods"
-msgstr "Vybrat vše"
+msgstr "Veřejné metody"
#: editor/editor_help.cpp
msgid "Public Methods:"
-msgstr ""
+msgstr "Veřejné metody:"
#: editor/editor_help.cpp
msgid "GUI Theme Items"
@@ -1356,66 +1309,82 @@ msgid "Signals:"
msgstr "Signály:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Enumerations"
-msgstr "Funkce:"
+msgstr "VýÄty"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Enumerations:"
-msgstr "Funkce:"
+msgstr "VýÄty:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "výÄet "
#: editor/editor_help.cpp
-#, fuzzy
msgid "Constants"
-msgstr "Konstantní"
+msgstr "Konstanty"
#: editor/editor_help.cpp
msgid "Constants:"
-msgstr ""
+msgstr "Konstanty:"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Description"
-msgstr "Vytvořit odběr"
+msgstr "Popis"
#: editor/editor_help.cpp
-msgid "Properties"
+msgid "Online Tutorials:"
+msgstr "Online návody:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
msgstr ""
+"V souÄasné dobÄ› pro tuto třídu neexistují žádné návody, můžete nÄ›jaký [color="
+"$color][url=$url]vytvořit[/url][/color] nebo o něj [color=$color][url="
+"$url2]zažádat[/url][/color]."
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Vlastnosti"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Property Description:"
-msgstr "Vytvořit odběr"
+msgstr "Popis vlastnosti:"
#: editor/editor_help.cpp
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
msgstr ""
+"V souÄasné dobÄ› neexistuje žádný popis pro tuto vlastnost. Prosím pomozte "
+"nám tím, že ho[color=$color][url=$url]vytvoříte[/url][/color]!"
#: editor/editor_help.cpp
-#, fuzzy
msgid "Methods"
-msgstr "Seznam metod:"
+msgstr "Metody"
#: editor/editor_help.cpp
msgid "Method Description:"
-msgstr ""
+msgstr "Popis metody:"
#: editor/editor_help.cpp
msgid ""
"There is currently no description for this method. Please help us by [color="
"$color][url=$url]contributing one[/url][/color]!"
msgstr ""
+"V souÄasné dobÄ› neexistuje žádný popis pro tuto metodu. Prosím pomozte nám "
+"tím, že ho [color=$color][url=$url]vytvoříte[/url][/color]!"
#: editor/editor_help.cpp
msgid "Search Text"
-msgstr ""
+msgstr "Prohledat text"
+
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Najít"
#: editor/editor_log.cpp
msgid "Output:"
@@ -1428,6 +1397,10 @@ msgstr "Výstup:"
msgid "Clear"
msgstr "VyÄistit"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Vymazat výstup"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1436,57 +1409,54 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
-msgstr ""
+msgstr "Chápu.."
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "Nelze otevřít soubor pro zápis:"
#: editor/editor_node.cpp
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "Žádaný formát souboru je neznámý:"
#: editor/editor_node.cpp
msgid "Error while saving."
-msgstr ""
+msgstr "Chyba při ukládání."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Can't open '%s'."
-msgstr "Připojit.."
+msgstr "Nelze otevřít '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while parsing '%s'."
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba při parsování '%s'."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
-msgstr ""
+msgstr "NeoÄekávaný konec souboru '%s'."
#: editor/editor_node.cpp
msgid "Missing '%s' or its dependencies."
-msgstr ""
+msgstr "Chybí '%s' nebo jeho závislosti."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Error while loading '%s'."
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba při nahrávání '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr ""
+msgstr "Ukládám scénu"
#: editor/editor_node.cpp
msgid "Analyzing"
-msgstr ""
+msgstr "Analyzuji"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr ""
+msgstr "Vytvářím náhled"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
@@ -1494,10 +1464,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Nepodařilo se uložit scénu. Nejspíše se nepodařilo uspokojit závislosti "
-"(instance)."
+"(instance nebo dÄ›diÄnosti)."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1533,7 +1504,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
-msgstr ""
+msgstr "Obnoveno výchozí rozložení na základní nastavení."
#: editor/editor_node.cpp
msgid ""
@@ -1571,19 +1542,19 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Expand all properties"
-msgstr ""
+msgstr "Rozbalit všechny vlastnosti"
#: editor/editor_node.cpp
msgid "Collapse all properties"
-msgstr ""
+msgstr "Sbalit všechny vlastnosti"
#: editor/editor_node.cpp
msgid "Copy Params"
-msgstr ""
+msgstr "Kopírovat parametry"
#: editor/editor_node.cpp
msgid "Paste Params"
-msgstr ""
+msgstr "Vložit parametry"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
@@ -1607,7 +1578,7 @@ msgstr "Otevřít v nápovědě"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "Neexistuje žádná scéna pro spuštění."
#: editor/editor_node.cpp
msgid ""
@@ -1632,11 +1603,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
+msgstr "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr ""
+msgstr "Nelze spustit podproces!"
#: editor/editor_node.cpp
msgid "Open Scene"
@@ -1644,7 +1615,7 @@ msgstr "Otevřít scénu"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "Otevřít základní scénu"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
@@ -1655,13 +1626,12 @@ msgid "Quick Open Script.."
msgstr "Rychlé otevření skriptu.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Uložit soubor"
+msgstr "Uložit a zavřít"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Uložit změny '%s' před zavřením?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1669,23 +1639,23 @@ msgstr "Uložit scénu jako.."
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "Ne"
#: editor/editor_node.cpp
msgid "Yes"
-msgstr ""
+msgstr "Ano"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "Tato scéna nebyla nikdy uložena. Uložit před spuštěním?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "Tato operace nemůže být provedena bez scény."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "Exportovat Mesh Library"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
@@ -1693,7 +1663,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr ""
+msgstr "Exportovat Tile Set"
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
@@ -1701,27 +1671,27 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr ""
+msgstr "Aktuální scéna neuložena. Přesto otevřít?"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr ""
+msgstr "Nelze naÄíst scénu, která nebyla nikdy uložena."
#: editor/editor_node.cpp
msgid "Revert"
-msgstr ""
+msgstr "Vrátit zpět"
#: editor/editor_node.cpp
msgid "This action cannot be undone. Revert anyway?"
-msgstr ""
+msgstr "Tuto akci nelze vrátit zpÄ›t. PokraÄovat?"
#: editor/editor_node.cpp
msgid "Quick Run Scene.."
-msgstr ""
+msgstr "Rychlé spuštění scény..."
#: editor/editor_node.cpp
msgid "Quit"
-msgstr ""
+msgstr "UkonÄit"
#: editor/editor_node.cpp
msgid "Exit the editor?"
@@ -1729,43 +1699,45 @@ msgstr "UkonÄit editor?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr ""
+msgstr "Otevřít Správce projektu?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Uložit soubor"
+msgstr "Uložit a ukonÄit"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Uložit zmÄ›ny následujících scén pÅ™ed ukonÄením?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
-msgstr ""
+msgstr "Uložit změny následujících scén před otevřením Správce projektu?"
#: editor/editor_node.cpp
msgid ""
"This option is deprecated. Situations where refresh must be forced are now "
"considered a bug. Please report."
msgstr ""
+"Tato možnost se již nepoužívá. Situace, kdy obnova musí být vynucena jsou "
+"nyní považovány za chybu. Prosím nahlašte."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
-msgstr ""
+msgstr "Vybrat hlavní scénu"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
+"Nelze povolit rozšiřující plugin: '%s' parsování konfigurace se nezdařilo."
#: editor/editor_node.cpp
msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Nelze najít záznam skriptu pro rozšiřující plugin v: 'res://addons/%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Unable to load addon script from path: '%s'."
-msgstr "Chyba nahrávání fontu."
+msgstr "Nelze naÄíst skript rozšíření z cesty: '%s'."
#: editor/editor_node.cpp
msgid ""
@@ -1777,6 +1749,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
+"Nelze naÄíst skript rozšíření z cesty: '%s'. Skript není v režimu nástroje "
+"(tool)."
#: editor/editor_node.cpp
msgid ""
@@ -1787,92 +1761,92 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
-msgstr ""
+msgstr "Ups"
#: editor/editor_node.cpp
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 ""
+"Chyba při nahrávání scény, musí být v cestě projektu. POužijte 'Importovat' "
+"k otevření scény, pak ji uložte uvnitř projektu."
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
-msgstr ""
+msgstr "Scéna '%s' má rozbité závislosti:"
#: editor/editor_node.cpp
msgid "Clear Recent Scenes"
-msgstr ""
+msgstr "Vymazat nedávné scény"
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "Uložit rozložení"
#: editor/editor_node.cpp
msgid "Delete Layout"
-msgstr ""
+msgstr "Odstranit rozložení"
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
msgid "Default"
-msgstr ""
+msgstr "Výchozí"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr ""
+msgstr "Přepnout záložku scény"
#: editor/editor_node.cpp
msgid "%d more files or folders"
-msgstr ""
+msgstr "%d více souborů nebo složek"
#: editor/editor_node.cpp
-#, fuzzy
msgid "%d more folders"
-msgstr "Nelze vytvořit složku."
+msgstr "%d více složek"
#: editor/editor_node.cpp
msgid "%d more files"
-msgstr ""
+msgstr "%d více souborů"
#: editor/editor_node.cpp
msgid "Dock Position"
-msgstr ""
+msgstr "Pozice doku"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Nerozptylující režim"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
-msgstr ""
+msgstr "Zapnout nerozptylující režim."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Add a new scene."
-msgstr "Přidat nové stopy."
+msgstr "Přidat novou scénu."
#: editor/editor_node.cpp
msgid "Scene"
-msgstr ""
+msgstr "Scéna"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr ""
+msgstr "Přejít na předchozí scénu."
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr ""
+msgstr "Další záložka"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr ""
+msgstr "Předchozí záložka"
#: editor/editor_node.cpp
msgid "Filter Files.."
-msgstr ""
+msgstr "Filtrovat soubory..."
#: editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr ""
+msgstr "Možností scén."
#: editor/editor_node.cpp
msgid "New Scene"
@@ -1892,7 +1866,7 @@ msgstr "Uložit scénu"
#: editor/editor_node.cpp
msgid "Save all Scenes"
-msgstr ""
+msgstr "Uložit všechny scény"
#: editor/editor_node.cpp
msgid "Close Scene"
@@ -1908,11 +1882,11 @@ msgstr "Konvertovat na.."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr ""
+msgstr "MeshLibrary.."
#: editor/editor_node.cpp
msgid "TileSet.."
-msgstr ""
+msgstr "TileSet.."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
@@ -1926,16 +1900,15 @@ msgstr "Znovu"
#: editor/editor_node.cpp
msgid "Revert Scene"
-msgstr ""
+msgstr "Vrátit scénu"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "Různé nástroje pro projekt nebo scény."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "Nastavení projektu"
+msgstr "Projekt"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -1947,11 +1920,11 @@ msgstr "Spustit skript"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "Exportovat"
#: editor/editor_node.cpp
msgid "Tools"
-msgstr ""
+msgstr "Nástroje"
#: editor/editor_node.cpp
msgid "Quit to Project List"
@@ -1963,13 +1936,15 @@ msgstr "Ladění"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr ""
+msgstr "Nasazení se vzdáleným laděním"
#: editor/editor_node.cpp
msgid ""
"When exporting or deploying, the resulting executable will attempt to "
"connect to the IP of this computer in order to be debugged."
msgstr ""
+"Při exportu nebo nasazení, se výsledný spustitelný soubor pokusí připojit k "
+"IP tohoto poÄítaÄe, aby ho bylo možné ladit."
#: editor/editor_node.cpp
msgid "Small Deploy with Network FS"
@@ -1984,6 +1959,11 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
+"Když je tato možnost povolena, export nebo nasazení bude vytvářet minimální "
+"spustitelný soubor.\n"
+"Souborový systém bude poskytnut editorem projektu přes sít.\n"
+"Pro nasazení na Android bude použít USB kabel pro dosažení vyššího výkonu. "
+"Tato možnost urychluje testování objemných her."
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
@@ -2007,7 +1987,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "Synchronizovat změny scény"
#: editor/editor_node.cpp
msgid ""
@@ -2016,10 +1996,14 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Když je zapnuta tato možnost, všechny změny provedené ve scéně v editoru "
+"budou replikovány v běžící hře.\n"
+"Při použití se vzdáleným spuštěním je toto více efektivní při použití "
+"síťového souborového systému."
#: editor/editor_node.cpp
msgid "Sync Script Changes"
-msgstr ""
+msgstr "Synchornizace změn skriptu"
#: editor/editor_node.cpp
msgid ""
@@ -2028,6 +2012,10 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Když je zapnuta tato volba, jakýkoliv skript, který je uložen bude znovu "
+"nahrán do spuštěné hry.\n"
+"Při použití se vzdáleným spuštěním je toto více efektivní při použití "
+"síťového souborového systému."
#: editor/editor_node.cpp
msgid "Editor"
@@ -2055,19 +2043,27 @@ msgstr "Nápověda"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
-msgstr ""
+msgstr "Třídy"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Hledat"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
-msgstr ""
+msgstr "Online dokumentace"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Q&A"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Issue Tracker"
-msgstr ""
+msgstr "Správa chyb"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
@@ -2075,68 +2071,67 @@ msgstr "Komunita"
#: editor/editor_node.cpp
msgid "About"
-msgstr ""
+msgstr "O aplikaci"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr ""
+msgstr "Spustit projekt."
#: editor/editor_node.cpp
msgid "Play"
-msgstr ""
+msgstr "Spustit"
#: editor/editor_node.cpp
msgid "Pause the scene"
-msgstr ""
+msgstr "Pozastavit scénu"
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr ""
+msgstr "Pozastavit scénu"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr ""
+msgstr "Zastavit scénu."
#: editor/editor_node.cpp
msgid "Stop"
-msgstr ""
+msgstr "Zastavit"
#: editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr ""
+msgstr "Spustit upravenou scénu."
#: editor/editor_node.cpp
msgid "Play Scene"
-msgstr ""
+msgstr "Spustit scénu"
#: editor/editor_node.cpp
msgid "Play custom scene"
msgstr "Přehrát vlastní scénu"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play Custom Scene"
msgstr "Přehrát vlastní scénu"
#: editor/editor_node.cpp
msgid "Spins when the editor window repaints!"
-msgstr ""
+msgstr "ToÄí se, když se okno pÅ™ekresluje!"
#: editor/editor_node.cpp
msgid "Update Always"
-msgstr ""
+msgstr "Aktualizovat vždy"
#: editor/editor_node.cpp
msgid "Update Changes"
-msgstr ""
+msgstr "Akualizovat změny"
#: editor/editor_node.cpp
msgid "Disable Update Spinner"
-msgstr ""
+msgstr "Vypnout aktualizaÄní koleÄko"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr ""
+msgstr "Inspektor"
#: editor/editor_node.cpp
msgid "Create a new resource in memory and edit it."
@@ -2152,7 +2147,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr ""
+msgstr "Uložit jako.."
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
@@ -2164,20 +2159,20 @@ msgstr ""
#: editor/editor_node.cpp
msgid "History of recently edited objects."
-msgstr ""
+msgstr "Historie naposledy upravených objektů."
#: editor/editor_node.cpp
msgid "Object properties."
-msgstr ""
+msgstr "Vlastnosti objektu."
#: editor/editor_node.cpp
msgid "Changes may be lost!"
-msgstr ""
+msgstr "Změny mohou být ztraceny!"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "Importovat"
#: editor/editor_node.cpp
msgid "Node"
@@ -2185,7 +2180,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "FileSystem"
-msgstr ""
+msgstr "Souborový systém"
#: editor/editor_node.cpp
msgid "Output"
@@ -2193,7 +2188,7 @@ msgstr "Výstup"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
+msgstr "Neukládat"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2201,63 +2196,59 @@ msgstr "Importovat šablony ze ZIP souboru"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
-msgstr ""
+msgstr "Exportovat projekt"
#: editor/editor_node.cpp
msgid "Export Library"
-msgstr ""
+msgstr "Exportovat knihovnu"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr ""
+msgstr "SlouÄit s existující"
#: editor/editor_node.cpp
msgid "Password:"
-msgstr ""
+msgstr "Heslo:"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
-msgstr ""
+msgstr "Otevřít a spustit skript"
#: editor/editor_node.cpp
msgid "New Inherited"
-msgstr ""
+msgstr "Nové zděděné"
#: editor/editor_node.cpp
msgid "Load Errors"
-msgstr ""
+msgstr "NaÄíst chyby"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
-msgstr ""
+msgstr "Vybrat"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Otevřít složku"
+msgstr "Otevřít 2D editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Otevřít složku"
+msgstr "Otevřít 3D editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Editor závislostí"
+msgstr "Otevřít editor skriptů"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Editor závislostí"
+msgstr "Otevřít další editor"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
-msgstr ""
+msgstr "Otevřít předchozí editor"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
@@ -2265,60 +2256,62 @@ msgstr ""
#: editor/editor_plugin.cpp
msgid "Thumbnail.."
-msgstr ""
+msgstr "Náhled.."
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
-msgstr ""
+msgstr "Nainstalované pluginy:"
#: editor/editor_plugin_settings.cpp
msgid "Update"
-msgstr ""
+msgstr "Aktualizovat"
#: editor/editor_plugin_settings.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Version:"
-msgstr ""
+msgstr "Verze:"
#: editor/editor_plugin_settings.cpp
msgid "Author:"
-msgstr ""
+msgstr "Autor:"
#: editor/editor_plugin_settings.cpp
msgid "Status:"
-msgstr ""
+msgstr "Stav:"
#: editor/editor_profiler.cpp
msgid "Stop Profiling"
-msgstr ""
+msgstr "Zastavit profilování"
#: editor/editor_profiler.cpp
msgid "Start Profiling"
-msgstr ""
+msgstr "Spustit profilování"
#: editor/editor_profiler.cpp
msgid "Measure:"
-msgstr ""
+msgstr "Měření:"
#: editor/editor_profiler.cpp
msgid "Frame Time (sec)"
-msgstr ""
+msgstr "Čas snímku (sek.)"
#: editor/editor_profiler.cpp
msgid "Average Time (sec)"
-msgstr ""
+msgstr "PrůmÄ›rný Äas (sek.)"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame %"
-msgstr ""
+msgstr "% snímku"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Physics Frame %"
-msgstr ""
+msgstr "% fyzikálního snímku"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
msgid "Time:"
-msgstr ""
+msgstr "ÄŒas:"
#: editor/editor_profiler.cpp
msgid "Inclusive"
@@ -2329,43 +2322,46 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame #:"
-msgstr ""
+msgstr "Snímek Ä.:"
#: editor/editor_profiler.cpp
msgid "Time"
-msgstr ""
+msgstr "ÄŒas"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Zavolat"
+msgstr "Volání"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Vyberte zařízení ze seznamu"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Nenalezen žádný spustitelný preset pro export pro tuto platformu.\n"
+"rosím přidejte spustitelný preset v menu exportu."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
-msgstr ""
+msgstr "Napište svůj kód v _run() metodě."
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "There is an edited scene already."
-msgstr ""
+msgstr "Nějaka scéna už je upravována."
#: editor/editor_run_script.cpp
msgid "Couldn't instance script:"
-msgstr ""
+msgstr "Nepodařilo se instancovat skript:"
#: editor/editor_run_script.cpp
msgid "Did you forget the 'tool' keyword?"
-msgstr ""
+msgstr "NezapomnÄ›li jste na klíÄové slovo 'tool'?"
#: editor/editor_run_script.cpp
msgid "Couldn't run script:"
@@ -2443,8 +2439,8 @@ msgid "No version.txt found inside templates."
msgstr "Nenalezena version.txt uvnitř šablon."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "Chyba při vytváření cesty pro šablony:\n"
+msgid "Error creating path for templates:"
+msgstr "Chyba při vytváření cesty pro šablony:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2467,9 +2463,8 @@ msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect."
-msgstr "Připojit.."
+msgstr "Nelze se připojit."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2478,9 +2473,8 @@ msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Testované"
+msgstr "Požadavek se nezdařil."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2493,28 +2487,25 @@ msgid "Failed:"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't write file."
-msgstr "Nelze vytvořit složku."
+msgstr "Nelze zapsat soubor."
#: editor/export_template_manager.cpp
msgid "Download Complete."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error requesting url: "
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba požadavku o url: "
#: editor/export_template_manager.cpp
#, fuzzy
msgid "Connecting to Mirror.."
-msgstr "Připojit.."
+msgstr "Připojuji se k mirroru.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Disconnected"
-msgstr "Odpojit"
+msgstr "Odpojeno"
#: editor/export_template_manager.cpp
msgid "Resolving"
@@ -2526,35 +2517,30 @@ msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Connecting.."
-msgstr "Připojit.."
+msgstr "Připojuji.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
-msgstr "Připojit.."
+msgstr "Nelze se připojit"
#: editor/export_template_manager.cpp
#, fuzzy
msgid "Connected"
-msgstr "Připojit"
+msgstr "Připojeno"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting.."
-msgstr "Testované"
+msgstr "Posílá se žádost.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Downloading"
-msgstr "Chyba pÅ™i naÄítání:"
+msgstr "Stahuji"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Connection Error"
-msgstr "Připojit.."
+msgstr "Chyba připojení"
#: editor/export_template_manager.cpp
msgid "SSL Handshake Error"
@@ -2573,14 +2559,12 @@ msgid "Install From File"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove Template"
-msgstr "Odstranit výběr"
+msgstr "Odstranit šablonu"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select template file"
-msgstr "Odstranit vybrané soubory?"
+msgstr "Vybrat soubor šablony"
#: editor/export_template_manager.cpp
msgid "Export Template Manager"
@@ -2611,9 +2595,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2621,23 +2603,20 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving:\n"
-msgstr "Chyba pÅ™i naÄítání:"
+msgid "Error moving:"
+msgstr "Chyba přesouvání:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Chyba pÅ™i naÄítání:"
+msgid "Error duplicating:"
+msgstr "Chyba duplikování:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Unable to update dependencies:\n"
-msgstr "Scénu se nepodaÅ™ilo naÄíst kvůli chybÄ›jícím závislostem:"
+msgid "Unable to update dependencies:"
+msgstr "Nepodařilo se aktualizovat závisloti:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2652,27 +2631,24 @@ msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Name contains invalid characters."
-msgstr "Platné znaky:"
+msgstr "Jméno obsahuje neplatné znaky."
#: editor/filesystem_dock.cpp
msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Renaming file:"
-msgstr "Přejmenovat proměnnou"
+msgstr "Přejmenovávání souboru:"
#: editor/filesystem_dock.cpp
msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Přejmenovat proměnnou"
+msgstr "Duplikace souboru:"
#: editor/filesystem_dock.cpp
msgid "Duplicating folder:"
@@ -2712,9 +2688,8 @@ msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Animace: duplikovat klíÄe"
+msgstr "Duplikovat.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2845,21 +2820,20 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-#, fuzzy
msgid " Files"
-msgstr "Soubor:"
+msgstr " Soubory"
#: editor/import_dock.cpp
msgid "Import As:"
-msgstr ""
+msgstr "Importovat jako:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
-msgstr ""
+msgstr "Preset.."
#: editor/import_dock.cpp
msgid "Reimport"
-msgstr ""
+msgstr "Znovu importovat"
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
@@ -2867,7 +2841,7 @@ msgstr ""
#: editor/node_dock.cpp
msgid "Groups"
-msgstr ""
+msgstr "Skupiny"
#: editor/node_dock.cpp
msgid "Select a Node to edit Signals and Groups."
@@ -2913,7 +2887,7 @@ msgstr ""
#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
msgid "Delete points"
-msgstr "Odstranit"
+msgstr "Odstranit body"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -2932,32 +2906,31 @@ msgid "Change Animation Name:"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "Optimalizovat animaci"
+msgstr "Smazat animaci?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Remove Animation"
-msgstr ""
+msgstr "Smazat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Invalid animation name!"
-msgstr ""
+msgstr "Chyba: Neplatné jméno animace!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Animation name already exists!"
-msgstr ""
+msgstr "Chyba: Jméno animace už existuje!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Rename Animation"
-msgstr ""
+msgstr "Přejmenovat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Animation"
-msgstr ""
+msgstr "Přidat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Blend Next Changed"
@@ -2969,15 +2942,15 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
-msgstr ""
+msgstr "NaÄíst animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Duplicate Animation"
-msgstr ""
+msgstr "Duplikovat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation to copy!"
-msgstr ""
+msgstr "ERROR: Nevybrána animace pro kopírování!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation resource on clipboard!"
@@ -2985,15 +2958,15 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
-msgstr ""
+msgstr "Vložená animace"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Paste Animation"
-msgstr ""
+msgstr "Vložit animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation to edit!"
-msgstr ""
+msgstr "ERROR: Nevybrána animace pro úpravu!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
@@ -3005,15 +2978,15 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Stop animation playback. (S)"
-msgstr ""
+msgstr "Zastavit přehrávání animace. (S)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
+msgstr "PÅ™ehrát vybranou animaci od zaÄátku. (Shift+D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from current pos. (D)"
-msgstr ""
+msgstr "Přehrát vybranou animaci od vybrané pozice. (D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation position (in seconds)."
@@ -3029,15 +3002,15 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load animation from disk."
-msgstr ""
+msgstr "NaÄíst animaci z disku."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load an animation from disk."
-msgstr ""
+msgstr "NaÄíst animaci z disku."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
-msgstr ""
+msgstr "Uložit vybranou animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -3053,11 +3026,11 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Tools"
-msgstr ""
+msgstr "Nástroje pro animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Copy Animation"
-msgstr ""
+msgstr "Kopírovat animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Onion Skinning"
@@ -3070,36 +3043,37 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Directions"
-msgstr "Vytvořit odběr"
+msgstr "Směry"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
-msgstr "Vložit"
+msgstr "Minulý"
#: editor/plugins/animation_player_editor_plugin.cpp
+#, fuzzy
msgid "Future"
-msgstr ""
+msgstr "Budoucí"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Depth"
-msgstr ""
+msgstr "Hloubka"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "1 step"
-msgstr ""
+msgstr "1 krok"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "2 steps"
-msgstr ""
+msgstr "2 kroky"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "3 steps"
-msgstr ""
+msgstr "3 kroky"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Differences Only"
-msgstr ""
+msgstr "Pouze rozdíly"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
@@ -3111,18 +3085,18 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
-msgstr ""
+msgstr "Vytvořit novou animaci"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Name:"
-msgstr ""
+msgstr "Jméno animace:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
-msgstr ""
+msgstr "Chyba!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Blend Times:"
@@ -3139,21 +3113,20 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Animation"
-msgstr ""
+msgstr "Animace"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "New name:"
-msgstr ""
+msgstr "Nové jméno:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Soubor:"
+msgstr "Editovat filtry"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Scale:"
-msgstr ""
+msgstr "Zvětšení:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Fade In (s):"
@@ -3185,24 +3158,26 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Start!"
-msgstr ""
+msgstr "Start!"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Amount:"
-msgstr ""
+msgstr "Množství:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Blend:"
-msgstr ""
+msgstr "Prolínání:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend 0:"
-msgstr ""
+msgstr "Prolínání 0:"
#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
msgid "Blend 1:"
-msgstr ""
+msgstr "Prolínání 1:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "X-Fade Time (s):"
@@ -3210,11 +3185,11 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Current:"
-msgstr ""
+msgstr "Aktuální:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Add Input"
-msgstr ""
+msgstr "Přidat vstup"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Clear Auto-Advance"
@@ -3226,15 +3201,15 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Delete Input"
-msgstr ""
+msgstr "Odstranit vstup"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
-msgstr ""
+msgstr "Strom animace je platný."
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is invalid."
-msgstr ""
+msgstr "Strom animace je neplatný."
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation Node"
@@ -3274,7 +3249,7 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
-msgstr ""
+msgstr "Importovat animace.."
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Edit Node Filters"
@@ -3282,62 +3257,65 @@ msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Filters.."
-msgstr ""
+msgstr "Filtry.."
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Přiblížení animace."
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Free"
-msgstr ""
+msgstr "Uvolnit"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Contents:"
-msgstr "Spojité"
+msgstr "Obsah:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "View Files"
-msgstr "Soubor:"
+msgstr "Zobrazit soubory"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
-msgstr ""
+msgstr "Nelze přeložit název hostitele:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
-msgstr ""
+msgstr "Chyba připojení, zkuste to prosím znovu."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't connect to host:"
-msgstr "Připojit k uzlu:"
+msgstr "Nelze se připojit k hostiteli:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "No response from host:"
-msgstr ""
+msgstr "Žádná odpovÄ›Ä od hostitele:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Request failed, return code:"
-msgstr ""
+msgstr "Požadavek se nezdařil, návratový kód:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Request failed, too many redirects"
-msgstr ""
+msgstr "Požadavek se nezdařil, příliš mnoho přesměrování"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
+msgstr "Špatný hash staženého souboru, soubor byl nejspíše zfalšován."
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Expected:"
-msgstr ""
+msgstr "OÄekáváno:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Got:"
-msgstr ""
+msgstr "Staženo:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr ""
+msgstr "Neúspěšná kontrola sha256 hashe"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
@@ -3345,28 +3323,27 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "Stahuji:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Resolving.."
-msgstr ""
+msgstr "Zjišťování.."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Error making request"
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba při vytváření požadavku"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "NeÄinný"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Retry"
-msgstr ""
+msgstr "Opakovat"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download Error"
-msgstr ""
+msgstr "Chyba při stahování"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -3374,19 +3351,19 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "first"
-msgstr ""
+msgstr "první"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "prev"
-msgstr ""
+msgstr "předchozí"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "následující"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "last"
-msgstr ""
+msgstr "poslední"
#: editor/plugins/asset_library_editor_plugin.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -3396,7 +3373,7 @@ msgstr "Všechny"
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_settings_editor.cpp
msgid "Plugins"
-msgstr ""
+msgstr "Pluginy"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Sort:"
@@ -3449,16 +3426,18 @@ msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid "Bake Lightmaps"
-msgstr ""
+msgstr "Zapéct lightmapy"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
-msgstr ""
+msgstr "Náhled"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
-msgstr ""
+msgstr "Nastavení přichycování"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -3488,64 +3467,62 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move vertical guide"
-msgstr ""
+msgstr "Přesunout svislé vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Create new vertical guide"
-msgstr "Vytvořit odběr"
+msgstr "Vytvořit nové svislé vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Remove vertical guide"
-msgstr "Odstranit proměnnou"
+msgstr "Odstranit svislé vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move horizontal guide"
-msgstr ""
+msgstr "Přesunout vodorovné vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Create new horizontal guide"
-msgstr "Vytvořit odběr"
+msgstr "Vytvořit nové vodorovné vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Remove horizontal guide"
-msgstr "Odstranit neplatné klíÄe"
+msgstr "Odstranit vodorovné vodítko"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Create new horizontal and vertical guides"
-msgstr ""
+msgstr "Vytvořit nové vodorovné a svislé vodítka"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Edit IK Chain"
-msgstr ""
+msgstr "Upravit IK řetězec"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Anchors only"
-msgstr ""
+msgstr "Pouze kotvy"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Change Anchors and Margins"
-msgstr ""
+msgstr "Upravit kotvy a okraje"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Anchors"
-msgstr ""
+msgstr "Upravit kotvy"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode"
-msgstr "Vybrat vše"
+msgstr "Režim výběru"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
@@ -3565,11 +3542,11 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Mode"
-msgstr ""
+msgstr "Režim přesouvání"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotate Mode"
-msgstr ""
+msgstr "Režim otáÄení"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3587,21 +3564,21 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggles snapping"
-msgstr "Přepnout breakpoint"
+msgstr "Přepnout přichycování"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Snap"
-msgstr ""
+msgstr "Použít přichycování"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snapping options"
-msgstr ""
+msgstr "Možnosti přichytávání"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap to grid"
-msgstr ""
+msgstr "Přichytit k mřížce"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Rotation Snap"
@@ -3609,7 +3586,7 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap..."
-msgstr ""
+msgstr "Nastavení přichytávání..."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap Relative"
@@ -3684,28 +3661,30 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View"
-msgstr ""
+msgstr "Zobrazit"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Grid"
-msgstr ""
+msgstr "Zobrazit mřížku"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Show helpers"
-msgstr ""
+msgstr "Zobrazit pomocné"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show rulers"
-msgstr ""
+msgstr "Zobrazit pravítka"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show guides"
-msgstr ""
+msgstr "Zobrazit vodítka"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Center Selection"
-msgstr ""
+msgstr "Vycentrovat výběr"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Frame Selection"
@@ -3713,15 +3692,17 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
-msgstr ""
+msgstr "Rozložení"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Insert Keys"
-msgstr ""
+msgstr "Vložit klíÄe"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Insert Key"
-msgstr ""
+msgstr "Vložit klíÄ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
@@ -3729,11 +3710,11 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
-msgstr ""
+msgstr "Kopírovat pózu"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Pose"
-msgstr ""
+msgstr "Vymazat pózu"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag pivot from mouse position"
@@ -3754,31 +3735,33 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
-msgstr ""
+msgstr "Přidat %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Adding %s..."
-msgstr ""
+msgstr "Přidávám %s..."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
+msgid "Error instancing scene from %s"
+msgstr "Chyba instancování scény z %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Change default type"
-msgstr "Změnit typ hodnot pole"
+msgstr "Změnit výchozí typ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -3810,11 +3793,11 @@ msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import from Scene"
-msgstr ""
+msgstr "Importovat ze scény"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Update from Scene"
-msgstr ""
+msgstr "Aktualizovat ze scény"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat0"
@@ -3850,14 +3833,12 @@ msgid "Load Curve Preset"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Add point"
-msgstr "Přidat signál"
+msgstr "Přidat bod"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove point"
-msgstr "Odstranit signál"
+msgstr "Odstranit bod"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
@@ -3870,12 +3851,11 @@ msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr ""
+msgstr "NaÄíst preset"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Odstranit signál"
+msgstr "Odstranit bod křivky"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
@@ -3904,7 +3884,7 @@ msgstr ""
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Items"
-msgstr ""
+msgstr "Položky"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item List Editor"
@@ -3926,23 +3906,23 @@ msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Edit existing polygon:"
-msgstr ""
+msgstr "Upravit existující polygon:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "LMB: Move Point."
-msgstr ""
+msgstr "LMB: Přesunout bod."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
-msgstr ""
+msgstr "Ctrl+LMB: Rozdělit segment."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "RMB: Erase Point."
-msgstr ""
+msgstr "RMB: Vymazat bod."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
-msgstr ""
+msgstr "Mesh je prázdný!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
@@ -3986,23 +3966,23 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "MeshInstance nemá Mesh!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "Mesh némá povrch z jakého vytvořit obrysy!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
-msgstr ""
+msgstr "Nelze vytvořit obrys!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline"
-msgstr ""
+msgstr "Vytvořit obrys"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
-msgstr ""
+msgstr "Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
@@ -4025,26 +4005,26 @@ msgid "Create Outline Mesh.."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Soubor:"
+msgstr "Zobrazit UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Soubor:"
+msgstr "Zobrazit UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Rozbalit UV2 pro Lightmapu/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "Vytvořit mesh obrysu"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
-msgstr ""
+msgstr "Velikost obrysu:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -4056,7 +4036,7 @@ msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
-msgstr ""
+msgstr "Zdroj meshe je neplatný (neplatná cesta)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
@@ -4151,7 +4131,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4440,7 +4420,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
-msgstr ""
+msgstr "Vytvořit UV mapu"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
@@ -4452,7 +4432,7 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Point"
-msgstr ""
+msgstr "Přesunout bod"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Ctrl: Rotate"
@@ -4460,19 +4440,20 @@ msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift: Move All"
-msgstr ""
+msgstr "Shift: Přesunout vše"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#, fuzzy
msgid "Shift+Ctrl: Scale"
-msgstr ""
+msgstr "Shift+Ctrl: Zvětšení"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Polygon"
-msgstr ""
+msgstr "Přesunout polygon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Rotate Polygon"
-msgstr ""
+msgstr "OtoÄit polygon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Scale Polygon"
@@ -4488,54 +4469,54 @@ msgstr "Upravit"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
-msgstr ""
+msgstr "Polygon->UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV->Polygon"
-msgstr ""
+msgstr "UV->Polygon"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Clear UV"
-msgstr ""
+msgstr "Vymazat UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap"
-msgstr ""
+msgstr "Přichytit"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
-msgstr ""
+msgstr "Povolit přichytávání"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid"
-msgstr ""
+msgstr "Mřížka"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "ERROR: Couldn't load resource!"
-msgstr ""
+msgstr "Chyba: Nelze naÄíst zdroj!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Add Resource"
-msgstr ""
+msgstr "Přidat zdroj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Rename Resource"
-msgstr ""
+msgstr "Přejmenovat zdroj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Delete Resource"
-msgstr ""
+msgstr "Smazat zdroj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Resource clipboard is empty!"
-msgstr ""
+msgstr "Schránka zdroje je prázdná!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Load Resource"
-msgstr ""
+msgstr "NaÄíst zdroj"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4544,80 +4525,82 @@ msgstr ""
msgid "Paste"
msgstr "Vložit"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "Zdroj"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
-msgstr ""
+msgstr "Vymazat nedávné soubory"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
+msgid "Close and save changes?"
+msgstr "Zavřít a uložit změny?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
-msgstr ""
+msgstr "Chyba při ukládání motivu"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error saving"
-msgstr ""
+msgstr "Chyba při ukládání"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing theme"
-msgstr ""
+msgstr "Chyba při importu motivu"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing"
-msgstr ""
+msgstr "Chyba při importu"
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
-msgstr ""
+msgstr "Importovat motiv"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As.."
-msgstr ""
+msgstr "Uložit motiv jako.."
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid " Class Reference"
-msgstr ""
+msgstr " ReferenÄní třídy"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort"
-msgstr "Řadit:"
+msgstr "Seřadit"
#: 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 Up"
-msgstr ""
+msgstr "Přesunout nahoru"
#: 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 "Přesunout dolů"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
-msgstr ""
+msgstr "Další skript"
#: editor/plugins/script_editor_plugin.cpp
msgid "Previous script"
-msgstr ""
+msgstr "Předchozí skript"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
-msgstr ""
+msgstr "Soubor"
#: editor/plugins/script_editor_plugin.cpp
msgid "New"
-msgstr ""
+msgstr "Nový"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
-msgstr ""
+msgstr "Uložit vše"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
@@ -4629,41 +4612,44 @@ msgid "Copy Script Path"
msgstr "Zkopírovat uzly"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Zobrazit v systému souborů"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
-msgstr ""
+msgstr "Historie předchozí"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Next"
-msgstr ""
+msgstr "Historie další"
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
-msgstr ""
+msgstr "Znovu naÄíst motiv"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme"
-msgstr ""
+msgstr "Uložit motiv"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As"
-msgstr ""
+msgstr "Uložit motiv jako"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
-msgstr ""
+msgstr "Zavřít dokumentaci"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close All"
-msgstr "Zavřít"
+msgstr "Zavřít vše"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close Other Tabs"
-msgstr ""
+msgstr "Zavřít ostatní záložky"
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
msgid "Run"
-msgstr ""
+msgstr "Spustit"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
@@ -4672,20 +4658,21 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find.."
-msgstr ""
+msgstr "Najít.."
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find Next"
-msgstr ""
+msgstr "Najít další"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Over"
-msgstr ""
+msgstr "PÅ™eskoÄit"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Step Into"
-msgstr ""
+msgstr "Vstoupit"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Break"
@@ -4694,45 +4681,43 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_editor_debugger.cpp
msgid "Continue"
-msgstr ""
+msgstr "PokraÄovat"
#: editor/plugins/script_editor_plugin.cpp
msgid "Keep Debugger Open"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Editor závislostí"
+msgstr "Debugovat externím editorem"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
-msgstr ""
+msgstr "Otevřít Godot online dokumentaci"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
-msgstr ""
+msgstr "Hledat v hierarchii tříd."
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
-msgstr ""
+msgstr "Hledat v referenÄní dokumentaci."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to previous edited document."
-msgstr ""
+msgstr "Přejít na předchozí upravovaný dokument."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to next edited document."
-msgstr ""
+msgstr "Přejít na další upravovaný dokument."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "Diskrétní"
+msgstr "Zahodit"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
-msgstr ""
+msgstr "Vytvořit skript"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
@@ -4742,20 +4727,21 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload"
-msgstr ""
+msgstr "Znovu naÄíst"
#: editor/plugins/script_editor_plugin.cpp
msgid "Resave"
-msgstr ""
+msgstr "Znovu uložit"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr ""
+msgstr "Ladicí program"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Built-in scripts can only be edited when the scene they belong to is loaded"
msgstr ""
+"VestavÄ›né skripty lze editovat pouze pokud scéna, které náleží, je naÄtená"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
@@ -4763,23 +4749,24 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
-msgstr ""
+msgstr "Vyberte barvu"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Convert Case"
-msgstr ""
+msgstr "Převest písmena"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Velká písmena"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Malá písmena"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Velká písmena"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
@@ -4798,17 +4785,16 @@ msgid "Select All"
msgstr "Vybrat vše"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Odstranit"
+msgstr "Odstranit řádek"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
-msgstr ""
+msgstr "Odsadit zleva"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Right"
-msgstr ""
+msgstr "Odsadit zprava"
#: editor/plugins/script_text_editor.cpp
msgid "Toggle Comment"
@@ -4825,11 +4811,11 @@ msgstr "Běž na řádek"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
-msgstr ""
+msgstr "Složit všechny řádky"
#: editor/plugins/script_text_editor.cpp
msgid "Unfold All Lines"
-msgstr ""
+msgstr "Rozložit všechny řádky"
#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
@@ -4837,19 +4823,19 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Trim Trailing Whitespace"
-msgstr ""
+msgstr "Osekat koncové mezery"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Převést odsazení na mezery"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Převést odsazení na taby"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
-msgstr ""
+msgstr "Automatické odsazení"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -4858,15 +4844,15 @@ msgstr "Přepnout breakpoint"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr ""
+msgstr "Odstranit všechny breakpointy"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Next Breakpoint"
-msgstr ""
+msgstr "Přejít na další breakpoint"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Previous Breakpoint"
-msgstr ""
+msgstr "Přejít na předchozí breakpoint"
#: editor/plugins/script_text_editor.cpp
msgid "Convert To Uppercase"
@@ -4878,31 +4864,31 @@ msgstr "Konvertovat na malá písmena"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
-msgstr ""
+msgstr "Najít předchozí"
#: editor/plugins/script_text_editor.cpp
msgid "Replace.."
-msgstr ""
+msgstr "Nahradit.."
#: editor/plugins/script_text_editor.cpp
msgid "Goto Function.."
-msgstr ""
+msgstr "Přejít na funkci.."
#: editor/plugins/script_text_editor.cpp
msgid "Goto Line.."
-msgstr ""
+msgstr "Přejít na řádek.."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
-msgstr ""
+msgstr "Kontextová nápověda"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
-msgstr ""
+msgstr "Změnit skalární konstantu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Constant"
@@ -4910,11 +4896,11 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Constant"
-msgstr ""
+msgstr "Změna RGB konstanty"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Operator"
-msgstr ""
+msgstr "Změnit skalární operátor"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Operator"
@@ -4926,7 +4912,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Operator"
-msgstr ""
+msgstr "Změnit RGB operátor"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Toggle Rot Only"
@@ -4934,7 +4920,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Function"
-msgstr ""
+msgstr "Změnit skalární funkci"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Function"
@@ -4954,7 +4940,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Default Value"
-msgstr ""
+msgstr "Změnit výchozí hodnotu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
@@ -4970,7 +4956,7 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Comment"
-msgstr ""
+msgstr "Změnit komentář"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add/Remove to Color Ramp"
@@ -4982,19 +4968,19 @@ msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Modify Curve Map"
-msgstr ""
+msgstr "Upravit mapu křivky"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Input Name"
-msgstr ""
+msgstr "Změnit název vstupu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Connect Graph Nodes"
-msgstr ""
+msgstr "Propojit uzly grafu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Disconnect Graph Nodes"
-msgstr ""
+msgstr "Odpojit uzly grafu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Remove Shader Graph Node"
@@ -5026,11 +5012,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr ""
+msgstr "Ortogonální"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective"
-msgstr ""
+msgstr "Perspektivní"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
@@ -5063,101 +5049,105 @@ msgstr "Přechod"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
-msgstr ""
+msgstr "Rotuji %s stupňů."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
+msgid "Objects Drawn"
+msgstr "Objekty vykreslené"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
+msgid "Material Changes"
+msgstr "Změny materiálu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+msgid "Shader Changes"
+msgstr "Změny shaderu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
+msgid "Surface Changes"
+msgstr "Změny povrchu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr ""
+msgid "Draw Calls"
+msgstr "Vykreslovací volání"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
+#, fuzzy
+msgid "Vertices"
+msgstr "Vertexy"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr ""
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
+msgid "Top View."
+msgstr "Pohled shora."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr ""
+msgid "Bottom View."
+msgstr "Pohled zdola."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
+msgid "Bottom"
+msgstr "Dolní"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
+msgid "Left View."
+msgstr "Pohled zleva."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
+msgid "Left"
+msgstr "Levý"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+msgid "Right View."
+msgstr "Pohled zprava."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Změnit"
+msgid "Right"
+msgstr "Pravý"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+msgid "Front View."
+msgstr "Čelní pohled."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+msgid "Front"
+msgstr "Přední"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr ""
+msgid "Rear View."
+msgstr "Pohled zezadu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr ""
+msgid "Rear"
+msgstr "Zadní"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
-msgstr ""
+msgstr "Zarovnat s výhledem"
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
-msgstr ""
+msgstr "OK :("
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Tato operace vyžaduje jeden vybraný uzel."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5175,8 +5165,9 @@ msgid "Display Unshaded"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Environment"
-msgstr ""
+msgstr "Zobrazení prostředí"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Gizmos"
@@ -5184,17 +5175,15 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Zobrazit informace"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View FPS"
-msgstr "Soubor:"
+msgstr "Zobrazit FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Half Resolution"
-msgstr "Změnit měřítko výběru"
+msgstr "PoloviÄní rozliÅ¡ení"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
@@ -5207,45 +5196,39 @@ msgstr "Povolit"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
-msgstr ""
+msgstr "Volný pohled doleva"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Right"
-msgstr ""
+msgstr "Volný pohled doprava"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Forward"
-msgstr ""
+msgstr "Volný pohled vpřed"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Backwards"
-msgstr ""
+msgstr "Volný pohled dozadu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr ""
+msgstr "Volný pohled nahoru"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Down"
-msgstr "KoleÄko dolů."
+msgstr "Volný pohled dolů"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
+msgstr "Rychlost volného pohledu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Select Mode (Q)\n"
-msgstr "Vybrat vše"
+msgid "Select Mode (Q)"
+msgstr "Režim výběru (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5256,56 +5239,55 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
-msgstr ""
+msgstr "Režim posunu (W)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Mode (E)"
-msgstr ""
+msgstr "Režim otáÄení (E)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Mode (R)"
-msgstr ""
+msgstr "Režim zvětšování (R)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
-msgstr ""
+msgstr "Místní souřadnice"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Space Mode (%s)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Vybrat vše"
+msgstr "Režim přichycení (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
-msgstr ""
+msgstr "Pohled zdola"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View"
-msgstr ""
+msgstr "Pohled shora"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View"
-msgstr ""
+msgstr "Pohled zezadu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View"
-msgstr ""
+msgstr "Pohled zepředu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View"
-msgstr ""
+msgstr "Pohled zleva"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right View"
-msgstr ""
+msgstr "Pohled zprava"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal view"
-msgstr ""
+msgstr "Přepnout perspektivní/ortogonální pohled"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
@@ -5324,26 +5306,24 @@ msgid "Align Selection With View"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Všechny vybrané"
+msgstr "Nástroj Výběr"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Move"
-msgstr ""
+msgstr "Nástroj Přesunout"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Rotate"
-msgstr ""
+msgstr "Nástroj OtoÄit"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Scale"
-msgstr ""
+msgstr "Nástroj Zvětšení"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Freelook"
-msgstr "Přepnout breakpoint"
+msgstr "Přepnout volný pohled"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5351,7 +5331,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Configure Snap.."
-msgstr ""
+msgstr "Nastavit přichycení.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog.."
@@ -5392,7 +5372,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
-msgstr ""
+msgstr "Nastavení"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
@@ -5400,7 +5380,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
-msgstr ""
+msgstr "Nastavení přichycení"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate Snap:"
@@ -5408,19 +5388,20 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
-msgstr ""
+msgstr "Přichycení rotaze (stupně):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
-msgstr ""
+msgstr "Přichycení zvětšení (%):"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Viewport Settings"
-msgstr ""
+msgstr "Nastavení viewportu"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective FOV (deg.):"
-msgstr ""
+msgstr "Perspektivní FOV (stupně):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Near:"
@@ -5523,10 +5504,18 @@ msgstr "Zkopírovat uzly"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5552,14 +5541,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5594,9 +5586,8 @@ msgid "Remove All Items"
msgstr "Odstranit výběr"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Odebrat"
+msgstr "Odebrat vše"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Edit theme.."
@@ -5699,6 +5690,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5802,6 +5797,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Vytvořit složku"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Zrušit"
@@ -5817,9 +5837,8 @@ msgid "Delete patch '%s' from list?"
msgstr "Odstranit"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete preset '%s'?"
-msgstr "Odstranit vybrané soubory?"
+msgstr "Odstranit preset '%s'?"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing/corrupted: "
@@ -5885,9 +5904,8 @@ msgid "Custom (comma-separated):"
msgstr ""
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Seznam metod:"
+msgstr "Seznam funkcí:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -5906,18 +5924,15 @@ msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
msgid "The path does not exist."
-msgstr "Soubor neexistuje."
+msgstr "Cesta neexistuje."
#: editor/project_manager.cpp
msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5929,6 +5944,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Nelze vytvořit složku."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5953,9 +5976,8 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
msgid "Rename Project"
-msgstr "Nastavení projektu"
+msgstr "Přejmenovat projekt"
#: editor/project_manager.cpp
msgid "Couldn't get project.godot in the project path."
@@ -5970,19 +5992,30 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Vytvořit a editovat"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Instalovat a editovat"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
msgid "Create folder"
msgstr "Vytvořit složku"
@@ -5995,17 +6028,12 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
msgid "Can't open project"
-msgstr "Připojit.."
+msgstr "Nelze otevřít projekt"
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
@@ -6045,6 +6073,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Správce projektů"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Seznam projektů"
@@ -6073,9 +6105,8 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
msgid "Can't run project"
-msgstr "Připojit.."
+msgstr "Nelze spustit projekt"
#: editor/project_manager.cpp
msgid ""
@@ -6172,11 +6203,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Změnit"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6230,9 +6256,8 @@ msgid "Wheel Down."
msgstr "KoleÄko dolů."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Přidat vlastnost getter"
+msgstr "Přidat globální vlastnost"
#: editor/project_settings_editor.cpp
msgid "Select a setting item first!"
@@ -6247,14 +6272,12 @@ msgid "Setting '%s' is internal, and it can't be deleted."
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Odstranit"
+msgstr "Odstranit položku"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Can't contain '/' or ':'"
-msgstr "Připojit k uzlu:"
+msgstr "Nesmí obsaovat '/' nebo ':'"
#: editor/project_settings_editor.cpp
msgid "Already existing"
@@ -6314,9 +6337,8 @@ msgid "Changed Locale Filter Mode"
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Project Settings (project.godot)"
-msgstr "Nastavení projektu"
+msgstr "Nastavení projektu (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
@@ -6387,9 +6409,8 @@ msgid "Show only selected locales"
msgstr ""
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Filter mode:"
-msgstr "Filtr:"
+msgstr "Režim filtru:"
#: editor/project_settings_editor.cpp
msgid "Locales:"
@@ -6499,14 +6520,12 @@ msgid "Select Property"
msgstr "Přidat vlastnost setter"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Virtual Method"
-msgstr "Vybrat vše"
+msgstr "Vybrat virtuální metodu"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Method"
-msgstr "Vybrat vše"
+msgstr "Vybrat metodu"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
@@ -6566,10 +6585,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6654,9 +6669,8 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Sub-Resources:"
-msgstr "Zdroj"
+msgid "Sub-Resources"
+msgstr "DílÄí zdroje"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6687,9 +6701,8 @@ msgid "Attach Script"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Clear Script"
-msgstr "Vytvořit odběr"
+msgstr "Vymazat skript"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -6702,7 +6715,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Copy Node Path"
-msgstr "Zkopírovat uzly"
+msgstr "Kopírovat cestu uzlu"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -6721,7 +6734,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Filter nodes"
-msgstr "Filtr:"
+msgstr "Filtrovat uzly"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6734,7 +6747,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Remote"
-msgstr "Odebrat"
+msgstr "Vzdálený"
#: editor/scene_tree_dock.cpp
msgid "Local"
@@ -6783,9 +6796,8 @@ msgid "Instance:"
msgstr ""
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Spustit skript"
+msgstr "Otevřít skript"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -6824,19 +6836,16 @@ msgid "Select a Node"
msgstr ""
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba při nahrávání šablony '%s'"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "Nelze vytvořit složku."
+msgstr "Chyba - Nelze vytvořit skript v souborovém systému."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading script from %s"
-msgstr "Chyba nahrávání fontu."
+msgstr "Chyba nahrávání skriptu z %s"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -6872,9 +6881,8 @@ msgid "Wrong extension chosen"
msgstr ""
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Neplatná cesta."
+msgstr "Neplatná cesta"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
@@ -6898,9 +6906,8 @@ msgid "Built-in script (into scene file)"
msgstr ""
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Vytvořit odběr"
+msgstr "Vytvořit nový soubor skriptu"
#: editor/script_create_dialog.cpp
msgid "Load existing script file"
@@ -6919,14 +6926,12 @@ msgid "Class Name"
msgstr ""
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Odstranit výběr"
+msgstr "Å ablona"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
-msgstr "Spustit skript"
+msgstr "Vestavěný skript"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
@@ -6935,7 +6940,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Remote "
-msgstr "Odebrat"
+msgstr "Vzdálený "
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -6961,7 +6966,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6970,6 +6975,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Připojit.."
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7317,16 +7327,59 @@ msgstr "Změnit měřítko výběru"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "GridMap Settings"
-msgstr "Nastavení projektu"
+msgstr "Nastavení GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Nepodařilo se vytvořit řešení."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Nepodařilo se uložit řešení."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Vytvořit C# řešení"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Sestavit projekt"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
#, fuzzy
msgid ""
@@ -7365,9 +7418,8 @@ msgid "Stack overflow with stack depth: "
msgstr "PÅ™eteÄení zásobníku s hloubkou: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Upravit argumenty signálu:"
+msgstr "Upravit argumenty signálu"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -7375,18 +7427,16 @@ msgid "Change Argument Type"
msgstr "Změnit typ hodnot pole"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Změnit hodnotu pole"
+msgstr "Změnit název argumentu"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Default Value"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Upravit proměnnou:"
+msgstr "Nastavit typ proměnné"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7463,7 +7513,7 @@ msgstr ""
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Hold %s to drop a simple reference to the node."
-msgstr "Podržte Meta k uvolnění jednoduché reference na uzel."
+msgstr "Podržte %s k uvolnění jednoduché reference na uzel."
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
@@ -7473,7 +7523,7 @@ msgstr "Podržte Ctrl k uvolnění jednoduché reference na uzel."
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Hold %s to drop a Variable Setter."
-msgstr "Podržte Meta k uvolnění jednoduché reference na uzel."
+msgstr "Podržte %s k uvolnění jednoduché reference na uzel."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Variable Setter."
@@ -7496,29 +7546,24 @@ msgid "Add Setter Property"
msgstr "Přidat vlastnost setter"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Změnit typ hodnot pole"
+msgstr "Změnit základní typ"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Zkopírovat uzly"
+msgstr "Přesunout uzly"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Odstranit proměnnou"
+msgstr "Odstranit VisualScript uzel"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "Připojit k uzlu:"
+msgstr "Připojit uzly"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Condition"
-msgstr "Přechod"
+msgstr "Podmínka"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
@@ -7553,9 +7598,8 @@ msgid "Script already has function '%s'"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Input Value"
-msgstr "Změnit hodnotu pole"
+msgstr "Změnit vstupní hodnotu"
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't copy the function node."
@@ -7566,27 +7610,24 @@ msgid "Clipboard is empty!"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Vložit uzly"
+msgstr "Vložit VisualScript uzly"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Odstranit funkci"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Upravit proměnnou:"
+msgstr "Upravit proměnnou"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Odstranit proměnnou"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "Úprava signálu:"
+msgstr "Upravit signál"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7625,7 +7666,6 @@ msgid "Delete Selected"
msgstr "Smazat vybraný"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Find Node Type"
msgstr "Vyhledat typ uzlu"
@@ -7706,28 +7746,30 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not write file:\n"
-msgstr "Nelze vytvořit složku."
+msgid "Could not write file:"
+msgstr "Nelze zapsat soubor:"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not open template for export:\n"
-msgstr "Nelze vytvořit složku."
+msgid "Could not open template for export:"
+msgstr "Nelze otevřít šablonu pro export:"
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template:"
+msgstr "Neplatná šablona pro export:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
-msgstr "Neplatné jméno vlastnosti."
+msgid "Could not read custom HTML shell:"
+msgstr "Nelze vytvořit složku."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr "Nelze vytvořit složku."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "Nelze vytvořit složku."
#: scene/2d/animated_sprite.cpp
@@ -7747,6 +7789,13 @@ msgstr ""
"instancovaných scén). První vytvořená bude fungovat, ostatní budou "
"ignorovány."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7830,7 +7879,7 @@ msgstr "PathFollow2D funguje pouze když je dítětem uzlu Path2D."
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7890,6 +7939,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7947,8 +8003,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7997,9 +8053,8 @@ msgid "Please Confirm..."
msgstr "PotvrÄte prosím.."
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select this Folder"
-msgstr "Vybrat vše"
+msgstr "Vybrat tuto složku"
#: scene/gui/popup.cpp
msgid ""
@@ -8023,9 +8078,10 @@ msgid "(Other)"
msgstr "(Ostatní)"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Výchozí prostředí specifikované v nastavení projektu (Vykreslování -> "
"Zobrazovací výřez -> Výchozí prostÅ™edí) se nepodaÅ™ilo naÄíst."
@@ -8058,8 +8114,26 @@ msgstr "Chyba nahrávání fontu."
msgid "Invalid font size."
msgstr "Neplatná velikost fontu."
-#~ msgid "Create Subscription"
-#~ msgstr "Vytvořit odběr"
+#~ msgid "Next"
+#~ msgstr "Další"
+
+#~ msgid "Not found!"
+#~ msgstr "Nenalezeno!"
+
+#~ msgid "Replace By"
+#~ msgstr "Nahradit"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Rozlišovat velká a malá písmena"
+
+#~ msgid "Backwards"
+#~ msgstr "Pozpátku"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Potvrzovat nahrazení"
+
+#~ msgid "Skip"
+#~ msgstr "PÅ™eskoÄit"
#~ msgid "List:"
#~ msgstr "Seznam:"
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 8c7d899ea2..786cabcbdc 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -200,8 +200,7 @@ msgstr "Opret %d NYE spor og indsæt nøgler?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Opret"
@@ -379,14 +378,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Erstattede %d forekomst(er)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Erstat"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Erstat Alle"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Match stor/lille"
@@ -395,48 +386,16 @@ msgid "Whole Words"
msgstr "Hele Ord"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Kun Valgte"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Søg"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Find"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Næste"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ikke fundet!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Erstattes Af"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Forskel på små og store bogstaver"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Tilbage"
+msgid "Replace"
+msgstr "Erstat"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Spørg Ved Erstatning"
+msgid "Replace All"
+msgstr "Erstat Alle"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Spring Over"
+msgid "Selection Only"
+msgstr "Kun Valgte"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -557,6 +516,16 @@ msgstr "Signaler"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Skift Base Type"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Skift"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Opret Nyt"
@@ -668,7 +637,8 @@ msgstr ""
"Fjern dem alligevel? (ej fortrydes)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Kan ikke fjerne:\n"
#: editor/dependency_editor.cpp
@@ -751,8 +721,9 @@ msgstr "Projekt grundlæggere"
msgid "Lead Developer"
msgstr "Ledende Udvikler"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Projektleder"
#: editor/editor_about.cpp
@@ -841,7 +812,7 @@ msgid "Success!"
msgstr "Succes!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installér"
@@ -1156,7 +1127,8 @@ msgid "Packing"
msgstr "Pakker"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "Skabelon fil ikke fundet:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1371,6 +1343,22 @@ msgid "Description"
msgstr "Beskrivelse"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Online Dokumentation"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Der er i øjeblikket ingen beskrivelse af denne metode. Det vil være en stor "
+"hjælp, hvis du kan [color=$color][url=$url]bidrage[/url][/color] med en "
+"beskrivelse!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Egenskaber"
@@ -1408,6 +1396,10 @@ msgstr ""
msgid "Search Text"
msgstr "Søg Tekst"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Find"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Output:"
@@ -1419,6 +1411,11 @@ msgstr "Output:"
msgid "Clear"
msgstr "Clear"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Output"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Fejl, kan ikke gemme ressource!"
@@ -1427,8 +1424,8 @@ msgstr "Fejl, kan ikke gemme ressource!"
msgid "Save Resource As.."
msgstr "Gem Ressource Som.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "Jeg ser.."
@@ -1485,8 +1482,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Denne handling kan ikke foretages uden tree root"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Kunne ikke gemme scene. Der er nogle afhængigheder (forekomster) some ikke "
"kunne opfyldes."
@@ -2104,6 +2103,13 @@ msgstr "Hjælp"
msgid "Classes"
msgstr "Klasser"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Søg"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Online Dokumentation"
@@ -2492,7 +2498,7 @@ msgstr "Ingen version.txt fundet inde i skabeloner."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "Fejl ved oprettelse af sti til skabeloner:\n"
#: editor/export_template_manager.cpp
@@ -2654,9 +2660,8 @@ msgid "View items as a list"
msgstr "Vis emner som en liste"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"Status: Import af filen fejlede. Venligst reparer filen og genimporter "
@@ -2667,21 +2672,23 @@ msgid "Cannot move/rename resources root."
msgstr "Kan ikke flytte/omdøbe resourcen root."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+#, fuzzy
+msgid "Cannot move a folder into itself."
msgstr "Kan ikke flytte en mappe til sig selv\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "Fejl i flytning:\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Fejl under indlæsning:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+#, fuzzy
+msgid "Unable to update dependencies:"
msgstr "Kan ikke opdatere afhængigheder:\n"
#: editor/filesystem_dock.cpp
@@ -3330,6 +3337,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animation Zoom."
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3495,6 +3507,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3796,19 +3809,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4183,7 +4199,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4576,14 +4592,17 @@ msgstr ""
msgid "Paste"
msgstr "Indsæt"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Ressource"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4660,6 +4679,11 @@ msgid "Copy Script Path"
msgstr "Kopier Sti"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Vis I Fil Manager"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5092,83 +5116,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+msgid "Shader Changes"
+msgstr "Skift Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Skift Shader"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5183,6 +5207,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5256,15 +5284,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+#, fuzzy
+msgid "Select Mode (Q)"
msgstr "Vælg Mode (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5540,10 +5565,18 @@ msgstr "Flyt (Før)"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5569,14 +5602,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5714,6 +5750,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Slet valgte"
@@ -5815,6 +5855,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Gem den aktuelt redigerede ressource."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Annuller"
@@ -5922,9 +5987,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5936,6 +5999,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Kunne ikke oprette mappe."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5976,14 +6048,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importer"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Opret"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installér"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -6001,10 +6088,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6050,6 +6133,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projektleder"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6176,11 +6263,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Skift"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6559,10 +6641,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6648,7 +6726,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "Sub-Ressourcer:"
#: editor/scene_tree_dock.cpp
@@ -6941,7 +7019,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6950,6 +7028,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Indlæs Fejl"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7297,10 +7380,55 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Fejler med at indlæse ressource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Fejler med at indlæse ressource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Fejler med at indlæse ressource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Opret Abonnement"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Projekt"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7657,25 +7785,33 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, 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:\n"
+msgid "Could not open template for export:"
msgstr "Kan ikke åbne skabelon til eksport:\n"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+#, fuzzy
+msgid "Invalid export template:"
msgstr "Ugyldigt eksport skabelon:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+#, fuzzy
+msgid "Could not read custom 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:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Kan ikke læse boot splash billed fil:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "Kan ikke læse boot splash billed fil:\n"
#: scene/2d/animated_sprite.cpp
@@ -7695,6 +7831,13 @@ msgstr ""
"instanserede scener). Den første vil blive brugt, mens resten vil blive "
"ignoreret."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7780,7 +7923,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7841,6 +7984,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7898,8 +8048,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7972,8 +8122,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -8004,12 +8154,30 @@ msgstr "Error loading skrifttype."
msgid "Invalid font size."
msgstr "Ugyldig skriftstørrelse."
+#~ msgid "Next"
+#~ msgstr "Næste"
+
+#~ msgid "Not found!"
+#~ msgstr "Ikke fundet!"
+
+#~ msgid "Replace By"
+#~ msgstr "Erstattes Af"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Forskel på små og store bogstaver"
+
+#~ msgid "Backwards"
+#~ msgstr "Tilbage"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Spørg Ved Erstatning"
+
+#~ msgid "Skip"
+#~ msgstr "Spring Over"
+
#~ msgid "Move Add Key"
#~ msgstr "Flyt Add Key"
-#~ msgid "Create Subscription"
-#~ msgstr "Opret Abonnement"
-
#~ msgid "List:"
#~ msgstr "Liste:"
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 14316d4862..d0fa1597a5 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -19,16 +19,16 @@
# Paul-Vincent Roll <paviro@me.com>, 2016.
# Peter Friedland <peter_friedland@gmx.de>, 2016.
# No need for a name <endoplasmatik@gmx.net>, 2016.
-# So Wieso <sowieso@dukun.de>, 2016-2017.
+# So Wieso <sowieso@dukun.de>, 2016-2018.
# Tim Schellenberg <smwleod@gmail.com>, 2017.
-# Timo Schwarzer <account@timoschwarzer.com>, 2016.
+# Timo Schwarzer <account@timoschwarzer.com>, 2016-2018.
# viernullvier <hannes.breul+github@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-12-07 11:47+0000\n"
+"PO-Revision-Date: 2018-01-22 08:08+0000\n"
"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
@@ -37,7 +37,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -48,9 +48,8 @@ msgid "All Selection"
msgstr "Alle auswählen"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Anim Wert ändern"
+msgstr "Schlüsselbildzeit ändern"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -58,36 +57,35 @@ msgstr "Übergang beim Animationswechsel"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr "Anim ändere Transformation"
+msgstr "Transformation ändern"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Anim Wert ändern"
+msgstr "Schlüsselbildwert ändern"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr "Animation Änderungsaufruf"
+msgstr "Aufruf ändern"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr "Anim Spur hinzufügen"
+msgstr "Spur hinzufügen"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Anim doppelte Schlüsselbilder"
+msgstr "Schlüsselbild duplizieren"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr "Anim Spur nach oben verschieben"
+msgstr "Spur nach oben verschieben"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr "Anim Spur nach unten verschieben"
+msgstr "Spur nach unten verschieben"
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr "Anim Spur entfernen"
+msgstr "Spur entfernen"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
@@ -95,23 +93,23 @@ msgstr "Setze Übergänge auf:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr "Anim Spur umbenennen"
+msgstr "Spur umbenennen"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr "Anim Spur Interpolation ändern"
+msgstr "Interpolation der Spur ändern"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr "Anim Spur ändere Wert Modus"
+msgstr "Wertmodus der Spur ändern"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
-msgstr "Anim Spur ändere Wiederhol-Modus"
+msgstr "Wiederholmodus der Spur ändern"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
-msgstr "Node Kurve bearbeiten"
+msgstr "Node-Kurve bearbeiten"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
@@ -119,7 +117,7 @@ msgstr "Selektions-Kurve bearbeiten"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr "Anim Schlüsselbilder löschen"
+msgstr "Schlüsselbilder löschen"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -148,7 +146,7 @@ msgstr "Auslöser"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr "Anim Schlüsselszene hinzufügen"
+msgstr "Schlüsselbild hinzufügen"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
@@ -177,7 +175,7 @@ msgstr "Linear"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr "Konstante"
+msgstr "Konstant"
#: editor/animation_editor.cpp
msgid "In"
@@ -205,22 +203,21 @@ msgstr "Animation optimieren"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr "Animation aufräumen"
+msgstr "Animation bereinigen"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "Erstelle eine NEUE Spur für %s und füge ein Schlüsselbild hinzu?"
+msgstr "NEUE Spur für %s erstellenund Schlüsselbild hinzufügen?"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "Erstelle %d NEUE Spuren und füge Schlüsselbilder hinzu?"
+msgstr "%d NEUE Spuren erstelleb und Schlüsselbilder hinzufügen?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Erstellen"
@@ -238,23 +235,23 @@ msgstr "Schlüsselbild einfügen"
#: editor/animation_editor.cpp
msgid "Change Anim Len"
-msgstr "Ändere Animationslänge"
+msgstr "Animationslänge ändern"
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr "Ändere Animationswiederholung"
+msgstr "Animationswiederholung ändern"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
-msgstr "Animation Erstelle Typed Value Key"
+msgstr "Festgelegten Werteschlüssel erstellen"
#: editor/animation_editor.cpp
msgid "Anim Insert"
-msgstr "Anim einfügen"
+msgstr "Einfügen"
#: editor/animation_editor.cpp
msgid "Anim Scale Keys"
-msgstr "Skaliere Schlüsselbilder"
+msgstr "Schlüsselbilder skalieren"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
@@ -270,7 +267,7 @@ msgstr "Länge (s):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
-msgstr "Länge der Animation (in Sekunden)."
+msgstr "Animationslänge (in Sekunden)."
#: editor/animation_editor.cpp
msgid "Step (s):"
@@ -278,11 +275,11 @@ msgstr "Schritte (s):"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
-msgstr "Cursor Schritt Raster (in Sekunden)."
+msgstr "Cursor Schrittraster (in Sekunden)."
#: editor/animation_editor.cpp
msgid "Enable/Disable looping in animation."
-msgstr "Aktivieren / Deaktivieren der Schleife (Loop)."
+msgstr "Animationswiederholung aktivieren/deaktivieren."
#: editor/animation_editor.cpp
msgid "Add new tracks."
@@ -290,11 +287,11 @@ msgstr "Neue Spuren hinzufügen."
#: editor/animation_editor.cpp
msgid "Move current track up."
-msgstr "Aktuelle Spur hochschieben."
+msgstr "Aktuelle Spur nach oben verschieben."
#: editor/animation_editor.cpp
msgid "Move current track down."
-msgstr "Aktuelle Spur runterschieben."
+msgstr "Aktuelle Spur nach unten verschieben."
#: editor/animation_editor.cpp
msgid "Remove selected track."
@@ -306,11 +303,11 @@ msgstr "Spur-Werkzeuge"
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr "Aktiviere individuelle Schlüsselbildbearbeitung durch Anklicken."
+msgstr "Individuelle Schlüsselbildbearbeitung durch Anklicken aktivieren."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr "Anim. Optimierer"
+msgstr "Animationsoptimierer"
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
@@ -322,7 +319,7 @@ msgstr "Max. Winkel-Fehler:"
#: editor/animation_editor.cpp
msgid "Max Optimizable Angle:"
-msgstr "Maximal optimierbarer Winkel:"
+msgstr "Maximaler optimierbarer Winkel:"
#: editor/animation_editor.cpp
msgid "Optimize"
@@ -331,7 +328,7 @@ msgstr "Optimieren"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
msgstr ""
-"Wähle einen AnimationPlayer aus dem Szenenbaum um Animationen zu bearbeiten."
+"AnimationPlayer aus dem Szenenbaum auswählen um Animationen zu bearbeiten."
#: editor/animation_editor.cpp
msgid "Key"
@@ -347,7 +344,7 @@ msgstr "Skalierungsverhältnis:"
#: editor/animation_editor.cpp
msgid "Call Functions in Which Node?"
-msgstr "Rufe Funktion auf in welchem Node?"
+msgstr "In welcher Node sollen die Funktionen aufgerufen werden?"
#: editor/animation_editor.cpp
msgid "Remove invalid keys"
@@ -359,15 +356,15 @@ msgstr "Ungelöste und leere Spuren entfernen"
#: editor/animation_editor.cpp
msgid "Clean-up all animations"
-msgstr "Alle Animationen aufräumen"
+msgstr "Alle Animationen bereinigen"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr "Alle Animationen aufräumen (Nicht rückgängig zu machen!)"
+msgstr "Alle Animationen bereinigen (Kann nicht rückgängig gemacht werden!)"
#: editor/animation_editor.cpp
msgid "Clean-Up"
-msgstr "Aufräumen"
+msgstr "Bereinigen"
#: editor/array_property_edit.cpp
msgid "Resize Array"
@@ -398,14 +395,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Suchbegriff wurde %d mal ersetzt."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Ersetzen"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Alles ersetzen"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Groß-/Kleinschreibung berücksichtigen"
@@ -414,48 +403,16 @@ msgid "Whole Words"
msgstr "Ganze Wörter"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Nur Auswahl"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Suche"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Finde"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Nächste"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Nicht gefunden!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Ersetzen durch"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Fallunterscheidung"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Rückwärts"
+msgid "Replace"
+msgstr "Ersetzen"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Aufforderung beim Ersetzen"
+msgid "Replace All"
+msgstr "Alle ersetzen"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Überspringen"
+msgid "Selection Only"
+msgstr "Nur Auswahl"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -479,19 +436,19 @@ msgstr "Spalte:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr "Methode in Ziel-Node muss angegeben werden!"
+msgstr "In der Ziel-Node muss eine Methode angegeben werden!"
#: editor/connections_dialog.cpp
msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
-"Zielmethode nicht gefunden! Bitte gültige Methode angeben oder Skript an "
-"Zielnode anhängen."
+"Zielmethode nicht gefunden! Bitte geben Sie eine gültige Methode an oder "
+"fügen Sie ein Skript zur Ziel-Node hinzu."
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
-msgstr "Verbinde mit Node:"
+msgstr "Mit Node verbinden:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
@@ -512,11 +469,11 @@ msgstr "Zusätzlichen Aufrufparameter hinzufügen:"
#: editor/connections_dialog.cpp
msgid "Extra Call Arguments:"
-msgstr "zusätzliche Aufrufparameter:"
+msgstr "Zusätzliche Aufrufparameter:"
#: editor/connections_dialog.cpp
msgid "Path to Node:"
-msgstr "Pfad zu Node:"
+msgstr "Pfad zur Node:"
#: editor/connections_dialog.cpp
msgid "Make Function"
@@ -554,16 +511,15 @@ msgstr "Verbinde '%s' zu '%s'"
#: editor/connections_dialog.cpp
msgid "Connecting Signal:"
-msgstr "Verbinde Signal:"
+msgstr "Signal verbinden:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Verbinde '%s' zu '%s'"
+msgstr "'%s' von '%s' trennen"
#: editor/connections_dialog.cpp
msgid "Connect.."
-msgstr "Verbinde.."
+msgstr "Verbinden.."
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
@@ -575,9 +531,17 @@ msgid "Signals"
msgstr "Signale"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "%s-Typ ändern"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Ändern"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Neu erstellen"
+msgstr "%s erstellen"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -620,16 +584,16 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will not take effect unless reloaded."
msgstr ""
-"Szene '%s' wird momentan bearbeitet.\n"
-"Änderungen werden nicht vorgenommen, bis neu geladen wird."
+"Die Szene '%s' wird momentan bearbeitet.\n"
+"Änderungen werden nicht angezeigt bis die Szene neu geladen wird."
#: editor/dependency_editor.cpp
msgid ""
"Resource '%s' is in use.\n"
"Changes will take effect when reloaded."
msgstr ""
-"Ressource '%s' wird momentan benutzt.\n"
-"Änderungen werden erst dann aktiv, nachdem neu geladen wurde."
+"Die Ressource '%s' wird momentan benutzt.\n"
+"Änderungen werden erst nach Neuladen der Ressource aktiv."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -675,7 +639,9 @@ msgstr "Besitzer von:"
#: editor/dependency_editor.cpp
msgid "Remove selected files from the project? (no undo)"
-msgstr "Lösche ausgewählte Dateien aus dem Projekt? (nicht umkehrbar)"
+msgstr ""
+"Ausgewählte Dateien aus dem Projekt löschen? (Kann nicht rückgängig gemacht "
+"werden)"
#: editor/dependency_editor.cpp
msgid ""
@@ -683,21 +649,22 @@ msgid ""
"work.\n"
"Remove them anyway? (no undo)"
msgstr ""
-"Die zu entfernenden Dateien werden von anderen Ressourcen gebraucht damit "
+"Die zu entfernenden Dateien werden von anderen Ressourcen gebraucht, damit "
"sie richtig funktionieren können.\n"
-"Trotzdem entfernen? (Nicht Wiederherstellbar)"
+"Trotzdem entfernen? (Kann nicht rückgängig gemacht werden)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Kann nicht entfernt werden:\n"
+msgid "Cannot remove:"
+msgstr "Kann nicht entfernt werden:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
-msgstr "Ladefehler:"
+msgstr "Fehler beim Laden:"
#: editor/dependency_editor.cpp
msgid "Scene failed to load due to missing dependencies:"
-msgstr "Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:"
+msgstr ""
+"Die Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -713,11 +680,12 @@ msgstr "Abhängigkeiten reparieren"
#: editor/dependency_editor.cpp
msgid "Errors loading!"
-msgstr "Fehler beim laden!"
+msgstr "Fehler beim Laden!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "Entferne %d Datei(en) dauerhaft? (Nicht Wiederherstellbar)"
+msgstr ""
+"%d Datei(en) dauerhaft entfernen? (Kann nicht rückgängig gemacht werden)"
#: editor/dependency_editor.cpp
msgid "Owns"
@@ -729,7 +697,7 @@ msgstr "Ressource ohne direkte Zugehörigkeit:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Orphan Resource Explorer"
-msgstr "Ressourcenauflistung verwaister Dateien"
+msgstr "Unbenutzte Dateien ansehen"
#: editor/dependency_editor.cpp
msgid "Delete selected files?"
@@ -745,15 +713,15 @@ msgstr "Löschen"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
-msgstr "Dictionary-Schlüssel ändern"
+msgstr "Wörterbuchschlüssel ändern"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Value"
-msgstr "Dictionary-Wert ändern"
+msgstr "Wörterbuchwert ändern"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr "Danke von der Godot-Gemeinschaft!"
+msgstr "Danke von der Godot-Community!"
#: editor/editor_about.cpp
msgid "Thanks!"
@@ -761,7 +729,7 @@ msgstr "Danke!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr "Godot-Engine-Mitwirkende"
+msgstr "Mitwirkende der Godot Engine"
#: editor/editor_about.cpp
msgid "Project Founders"
@@ -771,9 +739,9 @@ msgstr "Projektgründer"
msgid "Lead Developer"
msgstr "Hauptentwickler"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Projektverwaltung"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Projektverwalter "
#: editor/editor_about.cpp
msgid "Developers"
@@ -785,7 +753,7 @@ msgstr "Autoren"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
-msgstr "Platin Sponsoren"
+msgstr "Platinum Sponsoren"
#: editor/editor_about.cpp
msgid "Gold Sponsors"
@@ -793,7 +761,7 @@ msgstr "Gold Sponsoren"
#: editor/editor_about.cpp
msgid "Mini Sponsors"
-msgstr "Klein Sponsoren"
+msgstr "Mini Sponsoren"
#: editor/editor_about.cpp
msgid "Gold Donors"
@@ -801,7 +769,7 @@ msgstr "Gold Unterstützer"
#: editor/editor_about.cpp
msgid "Silver Donors"
-msgstr "Silber Unterstützer"
+msgstr "Silver Unterstützer"
#: editor/editor_about.cpp
msgid "Bronze Donors"
@@ -846,15 +814,15 @@ 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."
+msgstr "Fehler beim Öffnen der Paketdatei, kein ZIP-Format."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr "Entpacke Nutzerinhalte"
+msgstr "Inhalte werden entpackt"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
-msgstr "Paket erfolgreich installiert!"
+msgstr "Das Paket wurde erfolgreich installiert!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -862,13 +830,13 @@ msgid "Success!"
msgstr "Erfolgreich!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installieren"
#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Paketinstallierung"
+msgstr "Paketinstaller"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -883,21 +851,20 @@ msgid "Rename Audio Bus"
msgstr "Audiobus umbenennen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Audiobus Solo-Status umschalten"
+msgstr "Lautstärke des Audiobus ändern"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr "Audiobus Solo-Status umschalten"
+msgstr "Audiobus Solo umschalten"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr "Audiobus stumm schalten"
+msgstr "Audiobus stummschalten"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr "Audiobus-Bypasseffekte umschalten"
+msgstr "Audiobus Bypasseffekte umschalten"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
@@ -917,11 +884,11 @@ msgstr "Audiobuseffekt löschen"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr "Audiobus, ziehen um umzusortieren."
+msgstr "Audiobus, Drag & Drop zum Umsortieren."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr "Einzeln"
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
@@ -929,7 +896,7 @@ msgstr "Stumm"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr "Überbrückung"
+msgstr "Bypass"
#: editor/editor_audio_buses.cpp
msgid "Bus options"
@@ -950,7 +917,7 @@ msgstr "Effekt löschen"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Audio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1131,13 +1098,12 @@ msgid "Updating scene.."
msgstr "Aktualisiere Szene..."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(leer)"
+msgstr "[leer]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[ungespeichert]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1177,8 +1143,8 @@ msgid "Packing"
msgstr "Packe"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Template-Datei nicht gefunden:\n"
+msgid "Template file not found:"
+msgstr "Vorlagendatei nicht gefunden:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1389,6 +1355,19 @@ msgid "Description"
msgstr "Beschreibung"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Anleitungen im Netz:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Es gibt zurzeit keine Tutorials zu dieser Klasse. [color=$color][url="
+"$url]Ergänzungen durch eigene Beiträge[/url][/color] sind sehr erwünscht!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Eigenschaften"
@@ -1424,6 +1403,10 @@ msgstr ""
msgid "Search Text"
msgstr "Suchtext"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Finden"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Ausgabe:"
@@ -1435,6 +1418,10 @@ msgstr "Ausgabe:"
msgid "Clear"
msgstr "Löschen"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Ausgabe löschen"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Fehler beim speichern der Ressource!"
@@ -1443,8 +1430,8 @@ msgstr "Fehler beim speichern der Ressource!"
msgid "Save Resource As.."
msgstr "Speichere Ressource als.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Verstehe..."
@@ -1498,10 +1485,11 @@ msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Szene konnte nicht gespeichert werden. Wahrscheinlich werden Abhängigkeiten "
-"(Instanzen) nicht erfüllt."
+"(Instanzen oder Vererbungen) nicht erfüllt."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1717,7 +1705,7 @@ msgstr "MeshLibrary exportieren"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
-msgstr "Diese Aktion kann nicht ohne eine ausgewählte Node ausgeführt werden."
+msgstr "Diese Aktion kann nicht ohne ein Wurzel-Node ausgeführt werden."
#: editor/editor_node.cpp
msgid "Export Tile Set"
@@ -2119,6 +2107,13 @@ msgstr "Hilfe"
msgid "Classes"
msgstr "Klassen"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Suchen"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Internetdokumentation"
@@ -2390,14 +2385,12 @@ msgid "Frame #:"
msgstr "Bild #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Zeit:"
+msgstr "Zeit"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Aufruf"
+msgstr "Aufrufe"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2504,8 +2497,8 @@ 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:\n"
-msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:\n"
+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"
@@ -2540,7 +2533,6 @@ msgstr "Keine Antwort."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Anfrage fehlgeschlagen."
@@ -2588,7 +2580,6 @@ msgid "Connecting.."
msgstr "Verbinde.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Keine Verbindung möglich"
@@ -2666,11 +2657,8 @@ msgid "View items as a list"
msgstr "Einträge als Liste anzeigen"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Status: Dateiimport fehlgeschlagen. Manuelle Reparatur und Neuimport nötig."
#: editor/filesystem_dock.cpp
@@ -2678,21 +2666,20 @@ msgid "Cannot move/rename resources root."
msgstr "Ressourcen-Wurzel kann nicht verschoben oder umbenannt werden."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Ordner kann nicht in sich selbst verschoben werden.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Ordner kann nicht in sich selbst verschoben werden."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Fehler beim Verschieben:\n"
+msgid "Error moving:"
+msgstr "Fehler beim Verschieben:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Ladefehler:"
+msgid "Error duplicating:"
+msgstr "Fehler beim Duplizieren:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Fehler beim Aktualisieren der Abhängigkeiten:\n"
+msgid "Unable to update dependencies:"
+msgstr "Fehler beim Aktualisieren der Abhängigkeiten:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2723,14 +2710,12 @@ msgid "Renaming folder:"
msgstr "Benenne Ordner um:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplizieren"
+msgstr "Dupliziere Datei:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Benenne Ordner um:"
+msgstr "Dupliziere Ordner:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2749,9 +2734,8 @@ msgid "Move To.."
msgstr "Verschiebe zu.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Szene öffnen"
+msgstr "Szene(n) öffnen"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2766,9 +2750,8 @@ msgid "View Owners.."
msgstr "Zeige Besitzer.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplizieren"
+msgstr "Duplizieren.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2865,14 +2848,12 @@ msgid "Importing Scene.."
msgstr "Szene wird importiert.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "übertrage zu Lightmaps:"
+msgstr "Generiere Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Erzeuge AABB"
+msgstr "Generierung für Mesh: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3340,6 +3321,10 @@ msgstr "Nodefilter bearbeiten"
msgid "Filters.."
msgstr "Filter.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimationTree"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Kostenlos"
@@ -3489,23 +3474,31 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Der Speicherpfad für Lightmap-Bilder kann nicht bestimmt werden.\n"
+"Speichern Sie die Szene (Bilder werden im gleichen Ordner gespeichert) oder "
+"legen Sie den Speicherpfad in den BakedLightmap-Eigenschaften fest."
#: 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 ""
+"Keine Meshes zum vorrendern vorhanden. Meshes, die vorgerendert werden "
+"sollen, müssen einen UV2-Kanal beinhalten und die ‚Bake Light‘-Option "
+"aktiviert haben."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Erstellung der Lightmap-Bilder fehlgeschlagen. Ist der Speicherpfad "
+"beschreibbar?"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "übertrage zu Lightmaps:"
+msgstr "Lightmaps vorrendern"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Vorschau"
@@ -3812,6 +3805,14 @@ msgstr "%s hinzufügen"
msgid "Adding %s..."
msgstr "%s hinzufügen…"
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "In­s­tan­zi­ie­ren mehrerer Nodes nicht möglich ohne Wurzel-Node."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3823,11 +3824,6 @@ msgid "Error instancing scene from %s"
msgstr "Fehler beim Instanziieren von %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Standardtyp ändern"
@@ -3935,7 +3931,7 @@ msgstr "Umsch halten um Tangenten einzeln zu bearbeiten"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr "GI Sonde einbetten"
+msgstr "GI Sonde vorrendern"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4020,19 +4016,20 @@ msgstr "Navigations-Mesh erzeugen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Beinhaltetes Mesh ist nicht vom Typ ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
msgstr ""
+"UV-Entfalten fehlgeschlagen, könnte das Mesh keine Mannigfaltigkeit sein?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Kein Mesh zu debuggen."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Modell besitzt kein UV in dieser Schicht"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4075,18 +4072,16 @@ msgid "Create Outline Mesh.."
msgstr "Umriss-Mesh erzeugen.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Ansicht"
+msgstr "UV1 zeigen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Ansicht"
+msgstr "UV2 zeigen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "UV2 entfalten für Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4199,11 +4194,11 @@ msgstr "Füllen"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr "Backen!"
+msgstr "Vorrendern!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Navigations-Mesh erzeugen.\n"
+msgid "Bake the navigation mesh."
+msgstr "Das Navigations-Mesh backen."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4593,17 +4588,17 @@ msgstr "Ressource laden"
msgid "Paste"
msgstr "Einfügen"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "Ressourcen-Vorlader"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Letzte Dateien leeren"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Schließen und Änderungen speichern?\n"
-"„"
+msgid "Close and save changes?"
+msgstr "Schließen und Änderungen speichern?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4674,9 +4669,12 @@ msgid "Soft Reload Script"
msgstr "Zaghaftes Skript-Neuladen"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Pfad kopieren"
+msgstr "Skriptpfad kopieren"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Im Dateisystem anzeigen"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4869,9 +4867,8 @@ msgid "Clone Down"
msgstr "Klone herunter"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Zeile aufklappen"
+msgstr "Zeile ein/aufklappen"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5115,84 +5112,84 @@ msgid "Rotating %s degrees."
msgstr "Rotiere %s Grad."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Sicht von unten."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Schlüsselbildeinfügen ist deaktiviert (kein Schlüsselbild eingefügt)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Unten"
+msgid "Animation Key Inserted."
+msgstr "Animationsschlüsselbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Sicht von oben."
+msgid "Objects Drawn"
+msgstr "Gezeichnete Objekte"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Sicht von hinten."
+msgid "Material Changes"
+msgstr "Materialänderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Hinten"
+msgid "Shader Changes"
+msgstr "Shader-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Sicht von Vorne."
+msgid "Surface Changes"
+msgstr "Oberflächen-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Vorne"
+msgid "Draw Calls"
+msgstr "Zeichenaufrufe"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Sicht von links."
+msgid "Vertices"
+msgstr "Vertices"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Links"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Sicht von Rechts."
+msgid "Top View."
+msgstr "Sicht von oben."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Rechts"
+msgid "Bottom View."
+msgstr "Sicht von unten."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Schlüsselbildeinfügen ist deaktiviert (kein Schlüsselbild eingefügt)."
+msgid "Bottom"
+msgstr "Unten"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Animationsschlüsselbild eingefügt."
+msgid "Left View."
+msgstr "Sicht von links."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Gezeichnete Objekte"
+msgid "Left"
+msgstr "Links"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Materialänderungen"
+msgid "Right View."
+msgstr "Sicht von Rechts."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Shader-Änderungen"
+msgid "Right"
+msgstr "Rechts"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Oberflächen-Änderungen"
+msgid "Front View."
+msgstr "Sicht von Vorne."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Zeichenaufrufe"
+msgid "Front"
+msgstr "Vorne"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vertices"
+msgid "Rear View."
+msgstr "Sicht von hinten."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Hinten"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5206,6 +5203,10 @@ msgstr "Verstehe"
msgid "No parent to instance a child at."
msgstr "Kein Node unter dem Unterobjekt instantiiert werden könnte vorhanden."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Normale Ansicht"
@@ -5279,16 +5280,12 @@ msgid "Freelook Speed Modifier"
msgstr "Freisicht Geschwindigkeitsregler"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "Vorschau"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Transformationsdialog"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Auswahlmodus (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Auswahlmodus (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5317,14 +5314,12 @@ msgid "Local Coords"
msgstr "Lokale Koordinaten"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Skalierungsmodus (R)"
+msgstr "Lokalkoordinatenmodus (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Einrastmodus:"
+msgstr "Einrastmodus (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5441,7 +5436,7 @@ msgstr "Einstellungen"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Skelett-Greifer-Sichtbarkeit"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5567,10 +5562,18 @@ msgstr "Davor bewegen"
msgid "Move (After)"
msgstr "Dahinter bewegen"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "Sprite-Einzelbilder"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox-Vorschau:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "Style-Box"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Bereichsrechteck setzen"
@@ -5596,14 +5599,17 @@ msgid "Auto Slice"
msgstr "Autoschnitt"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Versatz:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Schritt:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Trennung:"
@@ -5741,6 +5747,10 @@ msgstr "Schriftart"
msgid "Color"
msgstr "Farbe"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Motiv"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Auswahl löschen"
@@ -5826,9 +5836,8 @@ msgid "Merge from scene?"
msgstr "Aus Szene vereinen?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet.."
+msgstr "Kachelsatz"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5842,6 +5851,34 @@ msgstr "Aus Szene zusammenführen"
msgid "Error"
msgstr "Fehler"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Autokacheln"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Unterkachel zur Benutzung als Icon auswählen, dieses wird auch für ungültige "
+"Autokachelzuordnungen benutzt werden."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"LMT: Bit anstellen.\n"
+"RMT: Bit ausstellen."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Speichere die so eben bearbeitete Unterkachel."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Unterkachel auswählen um ihre Priorität zu ändern."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Abbrechen"
@@ -5953,12 +5990,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Eine ‚project.godot‘-Datei auswählen."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Das Projekt wir in einem nicht-leeren Ordner erstellt (meist sind leere "
-"Ordner die bessere Wahl)."
+msgid "Please choose an empty folder."
+msgstr "Bitte einen leeren Ordner auswählen."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5969,6 +6002,15 @@ msgid "Imported Project"
msgstr "Importiertes Projekt"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Ordner konnte nicht erstellt werden."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+"Es existiert bereits ein Ordner an diesem Pfad mit dem angegebenen Namen."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Es wird empfohlen das Projekt zu benennen."
@@ -6009,14 +6051,26 @@ msgid "Import Existing Project"
msgstr "Existierendes Projekt importieren"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importieren & Bearbeiten"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Erstelle neues Projekt"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Erstellen & Bearbeiten"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Installiere Projekt:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Installieren & Bearbeiten"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Projektname:"
@@ -6033,10 +6087,6 @@ msgid "Browse"
msgstr "Durchstöbern"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Aber klar :-) !"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Unbenanntes Projekt"
@@ -6093,6 +6143,10 @@ msgid ""
msgstr "Sollen wirklich %s Ordner nach Godot-Projekten durchsucht werden?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projektverwaltung"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Projektliste"
@@ -6221,11 +6275,6 @@ msgid "Button 9"
msgstr "Taste 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Ändern"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Joystickachsen-Index:"
@@ -6238,9 +6287,8 @@ msgid "Joypad Button Index:"
msgstr "Joysticktasten-Index:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Lösche Eingabeaktionsereignis"
+msgstr "Eingabeaktion löschen"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6488,7 +6536,7 @@ msgstr "Neues Skript"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Neues %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6523,9 +6571,8 @@ msgid "On"
msgstr "An"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Empty einfügen"
+msgstr "[leer]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6607,10 +6654,6 @@ msgid "Error loading scene from %s"
msgstr "Fehler beim Laden der Szene von %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6700,8 +6743,8 @@ msgid "Error duplicating scene to save it."
msgstr "Fehler beim Duplizieren der Szene zum Speichern."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Unter-Ressourcen:"
+msgid "Sub-Resources"
+msgstr "Unter-Ressourcen"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -7004,7 +7047,7 @@ msgstr "Funktion:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Ein oder mehrere Einträge der Liste auswählen um Graph anzuzeigen."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Fehler"
@@ -7013,6 +7056,10 @@ msgid "Child Process Connected"
msgstr "Unterprozess verbunden"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Kopierfehler"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Vorherige Instanz untersuchen"
@@ -7106,7 +7153,7 @@ msgstr "Tastenkürzel"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Zuordnung"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7158,43 +7205,39 @@ msgstr "Sondenausmaße ändern"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Dynamische Bibliothek für diesen Eintrag auswählen"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Abhängigkeiten der Bibliothek dieses Eintrags auswählen"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Kurvenpunkt entfernen"
+msgstr "Aktuellen Eintrag entfernen"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Neuen Eintrag mittels Doppelklick erstellen"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Plattform:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Kopiere zu Plattform.."
+msgstr "Plattform"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Bibliothek"
+msgstr "Dynamische Bibliothek"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Einen Architektureintrag hinzufügen"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNative-Bibliothek"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7366,10 +7409,50 @@ msgstr "GridMap-Einstellungen"
msgid "Pick Distance:"
msgstr "Auswahlradius:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Lösungen erzeugen..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "C#-Projekt erzeugen..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Fehler beim Erzeugen einer Lösung."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Fehler beim Speichern der Lösung."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Fertig"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "C#-Projekt-Erzeugen fehlgeschlagen."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Erzeuge C#-Lösung"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Fertigstellungen"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Projekt bauen"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Warnungen"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7732,24 +7815,28 @@ 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:\n"
-msgstr "Konnte Datei nicht schreiben:\n"
+msgid "Could not write file:"
+msgstr "Konnte Datei nicht schreiben:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Konnte Exportvorlage nicht öffnen:\n"
+msgid "Could not open template for export:"
+msgstr "Konnte Vorlage nicht zum Export öffnen:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Ungültige Exportvorlage:\n"
+msgid "Invalid export template:"
+msgstr "Ungültige Exportvorlage:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Konnte benutzerdefinierte HTML-Shell nicht lesen:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Konnte benutzerdefinierte HTML-Shell nicht lesen:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "Verwende Standard-Startbildschirm-Bilddatei."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7768,6 +7855,17 @@ msgstr ""
"instantiierten Szenen) erlaubt. Der zuerst erstellte wird verwendet, der "
"Rest wird ignoriert."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Dieses Node besitzt keine untergeordneten Formen, es kann deshalb nicht mit "
+"dem Raum interagieren.\n"
+"Es wird empfohlen CollisionShape2D oder CollisionPolygon2D Unterobjekte "
+"hinzuzufügen um seine Form festzulegen."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7863,7 +7961,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7919,23 +8017,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin benötigt ein ARVRCamera-Unterobjekt"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Plotte Mesh"
+msgstr "Plotte Meshe: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Plotte Mesh"
+msgstr "Plotte Lichter:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Stelle Plot fertig"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Plotte Mesh"
+msgstr "Beleuchte Meshe: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Dieses Node besitzt keine untergeordneten Formen, es kann deshalb nicht mit "
+"dem Raum interagieren.\n"
+"Es wird empfohlen CollisionShape oder CollisionPolygon Unterobjekte "
+"hinzuzufügen um seine Form festzulegen."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7995,8 +8101,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Größenänderungen von RigidBody (in Character- oder Rigid-Modus) werden "
@@ -8081,11 +8187,11 @@ msgstr "(Andere)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Das Standard-Environment wie festgelegt in den Projekteinstellungen "
-"(Rendering→Viewport→Standard-Environment) konnte nicht geladen werden."
+"(Rendering→Environment→Standard-Environment) konnte nicht geladen werden."
#: scene/main/viewport.cpp
msgid ""
@@ -8116,6 +8222,40 @@ msgstr "Fehler beim Laden der Schriftart."
msgid "Invalid font size."
msgstr "Ungültige Schriftgröße."
+#~ msgid "Next"
+#~ msgstr "Nächste"
+
+#~ msgid "Not found!"
+#~ msgstr "Nicht gefunden!"
+
+#~ msgid "Replace By"
+#~ msgstr "Ersetzen durch"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Groß-/Kleinschreibung beachten"
+
+#~ msgid "Backwards"
+#~ msgstr "Rückwärts"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Vor dem Ersetzen nachfragen"
+
+#~ msgid "Skip"
+#~ msgstr "Überspringen"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Das Projekt wir in einem nicht-leeren Ordner erstellt (meist sind leere "
+#~ "Ordner die bessere Wahl)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Aber klar :-) !"
+
+#~ msgid "preview"
+#~ msgstr "Vorschau"
+
#~ msgid "Move Add Key"
#~ msgstr "Schlüsselbild bewegen hinzufügen"
@@ -8212,9 +8352,6 @@ msgstr "Ungültige Schriftgröße."
#~ "‘ kann nicht aktiviert werden, Einlesen der Konfigurationsdatei "
#~ "fehlgeschlagen."
-#~ msgid "Theme"
-#~ msgstr "Motiv"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Methodenliste für '%s':"
@@ -8484,9 +8621,6 @@ msgstr "Ungültige Schriftgröße."
#~ msgid "Import Anyway"
#~ msgstr "Trotzdem importieren"
-#~ msgid "Import & Open"
-#~ msgstr "Importieren & Öffnen"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Bearbeitete Szene wurde nicht gespeichert, trotzdem importierte Szene "
@@ -8742,9 +8876,6 @@ msgstr "Ungültige Schriftgröße."
#~ msgid "Stereo"
#~ msgstr "Stereo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Tonhöhe"
@@ -8911,9 +9042,6 @@ msgstr "Ungültige Schriftgröße."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Signalisiert, wenn sich eine externe Ressource verändert hat."
-#~ msgid "Tutorials"
-#~ msgstr "Anleitungen"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Öffnet https://godotengine.org im Abschnitt ‚Tutorials‘."
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index 52cf8a1ec4..e0d10c9264 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -196,8 +196,7 @@ msgstr "Erstelle %d in neuer Ebene inklusiv Bild?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -374,14 +373,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -390,47 +381,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -550,6 +509,17 @@ msgstr ""
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Typ ändern"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "Typ ändern"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Node erstellen"
@@ -655,7 +625,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -740,9 +710,10 @@ msgstr "Projekt exportieren"
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
+msgstr "Projektname:"
#: editor/editor_about.cpp
msgid "Developers"
@@ -826,7 +797,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1138,7 +1109,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1352,6 +1323,17 @@ msgid "Description"
msgstr "Script hinzufügen"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1383,6 +1365,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1394,6 +1380,11 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Script hinzufügen"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1402,8 +1393,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1461,7 +1452,8 @@ msgstr "Ohne eine Szene kann das nicht funktionieren."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2026,6 +2018,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2410,7 +2409,7 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "Fehler beim Schreiben des Projekts PCK!"
#: editor/export_template_manager.cpp
@@ -2573,9 +2572,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2583,22 +2580,22 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "Szene kann nicht gespeichert werden."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Szene kann nicht gespeichert werden."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "Szene '%s' hat kapute Abhängigkeiten:"
#: editor/filesystem_dock.cpp
@@ -3252,6 +3249,11 @@ msgstr "Node Filter editieren"
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animations-Node"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3420,6 +3422,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3728,6 +3731,14 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Okay"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3739,11 +3750,6 @@ msgid "Error instancing scene from %s"
msgstr "Fehler beim Instanzieren der %s Szene"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Bitte nur ein Node selektieren."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Change default type"
msgstr "Typ ändern"
@@ -4118,7 +4124,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4515,14 +4521,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4598,6 +4606,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5033,85 +5045,85 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
+msgid "Keying is disabled (no key inserted)."
+msgstr "\"keying\" ist deaktiviert (Bild nicht hinzugefügt)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr ""
+msgid "Animation Key Inserted."
+msgstr "Animationsbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Typ ändern"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
+#, fuzzy
+msgid "Surface Changes"
+msgstr "Oberfläche %d"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "\"keying\" ist deaktiviert (Bild nicht hinzugefügt)."
+msgid "Bottom"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Animationsbild eingefügt."
+msgid "Left View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Typ ändern"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Surface Changes"
-msgstr "Oberfläche %d"
+msgid "Front View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5126,6 +5138,10 @@ msgstr "Okay :("
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Bitte nur ein Node selektieren."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5200,16 +5216,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Selektiere Node(s) zum Importieren aus"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5487,10 +5499,18 @@ msgstr "Node(s) entfernen"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5516,14 +5536,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5663,6 +5686,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5764,6 +5791,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Node(s) löschen"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Abbrechen"
@@ -5875,10 +5927,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5889,6 +5940,15 @@ msgid "Imported Project"
msgstr "Importierte Projekte"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Node erstellen"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5934,14 +5994,28 @@ msgid "Import Existing Project"
msgstr "Existierendes Projekt importieren"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importiere von folgendem Node:"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Neues Projekt erstellen"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Node erstellen"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Projektname:"
@@ -5959,10 +6033,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6009,6 +6079,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6137,12 +6211,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "Typ ändern"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6530,10 +6598,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Okay"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6619,7 +6683,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6923,7 +6987,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6932,6 +6996,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Connections editieren"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7282,10 +7351,51 @@ msgstr "Projekteinstellungen"
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Projektname:"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7654,23 +7764,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, fuzzy
+msgid "Could not write file:"
+msgstr "Neues Projekt erstellen"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7690,6 +7805,13 @@ msgstr ""
"instanzierten Szenen) erlaubt. Das erste erstellte gewinnt der Rest wird "
"ignoriert."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7769,7 +7891,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7833,6 +7955,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7878,8 +8007,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7947,8 +8076,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 20ded4a4fb..a1e1b1d4ae 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -190,8 +190,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -368,14 +367,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -384,47 +375,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -542,6 +501,15 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
msgstr ""
@@ -647,7 +615,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -730,8 +698,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -816,7 +784,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1123,7 +1091,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1335,6 +1303,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1366,6 +1345,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1377,6 +1360,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1385,8 +1372,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1440,7 +1427,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -1993,6 +1981,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2372,7 +2367,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2526,9 +2521,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2536,19 +2529,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3185,6 +3178,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3350,6 +3347,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3650,19 +3648,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4033,7 +4034,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4422,14 +4423,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4505,6 +4508,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4936,83 +4943,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5027,6 +5034,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5100,15 +5111,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5383,10 +5390,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5412,14 +5427,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5557,6 +5575,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5657,6 +5679,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5764,9 +5810,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5778,6 +5822,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5818,14 +5870,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5842,10 +5906,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5891,6 +5951,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6017,11 +6081,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6399,10 +6458,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6487,7 +6542,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6778,7 +6833,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6787,6 +6842,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7132,10 +7191,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7481,23 +7580,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7512,6 +7615,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7580,7 +7690,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7639,6 +7749,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7684,8 +7801,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7750,8 +7867,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 6b63d8eef8..e8841a9338 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -3,12 +3,12 @@
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
-# George Tsiamasiotis <gtsiam@windowslive.com>, 2017.
+# George Tsiamasiotis <gtsiam@windowslive.com>, 2017-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-05 21:46+0000\n"
+"PO-Revision-Date: 2018-01-24 19:46+0000\n"
"Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/"
"el/>\n"
@@ -16,7 +16,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -27,9 +27,8 @@ msgid "All Selection"
msgstr "Επιλογή όλων"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Anim Αλλαγή τιμής"
+msgstr "Anim Αλλαγή χÏόνου στιγμιοτÏπου"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -40,9 +39,8 @@ msgid "Anim Change Transform"
msgstr "Anim Αλλαγή Î¼ÎµÏ„Î±ÏƒÏ‡Î·Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (transform)"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Anim Αλλαγή τιμής"
+msgstr "Anim Αλλαγή τιμής στιγμιοτÏπου"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -198,8 +196,7 @@ msgstr "ΔημιουÏγία %d νέων κομματιών και εισαγωÎ
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "ΔημιουÏγία"
@@ -378,14 +375,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Αντικαταστάθηκαν %d εμφανίσεις."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Αντικατάσταση"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Αντικατάσταση όλων"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Αντιστοίχηση πεζών-κεφαλαίων"
@@ -394,48 +383,16 @@ msgid "Whole Words"
msgstr "ΟλόκληÏες λέξεις"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Μόνο στην επιλογή"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Αναζήτηση"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "ΕÏÏεση"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Επόμενο"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Δεν βÏέθηκε!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Αντικατάσταση με"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "ΔιάκÏιση πεζών-κεφαλαίων"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "ΑντίστÏοφα"
+msgid "Replace"
+msgstr "Αντικατάσταση"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Ρώτησε στην αντικατάσταση"
+msgid "Replace All"
+msgstr "Αντικατάσταση όλων"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "ΠαÏάλειψη"
+msgid "Selection Only"
+msgstr "Μόνο στην επιλογή"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -537,9 +494,8 @@ msgid "Connecting Signal:"
msgstr "ΣÏνδεση στο σήμα:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "ΣÏνδεση του '%s' στο '%s'"
+msgstr "ΑποσÏνδεση του '%s' απο το '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -555,9 +511,17 @@ msgid "Signals"
msgstr "Σήματα"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Αλλαγή Ï„Ïπου %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Αλλαγή"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "ΔημιουÏγία νέου"
+msgstr "ΔημιουÏγία νέου %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -667,8 +631,8 @@ msgstr ""
"Îα αφαιÏεθοÏν; (ΑδÏνατη η αναίÏεση)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "ΑδÏνατη η αφαίÏεση:\n"
+msgid "Cannot remove:"
+msgstr "ΑδÏνατη η αφαίÏεση:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -750,9 +714,9 @@ msgstr "ΙδÏυτές του έÏγου"
msgid "Lead Developer"
msgstr "Επικεφαλής Ï€ÏογÏαμματιστής"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "ΔιαχειÏιστής"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "ΔιαχειÏιστής έÏγων "
#: editor/editor_about.cpp
msgid "Developers"
@@ -841,7 +805,7 @@ msgid "Success!"
msgstr "Επιτυχία!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Εγκατάσταση"
@@ -862,9 +826,8 @@ msgid "Rename Audio Bus"
msgstr "Μετονομασία διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Εναλλαγή σόλο διαÏλου ήχου"
+msgstr "Αλλαγή έντασης διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -929,7 +892,7 @@ msgstr "ΔιαγÏαφή εφέ"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Ήχος"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1106,13 +1069,12 @@ msgid "Updating scene.."
msgstr "ΕνημέÏωση σκηνής.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(άδειο)"
+msgstr "[άδειο]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[μη αποθηκευμένο]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1152,8 +1114,8 @@ msgid "Packing"
msgstr "ΠακετάÏισμα"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Δεν βÏέθηκε το αÏχείο Ï€ÏοτÏπου:\n"
+msgid "Template file not found:"
+msgstr "Δεν βÏέθηκε αÏχείο Ï€ÏοτÏπου:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1364,6 +1326,20 @@ msgid "Description"
msgstr "ΠεÏιγÏαφή"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Online Tutorial:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Δεν υπάÏχει ακόμα βοήθεια για αυτήν την κλάση, μποÏείτε να την [color=$color]"
+"[url=$url]γÏάψετε[/url][/color] ή να την [color=$color][url=$url2]ζητήσετε[/"
+"url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Ιδιότητες"
@@ -1399,6 +1375,10 @@ msgstr ""
msgid "Search Text"
msgstr "Αναζήτηση κειμένου"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "ΕÏÏεση"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Έξοδος:"
@@ -1410,6 +1390,10 @@ msgstr "Έξοδος:"
msgid "Clear"
msgstr "ΕκκαθάÏιση"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "ΕκκαθάÏιση εξόδου"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Σφάλμα κατά την αποθήκευση πόÏου!"
@@ -1418,8 +1402,8 @@ msgstr "Σφάλμα κατά την αποθήκευση πόÏου!"
msgid "Save Resource As.."
msgstr "Αποθήκευση πόÏου ως.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Εντάξει.."
@@ -1473,10 +1457,11 @@ msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χÏ
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"ΑδÏνατη η αποθήκευση σκηνής. Πιθανώς οι εξαÏτήσεις (στιγμιότυπα) να μην "
-"μποÏοÏσαν να ικανοποιηθοÏν."
+"ΑδÏνατη η αποθήκευση σκηνής. Πιθανώς οι εξαÏτήσεις (στιγμιότυπα ή "
+"κληÏονομιά) να μην μποÏοÏσαν να ικανοποιηθοÏν."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -2097,13 +2082,20 @@ msgstr "Βοήθεια"
msgid "Classes"
msgstr "Κλάσεις"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Αναζήτηση"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "ΗλεκτÏονική τεκμηÏίωση"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr "ΕÏώτηση&Απάντηση"
+msgstr "ΕÏωτήσεις & Απαντήσεις"
#: editor/editor_node.cpp
msgid "Issue Tracker"
@@ -2368,14 +2360,12 @@ msgid "Frame #:"
msgstr "ΚαÏέ #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "ΧÏόνος:"
+msgstr "ΧÏόνος"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Κλήση"
+msgstr "Κλήσεις"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2482,8 +2472,8 @@ msgid "No version.txt found inside templates."
msgstr "Δεν βÏέθηκε version.txt μέσα στα Ï€Ïότυπα."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:\n"
+msgid "Error creating path for templates:"
+msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2518,7 +2508,6 @@ msgstr "Δεν λήφθηκε απόκÏιση."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Το αίτημα απέτυχε."
@@ -2566,9 +2555,8 @@ msgid "Connecting.."
msgstr "ΣÏνδεση.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
-msgstr "Δεν ήταν δυνατή η σÏνδεση"
+msgstr "ΑδÏνατη η σÏνδεση"
#: editor/export_template_manager.cpp
msgid "Connected"
@@ -2643,11 +2631,8 @@ msgid "View items as a list"
msgstr "Εμφάνιση αντικειμένων σε λίστα"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Κατάσταση: Η εισαγωγή απέτυχε. ΠαÏακαλοÏμε διοÏθώστε το αÏχείο και "
"επανεισάγετε το χειÏοκίνητα."
@@ -2656,21 +2641,20 @@ msgid "Cannot move/rename resources root."
msgstr "Δεν ήταν δυνατή η μετακίνηση/μετονομασία του πηγαίου καταλόγου."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Δεν είναι δυνατή η μετακίνηση ενός φακέλου στον εαυτό του.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Δεν είναι δυνατή η μετακίνηση ενός φακέλου στον εαυτό του."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Σφάλμα κατά την μετακίνηση:\n"
+msgid "Error moving:"
+msgstr "Σφάλμα κατά την μετακίνηση:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Σφάλμα κατά την φόÏτωση:"
+msgid "Error duplicating:"
+msgstr "Σφάλμα κατά τον διπλασιασμό:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "ΑδÏνατη η ενημέÏωση των εξαÏτήσεων:\n"
+msgid "Unable to update dependencies:"
+msgstr "ΑδÏνατη η ενημέÏωση των εξαÏτήσεων:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2701,14 +2685,12 @@ msgid "Renaming folder:"
msgstr "Μετονομασία καταλόγου:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Διπλασιασμός"
+msgstr "Διπλασιασμός αÏχείου:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Μετονομασία καταλόγου:"
+msgstr "Διπλασιασμός καταλόγου:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2727,7 +2709,6 @@ msgid "Move To.."
msgstr "Μετακίνηση σε"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
msgstr "Άνοιγμα σκηνής"
@@ -2744,9 +2725,8 @@ msgid "View Owners.."
msgstr "ΠÏοβολή ιδιοκτητών"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Διπλασιασμός"
+msgstr "ΑναπαÏαγωγή"
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2845,14 +2825,12 @@ msgid "Importing Scene.."
msgstr "Εισαγωγή σκηνής..."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "ΜεταφοÏά στους χάÏτες φωτός:"
+msgstr "ΔημιουÏγία χαÏτών φωτός"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "ΔημιουÏία AABB"
+msgstr "ΔημιουÏία για πλέγμα: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3146,7 +3124,7 @@ msgstr "Εξανάγκασε τονισμό άσπÏου"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
-msgstr "ΣυμπεÏιέλαβε μαÏαφέτια (3D)"
+msgstr "ΣυμπεÏιέλαβε τα μαÏαφέτια (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
@@ -3322,6 +3300,10 @@ msgstr "ΕπεξεÏγασία φίλτÏων κόμβων"
msgid "Filters.."
msgstr "ΦίλτÏα.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "ΔέντÏο κίνησης"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "ΔωÏεάν"
@@ -3472,23 +3454,31 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Δεν ήταν δυνατός ο Ï€ÏοσδιοÏισμός διαδÏομής για την αποθήκευση των χαÏτών "
+"φωτός.\n"
+"ΑποθηκεÏστε την σκηνή σας (για να αποθηκευτοÏν οι εικόνες στον ίδιο "
+"κατάλογο), ή επιλέξτε μία διαδÏομή από τις ιδιότητες του BakedLightMap."
#: 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' είναι ενεÏγοποιημένη."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Απέτυχε η δημιουÏγία του χάÏτη φψτός, σιγουÏευτείτε ότι η διαδÏομή είναι "
+"εγγÏάψιμη."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "ΜεταφοÏά στους χάÏτες φωτός:"
+msgstr "ΠÏοεπεξεÏγασία χαÏτών φωτός"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "ΠÏοεπισκόπηση"
@@ -3793,6 +3783,14 @@ msgstr "ΠÏόσθεσε %s"
msgid "Adding %s..."
msgstr "ΠÏοσθήκη %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Εντάξει"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Δεν είναι δυνατή η δημιουÏγία στιγμιότυπου χωÏίς Ïίζα."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3804,11 +3802,6 @@ msgid "Error instancing scene from %s"
msgstr "Σφάλμα κατά την αÏχικοποίηση σκηνής από %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Αυτή η λειτουÏγία απαιτεί έναν μόνο επιλεγμένο κόμβο."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Αλλαγή Ï€Ïοεπιλεγμένου Ï„Ïπου"
@@ -4001,19 +3994,19 @@ msgstr "ΔημιουÏγία πλέγματος πλοήγησης"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Το πεÏιεχόμενο πλέγμα δεν είναι Ï„Ïπου ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "Το ξεδίπλωμα των UV απέτυχε, το πλέγμα μποÏεί να μην είναι πολλαπλό?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Κανένα πλέγμα για αποσφαλμάτωση."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Το μοντέλο δεν έχει UV σε αυτό το στÏώμα"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4056,18 +4049,16 @@ msgid "Create Outline Mesh.."
msgstr "ΔημιουÏγία πλέγματος πεÏιγÏάμματος.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "ΚάμεÏα"
+msgstr "Εμφάνιση UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "ΚάμεÏα"
+msgstr "Εμφάνιση UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Ξεδίπλωμα UV2 για χάÏτη φωτός / ΑΟ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4181,11 +4172,11 @@ msgstr "ΣυμπλήÏωση"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr "ΠÏοεπεξεÏγάσου!"
+msgstr "ΠÏοετοίμασε!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "ΠÏοετοιμασία του πλέγματος πλοήγησης.\n"
+msgid "Bake the navigation mesh."
+msgstr "ΠÏοετοιμασία του πλέγματος πλοήγησης."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4575,17 +4566,17 @@ msgstr "ΦόÏτωση πόÏου"
msgid "Paste"
msgstr "Επικόληση"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ΠÏόφÏαμμα Ï€ÏοφόÏτωσης"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ΕκκαθάÏιση Ï€Ïόσφατων αÏχείων"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Κλείσιμο και αποθήκευση αλλαγών;\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Κλείσιμο και αποθήκευση αλλαγών;"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4656,9 +4647,12 @@ msgid "Soft Reload Script"
msgstr "Απλή επαναφόÏτωση δεσμής ενεÏγειών"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "ΑντιγÏαφή διαδÏομής"
+msgstr "ΑντιγÏαφή διαδÏομής δεσμής ενεÏγειών"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Εμφάνιση στο σÏστημα αÏχείων"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4851,9 +4845,8 @@ msgid "Clone Down"
msgstr "Κλωνοποίηση κάτω"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Ξεδίπλωμα γÏαμμής"
+msgstr "Δίπλωμα/Ξεδίπλωμα γÏαμμής"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5097,85 +5090,85 @@ msgid "Rotating %s degrees."
msgstr "ΠεÏιστÏοφή %s μοίÏες."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Κάτω όψη."
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
+"Η δημιουÏγία κλειδιών είναι απενεÏγοποιημένη (Δεν έχει εισαχθεί κλειδί)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Κάτω"
+msgid "Animation Key Inserted."
+msgstr "Το κλειδί κίνησης έχει εισαχθεί."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Πάνω όψη."
+msgid "Objects Drawn"
+msgstr "ΖωγÏαφισμένα αντικείμενα"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Πίσω όψη."
+msgid "Material Changes"
+msgstr "Αλλαγές υλικοÏ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Πίσω"
+msgid "Shader Changes"
+msgstr "Αλλαγές Ï€ÏογÏάμματος σκίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "ΕμπÏόσθια όψη."
+msgid "Surface Changes"
+msgstr "Αλλαγές επιφάνειας"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "ΜπÏοστά"
+msgid "Draw Calls"
+msgstr "Κλήσεις σχεδίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "ΑÏιστεÏή όψη."
+msgid "Vertices"
+msgstr "ΚοÏυφές"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "ΑÏιστεÏά"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Δεξιά όψη."
+msgid "Top View."
+msgstr "Πάνω όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Δεξιά"
+msgid "Bottom View."
+msgstr "Κάτω όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-"Η δημιουÏγία κλειδιών είναι απενεÏγοποιημένη (Δεν έχει εισαχθεί κλειδί)."
+msgid "Bottom"
+msgstr "Κάτω"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Το κλειδί κίνησης έχει εισαχθεί."
+msgid "Left View."
+msgstr "ΑÏιστεÏή όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "ΖωγÏαφισμένα αντικείμενα"
+msgid "Left"
+msgstr "ΑÏιστεÏά"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Αλλαγές υλικοÏ"
+msgid "Right View."
+msgstr "Δεξιά όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Αλλαγές Ï€ÏογÏάμματος σκίασης"
+msgid "Right"
+msgstr "Δεξιά"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Αλλαγές επιφάνειας"
+msgid "Front View."
+msgstr "ΕμπÏόσθια όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Κλήσεις σχεδίασης"
+msgid "Front"
+msgstr "ΜπÏοστά"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "ΚοÏυφές"
+msgid "Rear View."
+msgstr "Πίσω όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Πίσω"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5190,6 +5183,10 @@ msgid "No parent to instance a child at."
msgstr ""
"Δεν υπάÏχει γονέας στον οποίο μποÏεί να γίνει αÏχικοποίηση του παιδιοÏ."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Αυτή η λειτουÏγία απαιτεί έναν μόνο επιλεγμένο κόμβο."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Κανονική εμφάνιση"
@@ -5263,16 +5260,12 @@ msgid "Freelook Speed Modifier"
msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "ΠÏοεπισκόπηση"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Διάλογος XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Επιλογή λειτουÏγίας (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Επιλογή λειτουÏγίας (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5301,14 +5294,12 @@ msgid "Local Coords"
msgstr "Τοπικές συντεταγμένες"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "ΛειτουÏγία κλιμάκωσης (R)"
+msgstr "ΛειτουÏγία Ï„Î¿Ï€Î¹ÎºÎ¿Ï Ï‡ÏŽÏου (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "ΛειτουÏγία κουμπώματος:"
+msgstr "ΛειτουÏγία κουμπώματος (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5425,7 +5416,7 @@ msgstr "Ρυθμίσεις"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "ΟÏατότητα μαÏαφετιών σκελετοÏ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5551,10 +5542,18 @@ msgstr "Μετακίνηση (ΠÏιν)"
msgid "Move (After)"
msgstr "Μετκίνιση (Μετά)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "KαÏέ Sprite"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "ΠÏοεπισκόπηση StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "Κουτί Στυλ"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "ΟÏισμός οÏθογωνίου πεÏιοχής"
@@ -5580,14 +5579,17 @@ msgid "Auto Slice"
msgstr "Αυτόματο κόψιμο"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Μετατόπιση:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Βήμα:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "ΔιαχωÏισμός:"
@@ -5725,6 +5727,10 @@ msgstr "ΓÏαμματοσειÏά"
msgid "Color"
msgstr "ΧÏώμα"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Θέμα"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "ΔιαγÏαφή επιλογής"
@@ -5810,9 +5816,8 @@ msgid "Merge from scene?"
msgstr "Συγχώνευση από σκηνή;"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet..."
+msgstr "ΣÏνολο πλακιδίων"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5826,6 +5831,34 @@ msgstr "Συγχώνευση από σκηνή"
msgid "Error"
msgstr "Σφάλμα"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Αυτόματο πλακίδια"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Επιλέξτε υπότιτλο για εικονίδιο, o οποίος θα χÏησιμοποιείται και σε μη "
+"έγκυÏες συνδέσεις αυτόματων πλακιδίων."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"ΑÏιστεÏÏŒ κλικ: ενεÏγοποίησε το bit.\n"
+"Δεξί κλικ: απενεÏγοποίησε το bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Επέλεξε το Ï„Ïέχων επεξεÏγαζόμενο υπο-πλακίδιο."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Επιλέξτε υπο-πλακίδιο για να αλλάξετε την Ï€ÏοτεÏαιότητα του."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "ΑκÏÏωση"
@@ -5939,12 +5972,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "ΠαÏακαλοÏμε επιλέκτε ένα αÏχείο 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Το έÏγο θα δημιουÏγηθεί σε έναν μη-άδειο φάκελο (Ίσως θέλετε να "
-"δημιουÏγήσετε έναν καινοÏÏγιο)."
+msgid "Please choose an empty folder."
+msgstr "ΠαÏακαλοÏμε επιλέξτε έναν άδειο φάκελο."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5956,6 +5985,14 @@ msgid "Imported Project"
msgstr "Εισαγμένο έÏγο"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "ΥπάÏχει ήδη φάκελος στην διαδÏομή με το Ï€ÏοσδιοÏισμένο όνομα."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Είναι καλή ιδέα να ονομάσετε το έÏγο σας."
@@ -5997,14 +6034,26 @@ msgid "Import Existing Project"
msgstr "Εισαγωγή υπαÏÎºÏ„Î¿Ï Î­Ïγου"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Εισαγωγή & ΕπεξεÏγασία"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "ΔημιουÏγία νέου έÏγου"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "ΔημιουÏγία & ΕπεξεÏγασία"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Εγκατάσταση έÏγου:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Εγκατάσταση & ΕπεξεÏγασία"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Όνομα έÏγου:"
@@ -6021,10 +6070,6 @@ msgid "Browse"
msgstr "ΠεÏιήγηση"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Αυτό είναι ένα «ΕÏÏηκα»!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Ανώνυμο έÏγο"
@@ -6081,6 +6126,10 @@ msgstr ""
"Είστε έτοιμοι να σαÏώσετε %s φακέλους για υπαÏκτά έÏγα Godot. Είστε σίγουÏοι;"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ΔιαχειÏιστής"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Λίστα έÏγων"
@@ -6209,11 +6258,6 @@ msgid "Button 9"
msgstr "Κουμπί 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Αλλαγή"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "ΑÏιθμός άξονα Joypad:"
@@ -6226,9 +6270,8 @@ msgid "Joypad Button Index:"
msgstr "ΑÏιθμός ÎºÎ¿Ï…Î¼Ï€Î¹Î¿Ï Joypad:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "ΔιαγÏαφή συμβάντος ενέÏγειας εισόδου"
+msgstr "ΔιαγÏαφή ενέÏγειας εισόδου"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6476,7 +6519,7 @@ msgstr "Îεα δεσμή ενεÏγειών"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Îέο %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6511,9 +6554,8 @@ msgid "On"
msgstr "Îαι"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "ΠÏοσθήκη άδειου"
+msgstr "[Άδειο]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6595,10 +6637,6 @@ msgid "Error loading scene from %s"
msgstr "Σφάλμα κατά τη φόÏτωση σκηνής από %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Εντάξει"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6691,8 +6729,8 @@ msgid "Error duplicating scene to save it."
msgstr "Σφάλμα κατά τον διπλασιασμό σκηνής για αποθήκευση."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Yπο-ΠόÏοι:"
+msgid "Sub-Resources"
+msgstr "Yπο-ΠόÏοι"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6997,7 +7035,7 @@ msgstr ""
"Επιλέξτε ένα ή πεÏισσότεÏα αντικείμενα από την λίστα για να εμφανιστεί το "
"γÏάφημα."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Σφάλματα"
@@ -7006,6 +7044,10 @@ msgid "Child Process Connected"
msgstr "Η παιδική διαδικασία συνδέθηκε"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "ΑντιγÏαφή σφάλματος"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "ΕπιθεώÏηση του Ï€ÏοηγοÏμενου στιγμιοτÏπου"
@@ -7047,7 +7089,7 @@ msgstr "ΠαÏακολοÏθηση"
#: editor/script_editor_debugger.cpp
msgid "List of Video Memory Usage by Resource:"
-msgstr "Λίστα χÏήσης βιντεο-μνήμης ανά πόÏο:"
+msgstr "Λίστα χÏήσης βίντεο-μνήμης ανά πόÏο:"
#: editor/script_editor_debugger.cpp
msgid "Total:"
@@ -7055,7 +7097,7 @@ msgstr "Συνολικά:"
#: editor/script_editor_debugger.cpp
msgid "Video Mem"
-msgstr "βιντεο-μνήμη"
+msgstr "Βίντεο μνήμη"
#: editor/script_editor_debugger.cpp
msgid "Resource Path"
@@ -7099,7 +7141,7 @@ msgstr "ΣυντομεÏσεις"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "ΣÏνδεση"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7151,43 +7193,39 @@ msgstr "Αλλαγή διαστάσεων αισθητήÏα"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Επιλέξτε μία δυναμική βιβλιοθήκη για αυτή την εγγÏαφή"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Επιλέξτε τις εξαÏτήσεις της βιβλιοθήκης για αυτήν την εγγÏαφή"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "ΑφαίÏεση σημείου καμπÏλης"
+msgstr "ΑφαίÏεση Ï„Ïέχουσας εγγÏαφής"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Διπλό κλικ για καινοÏγια εγγÏαφή"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "ΠλατφόÏμα:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "ΑντιγÏαφή σε πλατφόÏμα.."
+msgstr "ΠλατφόÏμα"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Βιβλιοθήκη"
+msgstr "Δυναμική Βιβλιοθήκη"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "ΠÏοσθέστε ένα πεδίο αÏχιτεκτονικής"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "Βιβλιοθήκη GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7358,10 +7396,50 @@ msgstr "Ρυθμίσεις GridMap"
msgid "Pick Distance:"
msgstr "Επιλογή απόστασης:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "ΔημιουÏγία λÏσης..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "ΔημιουÏγία έÏγου C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Απέτυχε η δημιουÏγία λÏσης."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Απέτυχε η αποθήκευση της λÏσης."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Τέλος"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Απέτυχε η δημιουÏγία έÏγου C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Μονοφωνικό"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "ΔημιουÏγία λÏσης C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Δόμηση"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Δόμηση έÏγου"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "ΠÏοειδοποιήσεις"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7724,24 +7802,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Εκτέλεση εξαγόμενης HTMP στον Ï€Ïοεπιλεγμένο πεÏιηγητή του συστήματος."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "Δεν ήταν δυνατό το γÏάψιμο στο αÏχείο:\n"
+msgid "Could not write file:"
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Δεν ήταν δυνατό το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:\n"
+msgid "Invalid export template:"
+msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Σφάλμα κατά την ανάγνωση Ï€ÏοσαÏμοσμένου κελÏφους HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Δεν ήταν δυνατή η ανάγνωση του Ï€ÏοσαÏμοσμένου κελÏφους HTML:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Σφάλμα κατά την ανάγνωση εικόνας εκκίνησης:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Δεν ήταν δυνατή η ανάγνωση της εικόνας εκκίνησης:\n"
+msgid "Using default boot splash image."
+msgstr "ΧÏήση Ï€Ïοεπιλεγμένης εικόνας εκκίνησης."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7760,6 +7842,17 @@ msgstr ""
"στιγμιότυπων σκηνών). Το Ï€Ïώτο που δημιουÏγήθηκε θα δουλέψει, ενώ τα άλλα θα "
"αγνοηθοÏν."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Αυτός ο κόμβος δεν έχει παιδιά κόμβους σχήματος, οπότε δεν μποÏεί να "
+"αντιδÏάσει με το πεÏιβάλλον.\n"
+"Σκεφτείτε να Ï€Ïοσθέσετε CollisionShape2D ή CollisionPolygon2D για να οÏίσετε "
+"το σχήμα του."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7850,7 +7943,7 @@ msgstr "Το PathFollow2D δουλεÏει μόνο όταν κληÏονομεÎ
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7905,23 +7998,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "Το ARVROrigin απαιτεί έναν κόμβο ARVRCamera ως παιδί"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Τοποθέτηση πλεγμάτων"
+msgstr "Τοποθέτηση πλεγμάτων: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Τοποθέτηση πλεγμάτων"
+msgstr "Τοποθέτηση φώτων:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "ΟλοκλήÏωση σχεδιαγÏάμματος"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Τοποθέτηση πλεγμάτων"
+msgstr "Φώτηση πλεγμάτων: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Αυτός ο κόμβος δεν έχει παιδιά κόμβους σχήματος, οπότε δεν μποÏεί να "
+"αντιδÏάσει με το πεÏιβάλλον.\n"
+"Σκεφτείτε να Ï€Ïοσθέσετε CollisionShape ή CollisionPolygon για να οÏίσετε το "
+"σχήμα του."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7983,8 +8084,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Αλλαγές στο μέγεθος του RigidBody (στις λειτουÏγίες character ή rigid) θα "
@@ -8067,11 +8168,11 @@ msgstr "(Άλλο)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Το Ï€Ïοεπιλεγμένο πεÏιβάλλον, όπως έχει οÏισθεί στις Ïυθμίσεις έÏγου "
-"(Rendering -> Viewport -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί."
+"(Rendering -> Environment -> Default Environment) δεν μποÏοÏσε να φοÏτωθεί."
#: scene/main/viewport.cpp
msgid ""
@@ -8101,6 +8202,40 @@ msgstr "Σφάλμα κατά την φόÏτωση της γÏαμματοσεÎ
msgid "Invalid font size."
msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
+#~ msgid "Next"
+#~ msgstr "Επόμενο"
+
+#~ msgid "Not found!"
+#~ msgstr "Δεν βÏέθηκε!"
+
+#~ msgid "Replace By"
+#~ msgstr "Αντικατάσταση με"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "ΔιάκÏιση πεζών-κεφαλαίων"
+
+#~ msgid "Backwards"
+#~ msgstr "ΑντίστÏοφα"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Ρώτησε στην αντικατάσταση"
+
+#~ msgid "Skip"
+#~ msgstr "ΠαÏάλειψη"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Το έÏγο θα δημιουÏγηθεί σε έναν μη-άδειο φάκελο (Ίσως θέλετε να "
+#~ "δημιουÏγήσετε έναν καινοÏÏγιο)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Αυτό είναι ένα «ΕÏÏηκα»!"
+
+#~ msgid "preview"
+#~ msgstr "ΠÏοεπισκόπηση"
+
#~ msgid "Move Add Key"
#~ msgstr "Μετακίνηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï€Ïοσθήκης"
@@ -8194,9 +8329,6 @@ msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
#~ msgid "' parsing of config failed."
#~ msgstr "' απέτυχε η ανάλυση του αÏγείου παÏαμέτÏων."
-#~ msgid "Theme"
-#~ msgstr "Θέμα"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Λίστα συναÏτήσεων για '%s':"
@@ -8467,9 +8599,6 @@ msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
#~ msgid "Import Anyway"
#~ msgstr "Εισαγωγή οÏτως ή άλλως"
-#~ msgid "Import & Open"
-#~ msgstr "Εισαγωγή & Άνοιγμα"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, άνοιγμα της εισαγμένης σκηνής "
@@ -8729,9 +8858,6 @@ msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
#~ msgid "Stereo"
#~ msgstr "ΣτεÏεοφωνικό"
-#~ msgid "Mono"
-#~ msgstr "Μονοφωνικό"
-
#~ msgid "Pitch"
#~ msgstr "Τόνος"
@@ -8903,9 +9029,6 @@ msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Ειδοποίηση όταν ένας εξωτεÏικός πόÏος έχει αλλάξει."
-#~ msgid "Tutorials"
-#~ msgstr "Βοηθήματα"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr ""
#~ "Άνοιγμα της ιστοσελίδας https://godotengine.org στην πεÏιοχή tutorials."
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 328e50d9f2..df1a38d45b 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -218,8 +218,7 @@ msgstr "¿Quieres crear %d NUEVAS pistas e insertar claves?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Crear"
@@ -398,14 +397,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d ocurrencia/s reemplazadas."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Reemplazar"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Reemplazar todo"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Coincidir mayús/minúsculas"
@@ -414,48 +405,16 @@ msgid "Whole Words"
msgstr "Palabras completas"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Sólo selección"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Buscar"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Búsqueda"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Siguiente"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "¡No se ha encontrado!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Reemplazar por"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Respetar mayús/minúsculas"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Hacia atrás"
+msgid "Replace"
+msgstr "Reemplazar"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Preguntar antes de reemplazar"
+msgid "Replace All"
+msgstr "Reemplazar todo"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Saltar"
+msgid "Selection Only"
+msgstr "Sólo selección"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -576,6 +535,16 @@ msgstr "Señales"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Cambiar tipo"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Crear nuevo"
@@ -690,7 +659,8 @@ msgstr ""
"¿Seguro que quieres quitarlos? (No puedes deshacerlo)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "No se puede eliminar:\n"
#: editor/dependency_editor.cpp
@@ -773,8 +743,9 @@ msgstr "Los Fundadores del Proyecto"
msgid "Lead Developer"
msgstr "Desarrollador Principal"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Administrador de proyectos"
#: editor/editor_about.cpp
@@ -863,7 +834,7 @@ msgid "Success!"
msgstr "Finalizado!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instalar"
@@ -1178,7 +1149,8 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "No se encontró archivo plantilla:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1391,6 +1363,21 @@ msgid "Description"
msgstr "Descripción"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Tutoriales"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Actualmente no hay una descripción para este método. Por favor, ¡ayúdanos "
+"[color=$color][url=$url]aportando una[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propiedades"
@@ -1426,6 +1413,10 @@ msgstr ""
msgid "Search Text"
msgstr "Texto de búsqueda"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Búsqueda"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Salida:"
@@ -1437,6 +1428,11 @@ msgstr "Salida:"
msgid "Clear"
msgstr "Borrar todo"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Salida"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "¡Hubo un error al guardar el recurso!"
@@ -1445,8 +1441,8 @@ msgstr "¡Hubo un error al guardar el recurso!"
msgid "Save Resource As.."
msgstr "Guardar recurso como.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ya veo.."
@@ -1499,8 +1495,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Esta operación no puede realizarse sin una escena raíz."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"No se pudo guardar la escena. Es posible que no se hayan podido satisfacer "
"las dependencias (instancias)."
@@ -2121,6 +2119,13 @@ msgstr "Ayuda"
msgid "Classes"
msgstr "Clases"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Buscar"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentación en Línea"
@@ -2508,7 +2513,8 @@ msgid "No version.txt found inside templates."
msgstr "No se ha encontrado el archivo version.txt dentro de las plantillas."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Error al crear ruta para las plantillas:\n"
#: editor/export_template_manager.cpp
@@ -2672,9 +2678,8 @@ msgid "View items as a list"
msgstr "Ver elementos como una lista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"Estado: No se pudo importar el archivo. Por favor, arregla el archivo e "
@@ -2687,20 +2692,22 @@ msgstr "No se puede mover/renombrar la raíz de recursos."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr "No se puede importar una carpeta sobre si misma.\n"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+#, fuzzy
+msgid "Error moving:"
msgstr "Error al mover:\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Error al cargar:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+#, fuzzy
+msgid "Unable to update dependencies:"
msgstr "No se ha podido actualizar las dependencias:\n"
#: editor/filesystem_dock.cpp
@@ -3375,6 +3382,11 @@ msgstr "Editar filtros de nodo"
msgid "Filters.."
msgstr "Filtros.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animación"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Libre"
@@ -3544,6 +3556,7 @@ msgid "Bake Lightmaps"
msgstr "Transfiriendo a «lightmaps»:"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Vista previa"
@@ -3875,6 +3888,14 @@ msgstr "Añadir todos"
msgid "Adding %s..."
msgstr "Añadiendo %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Aceptar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3886,11 +3907,6 @@ msgid "Error instancing scene from %s"
msgstr "Error al instanciar escena desde %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Esta operación requiere un solo nodo seleccionado."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Change default type"
msgstr "Cambiar Valor por Defecto"
@@ -4284,7 +4300,7 @@ msgstr "¡Quemar!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
#, fuzzy
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr "Crear modelo de navegación 3D"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4711,15 +4727,19 @@ msgstr "Cargar recurso"
msgid "Paste"
msgstr "Pegar"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Ruta de recursos"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
msgstr "Reestablecer huesos"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"¿Cerrar y guardar cambios?\n"
"\""
@@ -4799,6 +4819,11 @@ msgid "Copy Script Path"
msgstr "Copiar ruta"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "SistDeArchivos"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr "Previo en historial"
@@ -5253,50 +5278,6 @@ msgid "Rotating %s degrees."
msgstr "Girando %s grados."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vista inferior."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Fondo"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vista superior."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vista anterior."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Detrás"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vista frontal."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Frente"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vista izquierda."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Izquierda"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vista derecha."
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Derecha"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Keying is disabled (no key inserted)."
msgstr "Poner claves está desactivado (no se insertaron claves)."
@@ -5339,6 +5320,50 @@ msgid "FPS"
msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View."
+msgstr "Vista superior."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View."
+msgstr "Vista inferior."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom"
+msgstr "Fondo"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View."
+msgstr "Vista izquierda."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left"
+msgstr "Izquierda"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View."
+msgstr "Vista derecha."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right"
+msgstr "Derecha"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View."
+msgstr "Vista frontal."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front"
+msgstr "Frente"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View."
+msgstr "Vista anterior."
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear"
+msgstr "Detrás"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
msgstr "Alinear con vista"
@@ -5350,6 +5375,10 @@ msgstr "Muy bien :("
msgid "No parent to instance a child at."
msgstr "No hay padre al que instanciarle un hijo."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Esta operación requiere un solo nodo seleccionado."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Mostrar normales"
@@ -5436,17 +5465,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de velocidad de la vista libre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "Vista previa"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Ventana de transformación"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Modo de selección"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5732,10 +5756,20 @@ msgstr "Borrar nodos"
msgid "Move (After)"
msgstr "Mover a la izquierda"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Frames del Stack"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Vista previa de StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Estilo"
+
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Set Region Rect"
@@ -5762,14 +5796,17 @@ msgid "Auto Slice"
msgstr "Autotrocear"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Desplazamiento:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Paso:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separación:"
@@ -5910,6 +5947,11 @@ msgstr "Tipografía"
msgid "Color"
msgstr "Color"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme"
+msgstr "Guardar tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -6016,6 +6058,32 @@ msgstr "Unir desde escena"
msgid "Error"
msgstr "Error"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "Autotrocear"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Guardar el recurso editado actualmente."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Cancelar"
@@ -6148,12 +6216,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "¡Prueba exportando fuera de la carpeta del proyecto!"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Tu proyecto se creará en un directorio existente (quizás quieras crear un "
-"directorio nuevo)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "¡Prueba exportando fuera de la carpeta del proyecto!"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6165,6 +6230,15 @@ msgid "Imported Project"
msgstr "Proyecto importado"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "No se pudo crear la carpeta."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Sería una buena idea nombrar tu proyecto."
@@ -6210,14 +6284,29 @@ msgid "Import Existing Project"
msgstr "Importar proyecto existente"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importar y abrir"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Crear proyecto nuevo"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Crear emisor"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Instalar proyecto:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Instalar"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nombre del proyecto:"
@@ -6235,10 +6324,6 @@ msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Proyecto sin nombre"
@@ -6299,6 +6384,10 @@ msgstr ""
"¿Quieres continuar?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Administrador de proyectos"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de proyectos"
@@ -6431,11 +6520,6 @@ msgid "Button 9"
msgstr "Botón 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambiar"
-
-#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Ãndice de ejes del mando:"
@@ -6845,10 +6929,6 @@ msgid "Error loading scene from %s"
msgstr "Error al cargar escena desde %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Aceptar"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6939,7 +7019,7 @@ msgstr "Error al duplicar escena para guardarla."
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "Recursos:"
#: editor/scene_tree_dock.cpp
@@ -7272,7 +7352,7 @@ msgstr "Función:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Elige uno o más elementos de la lista para mostrar el gráfico."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Errores"
@@ -7281,6 +7361,11 @@ msgid "Child Process Connected"
msgstr "Proceso Hijo Conectado"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Errores de carga"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspeccionar instancia anterior"
@@ -7664,11 +7749,59 @@ msgstr "Ajustes de fijado"
msgid "Pick Distance:"
msgstr "Instancia:"
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Creando octree de texturas"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "¡No se pudo crear el contorno!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Hubo un problema al cargar el recurso."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "¡Hecho!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Hubo un problema al cargar el recurso."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Crear contorno"
+
#: modules/mono/editor/mono_bottom_panel.cpp
#, fuzzy
msgid "Builds"
msgstr "Compilaciones"
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Proyecto"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "Advertencia"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -8060,27 +8193,32 @@ msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "No se pudo cargar el tile:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "No se pudo crear la carpeta."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Instalar plantillas de exportación"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "No se pudo cargar el tile:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "No se pudo cargar el tile:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "No se pudo cargar el tile:"
#: scene/2d/animated_sprite.cpp
@@ -8100,6 +8238,13 @@ msgstr ""
"instanciadas). El primero creado va a funcionar, mientras que el resto van a "
"ser ignorados."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -8190,7 +8335,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
#, fuzzy
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8263,6 +8408,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr "Copiando datos de imágenes"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8325,8 +8477,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Los cambios en el tamaño del RigidBody (en el personaje o modos rígidos) "
@@ -8411,9 +8563,10 @@ msgid "(Other)"
msgstr "(Otros)"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"El entorno por defecto especificado en los Ajustes del Proyecto (Renderizado "
"-> Ventana -> Entorno por Defecto) no se ha podido cargar."
@@ -8446,6 +8599,41 @@ msgstr "Error al cargar la tipografía."
msgid "Invalid font size."
msgstr "Tamaño de tipografía incorrecto."
+#~ msgid "Next"
+#~ msgstr "Siguiente"
+
+#~ msgid "Not found!"
+#~ msgstr "¡No se ha encontrado!"
+
+#~ msgid "Replace By"
+#~ msgstr "Reemplazar por"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Respetar mayús/minúsculas"
+
+#~ msgid "Backwards"
+#~ msgstr "Hacia atrás"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Preguntar antes de reemplazar"
+
+#~ msgid "Skip"
+#~ msgstr "Saltar"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Tu proyecto se creará en un directorio existente (quizás quieras crear un "
+#~ "directorio nuevo)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "BINGO!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "Vista previa"
+
#~ msgid "Move Add Key"
#~ msgstr "Mover o añadir clave"
@@ -8546,10 +8734,6 @@ msgstr "Tamaño de tipografía incorrecto."
#~ msgid "' parsing of config failed."
#~ msgstr "' análisis de config fallido."
-#, fuzzy
-#~ msgid "Theme"
-#~ msgstr "Guardar tema"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Lista de métodos Para '%s':"
@@ -8824,9 +9008,6 @@ msgstr "Tamaño de tipografía incorrecto."
#~ msgid "Import Anyway"
#~ msgstr "Importar de todos modos"
-#~ msgid "Import & Open"
-#~ msgstr "Importar y abrir"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "La escena editada no se ha guardado, ¿Quieres abrir la escena importada "
@@ -9085,9 +9266,6 @@ msgstr "Tamaño de tipografía incorrecto."
#~ msgid "Stereo"
#~ msgstr "Estéreo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Altura"
@@ -9287,9 +9465,6 @@ msgstr "Tamaño de tipografía incorrecto."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Alerta cuando un recurso externo haya cambiado."
-#~ msgid "Tutorials"
-#~ msgstr "Tutoriales"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Abre https://godotengine.org en la sección de tutoriales."
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index a97f2361cc..55a1953d34 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -4,16 +4,16 @@
# This file is distributed under the same license as the Godot source code.
#
# Diego López <diegodario21@gmail.com>, 2017.
-# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017.
-# Roger BR <drai_kin@hotmail.com>, 2016.
+# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2018.
+# Roger Blanco Ribera <roger.blancoribera@gmail.com>, 2016-2018.
# Sebastian Silva <sebastian@sugarlabs.org>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-11-30 15:50+0000\n"
-"Last-Translator: Diego López <diegodario21@gmail.com>\n"
+"PO-Revision-Date: 2018-01-24 20:49+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"
"Language: es_AR\n"
@@ -21,7 +21,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -32,9 +32,8 @@ msgid "All Selection"
msgstr "Toda la Selección"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Cambiar valor de animación"
+msgstr "Cambiar Tiempo de Keyframe de Anim"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -45,9 +44,8 @@ msgid "Anim Change Transform"
msgstr "Cambiar Transform de Anim"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Cambiar valor de animación"
+msgstr "Cambiar Valor de Keyframe de Anim"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -203,8 +201,7 @@ msgstr "Crear %d NUEVOS tracks e insertar claves?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Crear"
@@ -382,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d ocurrencia(s) Reemplazadas."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Reemplazar"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Reemplazar Todo"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Coincidir Mayúsculas/Minúsculas"
@@ -398,48 +387,16 @@ msgid "Whole Words"
msgstr "Palabras Completas"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Solo Selección"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Buscar"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Encontrar"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Siguiente"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "No se encontró!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Reemplazar Por"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Respetar Mayúsculas/Minúsculas"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Hacia Atrás"
+msgid "Replace"
+msgstr "Reemplazar"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Preguntar Antes de Reemplazar"
+msgid "Replace All"
+msgstr "Reemplazar Todo"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Saltear"
+msgid "Selection Only"
+msgstr "Solo Selección"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -541,9 +498,8 @@ msgid "Connecting Signal:"
msgstr "Conectando Señal:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Conectar '%s' a '%s'"
+msgstr "Desconectar '%s' de '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -559,9 +515,17 @@ msgid "Signals"
msgstr "Señales"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Cambiar Tipo de %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambiar"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Crear Nuevo"
+msgstr "Crear Nuevo %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -670,8 +634,8 @@ msgstr ""
"Quitarlos de todos modos? (imposible deshacer)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "No se puede remover:\n"
+msgid "Cannot remove:"
+msgstr "No se puede remover:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -754,9 +718,9 @@ msgstr "Fundadores del Proyecto"
msgid "Lead Developer"
msgstr "Desarrollador Principal"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestor de Proyectos"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Gestor de Proyectos "
#: editor/editor_about.cpp
msgid "Developers"
@@ -844,7 +808,7 @@ msgid "Success!"
msgstr "Conseguido!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instalar"
@@ -865,9 +829,8 @@ msgid "Rename Audio Bus"
msgstr "Renombrar Bus de Audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Act./Desact. Solo de Bus de Audio"
+msgstr "Cambiar Volumen de Bus de Audio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -932,7 +895,7 @@ msgstr "Eliminar Efecto"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Audio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1113,13 +1076,12 @@ msgid "Updating scene.."
msgstr "Actualizando escena.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(vacío)"
+msgstr "[vacío]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[sin guardar]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1159,8 +1121,8 @@ msgid "Packing"
msgstr "Empaquetando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Plantilla no encontrada:\n"
+msgid "Template file not found:"
+msgstr "Plantilla no encontrada:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1371,6 +1333,20 @@ msgid "Description"
msgstr "Descripción"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Tutoriales En Linea:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Actualmente no existen tutoriales para esta clase, podés [color=$color][url="
+"$url]contribuir uno[/url][/color] o [color=$color][url=$url2]solicitar uno[/"
+"url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propiedades"
@@ -1406,6 +1382,10 @@ msgstr ""
msgid "Search Text"
msgstr "Texto de Búsqueda"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Encontrar"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Salida:"
@@ -1417,6 +1397,10 @@ msgstr "Salida:"
msgid "Clear"
msgstr "Limpiar"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Limpiar Salida"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Error al guardar el recurso!"
@@ -1425,8 +1409,8 @@ msgstr "Error al guardar el recurso!"
msgid "Save Resource As.."
msgstr "Guardar Recurso Como.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ya Veo.."
@@ -1480,10 +1464,11 @@ msgstr "Esta operación no puede hacerse sin una raíz de árbol."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"No se pudo guardar la escena. Probablemente no se hayan podido satisfacer "
-"dependencias (instancias)."
+"dependencias (instancias o herencia)."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1581,11 +1566,11 @@ msgstr "Colapsar todas las propiedades"
#: editor/editor_node.cpp
msgid "Copy Params"
-msgstr "Copiar Params"
+msgstr "Copiar Parámetros"
#: editor/editor_node.cpp
msgid "Paste Params"
-msgstr "Pegar Parametros"
+msgstr "Pegar Parámetros"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
@@ -2100,6 +2085,13 @@ msgstr "Ayuda"
msgid "Classes"
msgstr "Clases"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Buscar"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentación Online"
@@ -2287,7 +2279,7 @@ msgstr "Abrir en Editor de Script"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
-msgstr "Exportar Libreria de Assets"
+msgstr "Abrir Biblioteca de Assets"
#: editor/editor_node.cpp
msgid "Open the next Editor"
@@ -2371,14 +2363,12 @@ msgid "Frame #:"
msgstr "Frame #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Tiempo:"
+msgstr "Tiempo"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Llamar"
+msgstr "Llamadas"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2486,8 +2476,8 @@ 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:\n"
-msgstr "Error creando ruta para las plantillas:\n"
+msgid "Error creating path for templates:"
+msgstr "Error creando rutas para las plantillas:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2522,7 +2512,6 @@ msgstr "Sin respuesta."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Solicitud fallida."
@@ -2570,7 +2559,6 @@ msgid "Connecting.."
msgstr "Conectando.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "No se puede conectar"
@@ -2647,34 +2635,30 @@ msgid "View items as a list"
msgstr "Ver items como una lista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
-"Estado: Falló la importación del archivo. Por favor arregle el archivo y "
-"reimporta manualmente."
+"Estado: Falló la importación del archivo. Por favor arreglá el archivo y "
+"reimportá manualmente."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "No se puede mover/renombrar la raiz de recursos."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "No se puede mover una carpeta dento de si misma.\n"
+msgid "Cannot move a folder into itself."
+msgstr "No se puede mover una carpeta dentro de si misma."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Error al mover:\n"
+msgid "Error moving:"
+msgstr "Error al mover:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Error cargando:"
+msgid "Error duplicating:"
+msgstr "Error al duplicar:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "No se pudieron actualizar las dependencias:\n"
+msgid "Unable to update dependencies:"
+msgstr "No se pudieron actualizar las dependencias:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2705,14 +2689,12 @@ msgid "Renaming folder:"
msgstr "Renombrar carpeta:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplicar"
+msgstr "Duplicando archivo:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Renombrar carpeta:"
+msgstr "Duplicando carpeta:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2731,9 +2713,8 @@ msgid "Move To.."
msgstr "Mover A.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Abrir Escena"
+msgstr "Abrir Escena(s)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2748,9 +2729,8 @@ msgid "View Owners.."
msgstr "Ver Dueños.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplicar"
+msgstr "Duplicar.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2848,14 +2828,12 @@ msgid "Importing Scene.."
msgstr "Importando Escena.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Transferencia a Lightmaps:"
+msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Generando AABB"
+msgstr "Generando para Mesh: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3325,6 +3303,10 @@ msgstr "Editar Filtros de Nodo"
msgid "Filters.."
msgstr "Filtros.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimationTree"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Libre"
@@ -3474,23 +3456,30 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"No se pudo determinar una ruta de guardado para las imagenes de lightmap.\n"
+"Guardá tu escena (para imagenes a ser guardadas en el mismo directorio), o "
+"elegí una ruta de guardado desde las propiedades de BakedLightmap."
#: 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 ""
+"No hay meshes para hacer bake. Asegurate que contienen un canal UV2 y que el "
+"flag 'Bake Light' esta activado."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Error al crear imagenes de lightmap. Asegurate que la ruta tenga permiso de "
+"escritura."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Transferencia a Lightmaps:"
+msgstr "Hacer Bake de Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Vista Previa"
@@ -3795,6 +3784,14 @@ msgstr "Agregar %s"
msgid "Adding %s..."
msgstr "Agregando %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "No se puede instanciar múltiples nodos sin raíz."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3806,11 +3803,6 @@ msgid "Error instancing scene from %s"
msgstr "Error al instanciar escena desde %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Esta operación requiere un solo nodo seleccionado."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Cambiar typo por defecto"
@@ -4003,19 +3995,19 @@ msgstr "Crear Mesh de Navegación"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "La Mesh contenida no es del tipo ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "Fallo el UV Unwrap, la mesh podria no ser manifold?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "No hay meshes para debuguear."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "El modelo no tiene UV en esta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4058,18 +4050,16 @@ msgid "Create Outline Mesh.."
msgstr "Crear Outline Mesh.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Ver"
+msgstr "Ver UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Ver"
+msgstr "Ver UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Hacer Unwrap de UV2 para Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4185,8 +4175,8 @@ msgid "Bake!"
msgstr "Hacer Bake!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Hacer bake de mesh de navegación.\n"
+msgid "Bake the navigation mesh."
+msgstr "Hacer bake de mesh de navegación."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4575,17 +4565,17 @@ msgstr "Cargar Recurso"
msgid "Paste"
msgstr "Pegar"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ResourcePreloader"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Restablecer Archivos Recientes"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Cerrar y guardar cambios?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "¿Cerrar y guardar cambios?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4656,9 +4646,12 @@ msgid "Soft Reload Script"
msgstr "Recarga Soft de Script"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Copiar Ruta"
+msgstr "Copiar Ruta de Script"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Mostrar en Sistema de Archivos"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4851,9 +4844,8 @@ msgid "Clone Down"
msgstr "Clonar hacia Abajo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Expandir Línea"
+msgstr "Expandir/Colapsar Línea"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5097,84 +5089,84 @@ msgid "Rotating %s degrees."
msgstr "Torando %s grados."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vista Inferior."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Poner claves está desactivado (no se insertaron claves)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Fondo"
+msgid "Animation Key Inserted."
+msgstr "Clave de Animación Insertada."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vista Superior."
+msgid "Objects Drawn"
+msgstr "Objetos Dibujados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vista Anterior."
+msgid "Material Changes"
+msgstr "Cambios de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Detrás"
+msgid "Shader Changes"
+msgstr "Cambios de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vista Frontal."
+msgid "Surface Changes"
+msgstr "Cambios de Superficie"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Frente"
+msgid "Draw Calls"
+msgstr "Llamadas de Dibujado"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vista Izquierda."
+msgid "Vertices"
+msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Izquierda"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vista Derecha."
+msgid "Top View."
+msgstr "Vista Superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Derecha"
+msgid "Bottom View."
+msgstr "Vista Inferior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Poner claves está desactivado (no se insertaron claves)."
+msgid "Bottom"
+msgstr "Fondo"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Clave de Animación Insertada."
+msgid "Left View."
+msgstr "Vista Izquierda."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Objetos Dibujados"
+msgid "Left"
+msgstr "Izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Cambios de Material"
+msgid "Right View."
+msgstr "Vista Derecha."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Cambios de Shader"
+msgid "Right"
+msgstr "Derecha"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Cambios de Superficie"
+msgid "Front View."
+msgstr "Vista Frontal."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Llamadas de Dibujado"
+msgid "Front"
+msgstr "Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vértices"
+msgid "Rear View."
+msgstr "Vista Anterior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Detrás"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5188,6 +5180,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "No hay padre al que instanciarle un hijo."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Esta operación requiere un solo nodo seleccionado."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Mostrar Normal"
@@ -5261,16 +5257,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de Velocidad de Vista Libre"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "vista previa"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Modo Seleccionar (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Modo Seleccionar (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5299,14 +5291,12 @@ msgid "Local Coords"
msgstr "Coordenadas Locales"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Modo de Escalado (R)"
+msgstr "Modo de Espacio Local (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Modo Snap:"
+msgstr "Modo de Snap (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5423,7 +5413,7 @@ msgstr "Configuración"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Visibilidad de Esqueleto de Gizmo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5549,10 +5539,18 @@ msgstr "Mover (Antes)"
msgid "Move (After)"
msgstr "Mover (Despues)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Vista Previa de StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Setear Region Rect"
@@ -5578,14 +5576,17 @@ msgid "Auto Slice"
msgstr "Auto Rebanar"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Offset:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Paso:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separación:"
@@ -5723,6 +5724,10 @@ msgstr "Tipografía"
msgid "Color"
msgstr "Color"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Eliminar Selección"
@@ -5808,9 +5813,8 @@ msgid "Merge from scene?"
msgstr "¿Mergear desde escena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet.."
+msgstr "Tile Set"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5824,6 +5828,34 @@ msgstr "Mergear desde Escena"
msgid "Error"
msgstr "Error"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Autotiles"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Selectionar sub-tile para usar como icono, esta también sera usada en "
+"bindings inválidos de autotile."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"Click izq: Activar bit.\n"
+"Click der: Desactivar bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Seleccionar sub-tile editado actualmente."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Seleccionar sub-tile para cambiar su prioridad."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Cancelar"
@@ -5939,12 +5971,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Por favor elegí un archivo 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Tu proyecto será creado en una carpeta no vacía (podrías preferir crear una "
-"carpeta nueva)."
+msgid "Please choose an empty folder."
+msgstr "Por favor elegí una carpeta vacía."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5956,6 +5984,14 @@ msgid "Imported Project"
msgstr "Proyecto Importado"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "No se pudo crear la carpeta."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "Ya hay una carpeta en esta ruta con el nombre especificado."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Sería buena idea darle un nombre a tu proyecto."
@@ -5996,14 +6032,26 @@ msgid "Import Existing Project"
msgstr "Importar Proyecto Existente"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importar y Editar"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Crear Proyecto Nuevo"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Crear y Editar"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Instalar Proyecto:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Instalar y Editar"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nombre del Proyecto:"
@@ -6020,10 +6068,6 @@ msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Proyecto Sin Nombre"
@@ -6082,6 +6126,10 @@ msgstr ""
"¿Confirmar?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestor de Proyectos"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Listado de Proyectos"
@@ -6210,11 +6258,6 @@ msgid "Button 9"
msgstr "Botón 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambiar"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Indice del Eje del Gamepad:"
@@ -6227,9 +6270,8 @@ msgid "Joypad Button Index:"
msgstr "Indice del Boton del Gamepad:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Borrar Evento de Acción de Entrada"
+msgstr "Borrar Acción de Entrada"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6477,7 +6519,7 @@ msgstr "Nuevo Script"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Nuevo %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6512,9 +6554,8 @@ msgid "On"
msgstr "On"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Agregar Vacío"
+msgstr "[Vacio]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6595,10 +6636,6 @@ msgid "Error loading scene from %s"
msgstr "Error al cargar escena desde %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6688,8 +6725,8 @@ msgid "Error duplicating scene to save it."
msgstr "Error al duplicar escena para guardarla."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Sub-Recursos:"
+msgid "Sub-Resources"
+msgstr "Sub-Recursos"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6992,7 +7029,7 @@ msgstr "Funcion:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Elegir uno o mas items de la lista para mostrar el gráfico."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Errores"
@@ -7001,6 +7038,10 @@ msgid "Child Process Connected"
msgstr "Proceso Hijo Conectado"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Erroes de Copia"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspeccionar Instancia Previa"
@@ -7094,7 +7135,7 @@ msgstr "Atajos"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Binding"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7146,43 +7187,39 @@ msgstr "Cambiar Extensión de Sonda"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Seleccionar una biblioteca dinamica para esta entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Seleccionar dependencias de la biblioteca para esta entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Quitar Punto de Curva"
+msgstr "Quitar ingreso actual"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Doble click para crear una nueva entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Plataforma:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Copiar A Plataforma.."
+msgstr "Plataforma"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Biblioteca"
+msgstr "Biblioteca Dinámica"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Agregar una entrada de arquitectura"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7354,10 +7391,50 @@ msgstr "Ajustes de GridMap"
msgid "Pick Distance:"
msgstr "Elegir Instancia:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Generando solución..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "Generando proyecto en C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "No se pudo crear la solución."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "No se pudo guardar la solución."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Hecho"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "No se pudo crear el proyecto en C#"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Crear solución en C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Builds"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Construir Proyecto"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Advertencias"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7718,24 +7795,28 @@ 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:\n"
-msgstr "No se pudo escribir el archivo:\n"
+msgid "Could not write file:"
+msgstr "No se pudo escribir el archivo:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "No se pudo abrir la plantilla para exportar:\n"
+msgid "Could not open template for export:"
+msgstr "No se pudo abrir la plantilla para exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Plantilla de exportación inválida:\n"
+msgid "Invalid export template:"
+msgstr "Plantilla de exportación inválida:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "No se pudo leer el shell HTML personalizado:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "No se pudo leer el shell HTML personalizado:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "No se pudo leer la imagen de boot splash:\n"
+msgid "Could not read boot splash image file:"
+msgstr "No se pudo leer la imagen de boot splash:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "Usando imagen boot splash por defecto."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7754,6 +7835,17 @@ msgstr ""
"instanciadas). El primero creado va a funcionar, mientras que el resto van a "
"ser ignorados."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Este nodo no tiene hijos de tipo shape, por lo tanto no puede interactuar "
+"con el espacio.\n"
+"Considerá agregarle nodos hijos de tipo CollisionShape2D o "
+"CollisionPolygon2D para definir su forma."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7842,7 +7934,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7895,23 +7987,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin requiere un nodo hijo ARVRCamera"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Ploteando Meshes"
+msgstr "Ploteando Meshes: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Ploteando Meshes"
+msgstr "Ploteando Luces:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Terminando Ploteo"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Ploteando Meshes"
+msgstr "Iluminando Meshes: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Este nodo no tiene hijos de tipo shape, asi que no puede interactuar con el "
+"espacio.\n"
+"Considerá agregarle nodos hijos de tipo CollisionShape o CollisionPolygon "
+"para definir su forma."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7969,8 +8069,8 @@ msgstr "Nada visible ya que no se asigno pasadas de dibujado a los meshes."
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Los cambios de tamaño a RigidBody (en modo character o rigid) seran "
@@ -8051,10 +8151,10 @@ msgstr "(Otro)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
-"El Entorno por Defecto especificado en Configuracion del Editor (Rendering -"
+"El Entorno por Defecto especificado en Configuración del Editor (Rendering -"
"> Viewport -> Entorno por Defecto) no pudo ser cargado."
#: scene/main/viewport.cpp
@@ -8085,6 +8185,40 @@ msgstr "Error cargando tipografía."
msgid "Invalid font size."
msgstr "Tamaño de tipografía inválido."
+#~ msgid "Next"
+#~ msgstr "Siguiente"
+
+#~ msgid "Not found!"
+#~ msgstr "No se encontró!"
+
+#~ msgid "Replace By"
+#~ msgstr "Reemplazar Por"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Respetar Mayúsculas/Minúsculas"
+
+#~ msgid "Backwards"
+#~ msgstr "Hacia Atrás"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Preguntar Antes de Reemplazar"
+
+#~ msgid "Skip"
+#~ msgstr "Saltear"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Tu proyecto será creado en una carpeta no vacía (podrías preferir crear "
+#~ "una carpeta nueva)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "BINGO!"
+
+#~ msgid "preview"
+#~ msgstr "vista previa"
+
#~ msgid "Move Add Key"
#~ msgstr "Mover o Agregar Clave"
@@ -8178,9 +8312,6 @@ msgstr "Tamaño de tipografía inválido."
#~ msgid "' parsing of config failed."
#~ msgstr "' falló el parseo de la configuración."
-#~ msgid "Theme"
-#~ msgstr "Tema"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Lista de Métodos Para '%s':"
@@ -8450,9 +8581,6 @@ msgstr "Tamaño de tipografía inválido."
#~ msgid "Import Anyway"
#~ msgstr "Importar de Todos Modos"
-#~ msgid "Import & Open"
-#~ msgstr "Importar y Abrir"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "La escena editada no ha sido guardada, abrir la escena importada de todos "
@@ -8710,9 +8838,6 @@ msgstr "Tamaño de tipografía inválido."
#~ msgid "Stereo"
#~ msgstr "Estereo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Altura"
@@ -8891,9 +9016,6 @@ msgstr "Tamaño de tipografía inválido."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Alerta cuando un recurso externo haya cambiado."
-#~ msgid "Tutorials"
-#~ msgstr "Tutoriales"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Abrir https://godotengine.org en la sección de tutoriales."
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index ec548d97ae..3d6b98f49d 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -203,8 +203,7 @@ msgstr "ساختن تعداد d% ترک جدید، ودرج کلیدها؟"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "ساختن"
@@ -383,14 +382,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "تعداد d% رخداد جایگزین شد."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "جایگزینی"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "جایگزینی همه"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "بین حرو٠کوچک و بزرگ لاتین تمایز قائل شو"
@@ -399,48 +390,16 @@ msgid "Whole Words"
msgstr "عین کلمات (بدون هیچ کم و کاستی)"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "تنها در قسمت انتخاب شده"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "جستجو"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "ÛŒØ§ÙØªÙ†"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "بعدی"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "چیزی ÛŒØ§ÙØª نشد!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "جایگزین کردن با"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "حساس به حالت (حرو٠لاتین)"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "به سمت عقب"
+msgid "Replace"
+msgstr "جایگزینی"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "موقع جایگزینی از کاربر بپرس"
+msgid "Replace All"
+msgstr "جایگزینی همه"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "رد کردن"
+msgid "Selection Only"
+msgstr "تنها در قسمت انتخاب شده"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -559,6 +518,16 @@ msgstr "سیگنال‌ها"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "تغییر نوع"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "تغییر بده"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "ساختن جدید"
@@ -671,7 +640,7 @@ msgstr ""
"آیا در هر صورت حذ٠شوند؟(بدون برگشت)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -754,8 +723,9 @@ msgstr "برپا کننده های پروژه"
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "مدیر پروژه"
#: editor/editor_about.cpp
@@ -840,7 +810,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1153,7 +1123,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1366,6 +1336,17 @@ msgid "Description"
msgstr "توضیح"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1397,6 +1378,10 @@ msgstr ""
msgid "Search Text"
msgstr "جستجوی متن"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "ÛŒØ§ÙØªÙ†"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "خروجی:"
@@ -1408,6 +1393,11 @@ msgstr "خروجی:"
msgid "Clear"
msgstr "پاک کردن"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "خروجی"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1416,8 +1406,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr "ذخیره منبع از ..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "من میبینم ..."
@@ -1474,7 +1464,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2030,6 +2021,13 @@ msgstr "راهنما"
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "جستجو"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2411,8 +2409,9 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr ""
+#, fuzzy
+msgid "Error creating path for templates:"
+msgstr "خطای بارگذاری قلم."
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2568,9 +2567,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2578,22 +2575,22 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "خطا در بارگذاری:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "خطا در بارگذاری:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "خطا در بارگذاری صحنه به دلیل بستگی‌های Ù…Ùقود:"
#: editor/filesystem_dock.cpp
@@ -3238,6 +3235,11 @@ msgstr "ویرایش صاÙÛŒ های گره"
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "گره انیمیشن"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3405,6 +3407,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3708,6 +3711,14 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3719,11 +3730,6 @@ msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Change default type"
msgstr "نوع مقدار آرایه را تغییر بده"
@@ -4096,7 +4102,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4489,14 +4495,17 @@ msgstr ""
msgid "Paste"
msgstr "چسباندن"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "منبع"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4574,6 +4583,11 @@ msgid "Copy Script Path"
msgstr "رونوشت مسیر گره"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "سامانه پرونده"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5012,84 +5026,84 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "تغییر بده"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "تغییر بده"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5104,6 +5118,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5181,16 +5199,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "انتخاب حالت"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5468,10 +5482,18 @@ msgstr "مسیر به سمت گره:"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5497,14 +5519,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5644,6 +5669,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5747,6 +5776,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "ساختن پوشه"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "لغو"
@@ -5859,9 +5913,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5873,6 +5925,15 @@ msgid "Imported Project"
msgstr "پروژه واردشده"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "ناتوان در ساختن پوشه."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5913,14 +5974,29 @@ msgid "Import Existing Project"
msgstr "وارد کردن پروژه موجود"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "وارد کردن"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "ساختن پروژه جدید"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "ساختن گره"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "نصب پروژه:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "(نصب شده)"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "نام پروژه:"
@@ -5937,10 +6013,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "پروژه بی نام"
@@ -5988,6 +6060,10 @@ msgstr ""
"آیا انجام این عمل را تایید می کنید؟‌"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "مدیر پروژه"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Ùهرست پروژه ها"
@@ -6114,11 +6190,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "تغییر بده"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6502,10 +6573,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6590,7 +6657,8 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+#, fuzzy
+msgid "Sub-Resources"
msgstr "زیرمنبع‌ها:"
#: editor/scene_tree_dock.cpp
@@ -6894,7 +6962,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6903,6 +6971,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "خطاهای بارگذاری"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7266,10 +7339,54 @@ msgstr "ترجیحات"
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "ناتوان در ساختن پوشه."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "پروژه"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7639,27 +7756,32 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "نام دارایی ایندکس نامعتبر."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: scene/2d/animated_sprite.cpp
@@ -7679,6 +7801,13 @@ msgstr ""
"نمونه‌گذاری شده) مجاز است. اولین مورد ایجاد شده کار خواهد کرد، در حالیکه از "
"بقیه صرÙنظر می‌شود."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7767,7 +7896,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7828,6 +7957,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7885,8 +8021,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7960,8 +8096,8 @@ msgstr "(دیگر)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7992,6 +8128,27 @@ msgstr "خطای بارگذاری قلم."
msgid "Invalid font size."
msgstr "اندازهٔ قلم نامعتبر."
+#~ msgid "Next"
+#~ msgstr "بعدی"
+
+#~ msgid "Not found!"
+#~ msgstr "چیزی ÛŒØ§ÙØª نشد!"
+
+#~ msgid "Replace By"
+#~ msgstr "جایگزین کردن با"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "حساس به حالت (حرو٠لاتین)"
+
+#~ msgid "Backwards"
+#~ msgstr "به سمت عقب"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "موقع جایگزینی از کاربر بپرس"
+
+#~ msgid "Skip"
+#~ msgstr "رد کردن"
+
#~ msgid "Move Add Key"
#~ msgstr "کلید Add را جابجا کن"
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index f0a58b9e1c..8e8636973e 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -5,21 +5,21 @@
#
# basse <basse@roiske.org>, 2017.
# Bastian Salmela <bastian.salmela@gmail.com>, 2017.
-# ekeimaja <ekeimaja@gmail.com>, 2017.
+# ekeimaja <ekeimaja@gmail.com>, 2017-2018.
# Jarmo Riikonen <amatrelan@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-03 11:31+0000\n"
-"Last-Translator: Bastian Salmela <bastian.salmela@gmail.com>\n"
+"PO-Revision-Date: 2018-01-24 12:10+0000\n"
+"Last-Translator: ekeimaja <ekeimaja@gmail.com>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
"Language: fi\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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -204,8 +204,7 @@ msgstr "Luo %d uutta raitaa ja lisää avaimet?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Luo"
@@ -386,14 +385,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Korvattu %d osuvuutta."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Korvaa"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Korvaa kaikki"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Huomioi kirjainkoko"
@@ -402,48 +393,16 @@ msgid "Whole Words"
msgstr "Kokonaisia sanoja"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Pelkkä valinta"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Hae"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Etsi"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Seuraava"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ei löytynyt!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
+msgid "Replace"
msgstr "Korvaa"
#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Merkkikokoriippuvainen"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Taaksepäin"
-
-#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Kysy vaihdettaessa"
+msgid "Replace All"
+msgstr "Korvaa kaikki"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Ohita"
+msgid "Selection Only"
+msgstr "Pelkkä valinta"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -564,6 +523,16 @@ msgstr "Signaalit"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Muuta tyyppiä"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Muuta"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Luo uusi"
@@ -677,7 +646,8 @@ msgstr ""
"Poistetaanko silti? (ei mahdollisuutta kumota)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Ei voida poistaa:\n"
#: editor/dependency_editor.cpp
@@ -764,8 +734,9 @@ msgstr "Projektin perustajat"
msgid "Lead Developer"
msgstr "Pääkehittäjä"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Projektinhallinta"
#: editor/editor_about.cpp
@@ -854,7 +825,7 @@ msgid "Success!"
msgstr "Onnistui!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Asenna"
@@ -1133,7 +1104,7 @@ msgstr "(tyhjä)"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[ei tallennettu]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1173,7 +1144,8 @@ msgid "Packing"
msgstr "Pakataan"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "Mallitiedostoa ei löytynyt:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1262,8 +1234,9 @@ msgid "Toggle Mode"
msgstr "Näytä/piilota"
#: editor/editor_file_dialog.cpp
+#, fuzzy
msgid "Focus Path"
-msgstr ""
+msgstr "Kohdista polku"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
@@ -1399,6 +1372,21 @@ msgstr "Kuvaus:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Oppaat"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Tälle metodille ei vielä löydy kuvailua. Voit auttaa meitä [color=$color]"
+"[url=$url]kirjoittamalla sellaisen[/url][/color]!"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Properties"
msgstr "Ominaisuudet:"
@@ -1436,6 +1424,10 @@ msgstr ""
msgid "Search Text"
msgstr "Hae tekstiä"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Etsi"
+
#: editor/editor_log.cpp
#, fuzzy
msgid "Output:"
@@ -1448,6 +1440,11 @@ msgstr " Tuloste:"
msgid "Clear"
msgstr "Tyhjennä"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Tuloste"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Virhe tallennettaessa resurssia!"
@@ -1456,8 +1453,8 @@ msgstr "Virhe tallennettaessa resurssia!"
msgid "Save Resource As.."
msgstr "Tallenna resurssi nimellä..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ymmärrän..."
@@ -1515,8 +1512,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Tätä toimintoa ei voi tehdä ilman Sceneä."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr "Sceneä ei voitu tallentaa. Riippuvuuksia ei voitu tyydyttää."
#: editor/editor_node.cpp
@@ -2129,6 +2128,13 @@ msgstr "Ohje"
msgid "Classes"
msgstr "Luokat"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Hae"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Dokumentaatio"
@@ -2519,7 +2525,8 @@ msgid "No version.txt found inside templates."
msgstr "version.txt -tiedostoa ei löytynyt."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Virhe luotaessa polkua mallille:\n"
#: editor/export_template_manager.cpp
@@ -2692,9 +2699,8 @@ msgid "View items as a list"
msgstr "Listanäkymä"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"Tila: Tuonti epäonnistui. Ole hyvä, korjaa tiedosto, ja tuo uudelleen."
@@ -2704,22 +2710,23 @@ msgid "Cannot move/rename resources root."
msgstr "Ei voitu siirtää/nimetä uudelleen resurssien päätasoa."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+#, fuzzy
+msgid "Cannot move a folder into itself."
msgstr "Hakemistoa ei voi siirtää itsensä sisään.\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "Virhe tuotaessa:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Virhe ladatessa:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "Scenellä '%s' on rikkinäisiä riippuvuuksia:"
#: editor/filesystem_dock.cpp
@@ -3385,6 +3392,11 @@ msgstr "Muokkaa noden suodattimia"
msgid "Filters.."
msgstr "Suodattimet..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animaatio"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Vapauta"
@@ -3485,7 +3497,7 @@ msgstr "edellinen"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "next"
-msgstr ""
+msgstr "seuraava"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "last"
@@ -3558,6 +3570,7 @@ msgid "Bake Lightmaps"
msgstr "Muunna Lightmapiksi:"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Esikatselu"
@@ -3875,6 +3888,14 @@ msgstr "Lisää %s"
msgid "Adding %s..."
msgstr "Lisätään %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3886,11 +3907,6 @@ msgid "Error instancing scene from %s"
msgstr "Virhe luotaessa instanssia kohteesta %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Tämä toiminto vaatii yhden valitun noden."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Muuta oletustyyppiä"
@@ -4269,7 +4285,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4278,11 +4294,11 @@ msgstr ""
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
-msgstr ""
+msgstr "Luodaan konfiguraatiota..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Calculating grid size..."
-msgstr ""
+msgstr "Lasketaan ruudukon kokoa..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating heightfield..."
@@ -4673,15 +4689,19 @@ msgstr "Lataa resurssi"
msgid "Paste"
msgstr "Liitä"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Resurssi"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
msgstr "Tyhjennä luut"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"Sulje ja tallenna muutokset?\n"
"\""
@@ -4761,6 +4781,11 @@ msgid "Copy Script Path"
msgstr "Kopioi polku"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Näytä tiedostojärjestelmässä"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr "Edellinen historiassa"
@@ -5204,89 +5229,89 @@ msgid "Rotating %s degrees."
msgstr "Kierto %s astetta."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Pohjanäkymä."
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Pohja"
+msgid "Animation Key Inserted."
+msgstr "Animaatioavain lisätty."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Pintanäkymä."
+msgid "Objects Drawn"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Takanäkymä."
+#, fuzzy
+msgid "Material Changes"
+msgstr "Päivitä muutokset"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Rear"
-msgstr "Taka/perä"
+msgid "Shader Changes"
+msgstr "Päivitä muutokset"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Etunäkymä."
+#, fuzzy
+msgid "Surface Changes"
+msgstr "Päivitä muutokset"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Etu"
+msgid "Draw Calls"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vasen näkymä."
+#, fuzzy
+msgid "Vertices"
+msgstr "Ominaisuudet:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Vasen"
+msgid "FPS"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Oikea näkymä."
+msgid "Top View."
+msgstr "Pintanäkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "OIkea"
+msgid "Bottom View."
+msgstr "Pohjanäkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
+msgid "Bottom"
+msgstr "Pohja"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Animaatioavain lisätty."
+msgid "Left View."
+msgstr "Vasen näkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
+msgid "Left"
+msgstr "Vasen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "Päivitä muutokset"
+msgid "Right View."
+msgstr "Oikea näkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Päivitä muutokset"
+msgid "Right"
+msgstr "OIkea"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Surface Changes"
-msgstr "Päivitä muutokset"
+msgid "Front View."
+msgstr "Etunäkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+msgid "Front"
+msgstr "Etu"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Vertices"
-msgstr "Ominaisuudet:"
+msgid "Rear View."
+msgstr "Takanäkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr ""
+#, fuzzy
+msgid "Rear"
+msgstr "Taka/perä"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5300,6 +5325,10 @@ msgstr "Asia kunnossa :("
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Tämä toiminto vaatii yhden valitun noden."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Näytä normaali"
@@ -5382,17 +5411,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "Esikatselu"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Valitse tila"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5677,10 +5701,20 @@ msgstr "Poista Node(t)"
msgid "Move (After)"
msgstr "Siirry vasemmalle"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Pinoa Framet"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox:in esikatselu:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Tyyli"
+
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Set Region Rect"
@@ -5707,14 +5741,17 @@ msgid "Auto Slice"
msgstr "Jaa automaattisesti"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Siirtymä:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Välistys:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Erotus:"
@@ -5856,6 +5893,10 @@ msgstr "Fontti"
msgid "Color"
msgstr "Väri"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Teema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5959,6 +6000,32 @@ msgstr ""
msgid "Error"
msgstr "Virhe"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "Jaa automaattisesti"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Tallenna tällä hetkellä muokattu resurssi."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Peru"
@@ -6072,12 +6139,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "Ole hyvä ja valitse 'project.godot' tiedosto."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Projektillesi valitsema hakemisto ei ole tyhjä (ehkä haluaisit luoda uuden "
-"hakemiston)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "Ole hyvä ja valitse 'project.godot' tiedosto."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6088,6 +6152,15 @@ msgid "Imported Project"
msgstr "Tuotu projekti"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Kansiota ei voitu luoda."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Olisi hyvä idea antaa projektillesi nimi."
@@ -6132,14 +6205,29 @@ msgid "Import Existing Project"
msgstr "Tuo olemassaoleva projekti"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Tuo & Avaa"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Luo uusi projekti"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Luo säteilijä/lähetin"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Asenna projekti:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Asenna"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Projektin nimi:"
@@ -6157,10 +6245,6 @@ msgid "Browse"
msgstr "Selaa"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Sehän on BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Nimetön projekti"
@@ -6214,6 +6298,10 @@ msgid ""
msgstr "Olet aikeissa etsiä hakemistosta %s Godot projekteja. Oletko varma?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Projektinhallinta"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Projektiluettelo"
@@ -6344,11 +6432,6 @@ msgid "Button 9"
msgstr "Painike 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Muuta"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ohjaimen akselin indeksi:"
@@ -6430,7 +6513,7 @@ msgstr "Yhdistä Nodeen:"
#: editor/project_settings_editor.cpp
msgid "Already existing"
-msgstr ""
+msgstr "On jo olemassa"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
@@ -6492,7 +6575,7 @@ msgstr "Projektin asetukset"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "Yleinen"
#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
@@ -6617,7 +6700,7 @@ msgstr "Uusi skripti"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Uusi %s"
#: editor/property_editor.cpp
#, fuzzy
@@ -6720,7 +6803,7 @@ msgstr "Pääskenen argumentit:"
#: editor/run_settings_dialog.cpp
msgid "Scene Run Settings"
-msgstr ""
+msgstr "Scenen suorittamisasetukset"
#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
#: scene/gui/dialogs.cpp
@@ -6736,10 +6819,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6763,7 +6842,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Duplicate Node(s)"
-msgstr ""
+msgstr "Monista node(t)"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
@@ -6825,7 +6904,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "Resurssit"
#: editor/scene_tree_dock.cpp
@@ -7024,7 +7103,7 @@ msgstr ""
#: editor/script_create_dialog.cpp
msgid "Directory of the same name exists"
-msgstr ""
+msgstr "Samanniminen hakemisto on jo olemassa"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -7131,7 +7210,7 @@ msgstr "Funktio:"
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Virheet"
@@ -7140,6 +7219,11 @@ msgid "Child Process Connected"
msgstr "Lapsiprosessi yhdistetty"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Lataa virheet"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Tarkastele edellistä instanssia"
@@ -7173,7 +7257,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Value"
-msgstr ""
+msgstr "Arvo"
#: editor/script_editor_debugger.cpp
msgid "Monitors"
@@ -7185,7 +7269,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Total:"
-msgstr ""
+msgstr "Yhteensä:"
#: editor/script_editor_debugger.cpp
msgid "Video Mem"
@@ -7197,7 +7281,7 @@ msgstr ""
#: editor/script_editor_debugger.cpp
msgid "Type"
-msgstr ""
+msgstr "Tyyppi"
#: editor/script_editor_debugger.cpp
msgid "Format"
@@ -7205,7 +7289,7 @@ msgstr "Muoto"
#: editor/script_editor_debugger.cpp
msgid "Usage"
-msgstr ""
+msgstr "Käyttö"
#: editor/script_editor_debugger.cpp
msgid "Misc"
@@ -7302,11 +7386,11 @@ msgstr ""
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Alusta:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform"
-msgstr ""
+msgstr "Alusta"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -7334,7 +7418,7 @@ msgstr "Tila:"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Libraries: "
-msgstr ""
+msgstr "Kirjastot: "
#: modules/gdnative/register_types.cpp
msgid "GDNative"
@@ -7434,15 +7518,15 @@ msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Muokkaa X-akselia"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Muokkaa Y-akselia"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Muokkaa Z-akselia"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7504,10 +7588,57 @@ msgstr "Näyttöruudun asetukset"
msgid "Pick Distance:"
msgstr "Poimi tile"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "Luodaan C# projekti..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Ääriviivoja ei voitu luoda!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Resurssin lataaminen epäonnistui."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "Valmis!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Resurssin lataaminen epäonnistui."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Luo ääriviivat"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Uusi projekti"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "Varoitus"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7865,26 +7996,33 @@ 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:\n"
+#, fuzzy
+msgid "Could not write file:"
msgstr "Ei voitu kirjoittaa tiedostoa:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "Kansiota ei voitu luoda."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Hallitse vietäviä Templateja"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr "Ei voitu lukea tiedostoa:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Ei voitu lukea tiedostoa:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "Ei voitu lukea tiedostoa:\n"
#: scene/2d/animated_sprite.cpp
@@ -7899,6 +8037,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7969,7 +8114,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8028,6 +8173,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8073,8 +8225,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8143,13 +8295,13 @@ msgstr ""
#: scene/gui/tree.cpp
msgid "(Other)"
-msgstr ""
+msgstr "(Muu)"
#: scene/main/scene_tree.cpp
#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Projektin asetuksissa määriteltyä oletusympäristöä (Renderöinti -> Näkymä -"
"> Oletusympäristö) ei voitu ladata."
@@ -8182,6 +8334,41 @@ msgstr "Virhe fontin latauksessa."
msgid "Invalid font size."
msgstr "Virheellinen fonttikoko."
+#~ msgid "Next"
+#~ msgstr "Seuraava"
+
+#~ msgid "Not found!"
+#~ msgstr "Ei löytynyt!"
+
+#~ msgid "Replace By"
+#~ msgstr "Korvaa"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Merkkikokoriippuvainen"
+
+#~ msgid "Backwards"
+#~ msgstr "Taaksepäin"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Kysy vaihdettaessa"
+
+#~ msgid "Skip"
+#~ msgstr "Ohita"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Projektillesi valitsema hakemisto ei ole tyhjä (ehkä haluaisit luoda "
+#~ "uuden hakemiston)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Sehän on BINGO!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "Esikatselu"
+
#, fuzzy
#~ msgid "Move Add Key"
#~ msgstr "Siirrä lisäyspainiketta"
@@ -8241,9 +8428,6 @@ msgstr "Virheellinen fonttikoko."
#~ msgid "Filter:"
#~ msgstr "Suodatin:"
-#~ msgid "Theme"
-#~ msgstr "Teema"
-
#~ msgid "Arguments:"
#~ msgstr "Argumentit:"
@@ -8411,9 +8595,6 @@ msgstr "Virheellinen fonttikoko."
#~ msgid "Import Anyway"
#~ msgstr "Tuo joka tapauksessa"
-#~ msgid "Import & Open"
-#~ msgstr "Tuo & Avaa"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Muokattua Sceneä ei ole tallennettu, avaa tuotu Scene joka tapauksessa?"
@@ -8677,9 +8858,6 @@ msgstr "Virheellinen fonttikoko."
#~ msgid "Export the project to many platforms."
#~ msgstr "Vie projekti usealle alustalle."
-#~ msgid "Tutorials"
-#~ msgstr "Oppaat"
-
#, fuzzy
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Avaa https://godotengine.org \"tutorials\"-alueelle."
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 396dc01a02..7bb65f8056 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -5,11 +5,12 @@
#
# Antoine Carrier <ac.g392@gmail.com>, 2017.
# ARocherVj <a.rocher.vj@gmail.com>, 2017.
+# Arthur Templé <tuturtemple@gmail.com>, 2018.
# Brice <bbric@free.fr>, 2016.
# Chenebel Dorian <LoubiTek54@gmail.com>, 2016-2017.
# derderder77 <derderder77380@gmail.com>, 2016.
# finkiki <specialpopol@gmx.fr>, 2016.
-# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017.
+# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017-2018.
# Hugo Locurcio <hugo.l@openmailbox.org>, 2016-2017.
# Kanabenki <lucien.menassol@gmail.com>, 2017.
# keltwookie <keltwookie@protonmail.com>, 2017.
@@ -34,8 +35,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-12-07 06:46+0000\n"
-"Last-Translator: LL <lu.lecocq@free.fr>\n"
+"PO-Revision-Date: 2018-01-22 08:08+0000\n"
+"Last-Translator: Gilles Roudiere <gilles.roudiere@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -43,7 +44,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -54,9 +55,8 @@ msgid "All Selection"
msgstr "Toute la sélection"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Animation Changer la valeur"
+msgstr "Changer l'heure de l'animation des images clés"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -67,9 +67,8 @@ msgid "Anim Change Transform"
msgstr "Animation Changer la transformation"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Animation Changer la valeur"
+msgstr "Changer la valeur de l'animation des images clés"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -225,8 +224,7 @@ msgstr "Créer %d NOUVELLES pistes et insérer des clés ?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Créer"
@@ -405,14 +403,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d occurrence(s) remplacée(s)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Remplacer"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Remplacer tout"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Sensible à la casse"
@@ -421,48 +411,16 @@ msgid "Whole Words"
msgstr "Mots entiers"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Sélection uniquement"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Rechercher"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Trouver"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Suivant"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Non trouvé !"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Remplacer par"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Sensible à la casse"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "À l'envers"
+msgid "Replace"
+msgstr "Remplacer"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Avertir lors du remplacement"
+msgid "Replace All"
+msgstr "Remplacer tout"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Passer"
+msgid "Selection Only"
+msgstr "Sélection uniquement"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -564,9 +522,8 @@ msgid "Connecting Signal:"
msgstr "Connecter un signal :"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Connecter « %s » à « %s »"
+msgstr "Déconnecter « %s » de « %s »"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -582,9 +539,17 @@ msgid "Signals"
msgstr "Signaux"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Changer le type de %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Changer"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Créer un nouveau"
+msgstr "Créer un nouveau %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -696,8 +661,8 @@ msgstr ""
"Les supprimer tout de même ? (annulation impossible)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Impossible à enlever :\n"
+msgid "Cannot remove:"
+msgstr "Impossible à enlever :"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -779,9 +744,9 @@ msgstr "Fondateurs du projet"
msgid "Lead Developer"
msgstr "Développeur principal"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestionnaire de projets"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Gestionnaire de projets "
#: editor/editor_about.cpp
msgid "Developers"
@@ -869,7 +834,7 @@ msgid "Success!"
msgstr "Succès!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installer"
@@ -890,9 +855,8 @@ msgid "Rename Audio Bus"
msgstr "Renommer bus audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Basculer vers transport audio solo"
+msgstr "Modifier le volume audio du bus"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -957,7 +921,7 @@ msgstr "Supprimer l'effet"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Audio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1138,13 +1102,12 @@ msgid "Updating scene.."
msgstr "Mise à jour de la scène…"
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
msgstr "(vide)"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "(Non sauvegardé)"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1184,8 +1147,8 @@ msgid "Packing"
msgstr "Empaquetage"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Fichier modèle introuvable :\n"
+msgid "Template file not found:"
+msgstr "Fichier modèle introuvable :"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1396,6 +1359,20 @@ msgid "Description"
msgstr "Description"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Tutoriels en ligne :"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Pas de description disponible pour cette méthode. [color=$color][url="
+"$url]Contribuez[/url][/color] pour nous aider!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propriétés"
@@ -1431,6 +1408,10 @@ msgstr ""
msgid "Search Text"
msgstr "Chercher du texte"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Trouver"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Sortie :"
@@ -1442,6 +1423,11 @@ msgstr "Sortie :"
msgid "Clear"
msgstr "Effacer"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Effacer la sortie"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Erreur d'enregistrement de la ressource !"
@@ -1450,8 +1436,8 @@ msgstr "Erreur d'enregistrement de la ressource !"
msgid "Save Resource As.."
msgstr "Enregistrer la ressource sous…"
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Je vois…"
@@ -1505,10 +1491,11 @@ msgstr "Cette opération ne peut être réalisée sans une arborescence racine."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Impossible d'enregistrer la scène. Les dépendances (instances) n'ont sans "
-"doute pas pu être satisfaites."
+"Impossible d'enregistrer la scène. Les dépendances (instances ou héritage) "
+"n'ont sans doute pas pu être satisfaites."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1597,12 +1584,10 @@ msgstr ""
"comprendre ce fonctionnement."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand all properties"
msgstr "Développer tout"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Collapse all properties"
msgstr "Réduire tout"
@@ -2134,6 +2119,13 @@ msgstr "Aide"
msgid "Classes"
msgstr "Classes"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Rechercher"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentation en ligne"
@@ -2405,14 +2397,12 @@ msgid "Frame #:"
msgstr "Frame # :"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
msgstr "Temps :"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Appel"
+msgstr "Appels"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2519,8 +2509,8 @@ 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:\n"
-msgstr "Erreur lors de la création du chemin pour les modèles:\n"
+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"
@@ -2556,9 +2546,8 @@ msgstr "Pas de réponse."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Req. a Échoué."
+msgstr "Requête échouée."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2595,7 +2584,6 @@ msgid "Resolving"
msgstr "Résolution"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Resolve"
msgstr "Impossible à résoudre."
@@ -2605,7 +2593,6 @@ msgid "Connecting.."
msgstr "Connexion en cours.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Connexion impossible"
@@ -2681,11 +2668,8 @@ msgid "View items as a list"
msgstr "Afficher les éléments sous forme de liste"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Statut : L'importation du fichier a échoué. Veuillez corriger le fichier et "
"le réimporter manuellement."
@@ -2694,21 +2678,20 @@ msgid "Cannot move/rename resources root."
msgstr "Impossible de déplacer / renommer les ressources root."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Impossible de déplacer un dossier dans lui-même.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Impossible de déplacer un dossier dans lui-même."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Erreur lors du déplacement :\n"
+msgid "Error moving:"
+msgstr "Erreur lors du déplacement :"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Erreur au chargement :"
+msgid "Error duplicating:"
+msgstr "Erreur à la duplication :"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Impossible de mettre à jour les dépendences :\n"
+msgid "Unable to update dependencies:"
+msgstr "Impossible de mettre à jour les dépendences :"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2739,14 +2722,12 @@ msgid "Renaming folder:"
msgstr "Renommer le dossier :"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Dupliquer"
+msgstr "Duplication du fichier :"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Renommer le dossier :"
+msgstr "Duplication du dossier :"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2765,9 +2746,8 @@ msgid "Move To.."
msgstr "Déplacer vers…"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Ouvrir une scène"
+msgstr "Ouvrir une(des) scène(s)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2883,14 +2863,12 @@ msgid "Importing Scene.."
msgstr "Importation de la scène…"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Transfert vers des lightmaps :"
+msgstr "Génération des lightmaps :"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Générer AABB"
+msgstr "Généreration pour le Mesh : "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3153,7 +3131,7 @@ msgstr "Directions"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Past"
-msgstr "Coller"
+msgstr "Passé"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Future"
@@ -3181,7 +3159,7 @@ msgstr "seul les différence"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
-msgstr ""
+msgstr "Forcer la modulation blanche"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
@@ -3361,6 +3339,10 @@ msgstr "Modifier les filtres de nœud"
msgid "Filters.."
msgstr "Filtres…"
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimationTree"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Libérer"
@@ -3510,23 +3492,31 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Ne peut pas déterminer un chemin de sauvegarde pour les images lightmap.\n"
+"Sauvegarder votre scène (pour que les images soient sauvegardées dans le "
+"même répertoire), ou choisissez un répertoire de sauvegarde à partir des "
+"propriétés BakedLightmap."
#: 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 ""
+"Aucun mesh à transférer. Assurez-vous qu'ils contiennent un canal UV2 et que "
+"l'indicateur \"Bake Light\" est activé."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Échec de la création des images lightmap, assurez-vous que le chemin est "
+"accessible en écriture."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Transfert vers des lightmaps :"
+msgstr "Précalculer les lightmaps :"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Aperçu"
@@ -3808,9 +3798,8 @@ msgid "Clear Pose"
msgstr "Vider la pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Drag pivot from mouse position"
-msgstr "Déplacer le point de pivot à partir de la position de la souris"
+msgstr "Déplacer le point de pivot à la position de la souris"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Set pivot at mouse position"
@@ -3832,6 +3821,15 @@ msgstr "Ajouter %s"
msgid "Adding %s..."
msgstr "Ajout de %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "OK"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Impossible d'instancier plusieurs nœuds sans nœud racine."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3843,13 +3841,6 @@ msgid "Error instancing scene from %s"
msgstr "Erreur d'instanciation de la scène depuis %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
-"Cette opération ne peut être réalisée uniquement avec un seul nœud "
-"sélectionné."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Changer le type par défaut"
@@ -3893,11 +3884,11 @@ msgstr "Mettre à jour depuis la scène"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat0"
-msgstr ""
+msgstr "Plat0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat1"
-msgstr ""
+msgstr "Plat1"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease in"
@@ -4041,19 +4032,19 @@ msgstr "Créer un maillage de navigation"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Le maillage contenu n'est pas de type ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "L'ouverture du UV a échoué, le maillage n'est peut-être pas multiple ?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Aucun maillage à déboguer."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Le modèle n'a pas d'UV dans cette couche"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4099,16 +4090,16 @@ msgstr "Créer un maillage de contour…"
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
msgid "View UV1"
-msgstr "Affichage"
+msgstr "Afficher l'UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
msgid "View UV2"
-msgstr "Affichage"
+msgstr "Afficher l'UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Ouverture d'UV2 pour Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4228,9 +4219,8 @@ msgid "Bake!"
msgstr "Calculer !"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-#, fuzzy
-msgid "Bake the navigation mesh.\n"
-msgstr "Créer un maillage de navigation\n"
+msgid "Bake the navigation mesh."
+msgstr "Précalculer le maillage de navigation."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4247,21 +4237,19 @@ msgstr "Calcul de la taille de la grille..."
#: editor/plugins/navigation_mesh_generator.cpp
#, fuzzy
msgid "Creating heightfield..."
-msgstr "Création de l'octree de lumière"
+msgstr "Création de la heightmap..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Marking walkable triangles..."
msgstr "Marquage des triangles parcourables..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Constructing compact heightfield..."
-msgstr "Construction d'un terrain compact..."
+msgstr "Construction d'une heightmap compacte..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Eroding walkable area..."
-msgstr "Abrasion de la zone parcourable..."
+msgstr "Réduction de la zone parcourable..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Partitioning..."
@@ -4272,7 +4260,6 @@ msgid "Creating contours..."
msgstr "Création des coutours..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Creating polymesh..."
msgstr "Création d'un maillage de contour…"
@@ -4499,9 +4486,8 @@ msgid "Set Curve In Position"
msgstr "Définir courbe en position"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Set Curve Out Position"
-msgstr "Définir courbe hors position"
+msgstr "Définir la position de sortie de la courbe"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4625,15 +4611,18 @@ msgstr "Charger une ressource"
msgid "Paste"
msgstr "Coller"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Chemin de la ressource"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Effacer les fichiers récents"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr "Quitter et sauvegarder les modifications?"
+msgid "Close and save changes?"
+msgstr "Quitter et sauvegarder les modifications ?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4704,9 +4693,12 @@ msgid "Soft Reload Script"
msgstr "Recharger le script (mode doux)"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Copier le chemin"
+msgstr "Copier le chemin du script"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Afficher dans le système de fichiers"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4899,9 +4891,8 @@ msgid "Clone Down"
msgstr "Cloner en dessous"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Dérouler la ligne"
+msgstr "Réduire/Développer la ligne"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5145,84 +5136,84 @@ msgid "Rotating %s degrees."
msgstr "Rotation de %s degrés."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vue de dessous."
+msgid "Keying is disabled (no key inserted)."
+msgstr "L'insertion de clé est désactivée (pas de clé insérée)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Dessous"
+msgid "Animation Key Inserted."
+msgstr "Clé d'animation insérée."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vue de dessus."
+msgid "Objects Drawn"
+msgstr "Objets dessinés"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vue arrière."
+msgid "Material Changes"
+msgstr "Modifications de materiau"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Arrière"
+msgid "Shader Changes"
+msgstr "Modification de shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vue avant."
+msgid "Surface Changes"
+msgstr "Modifications de surface"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Avant"
+msgid "Draw Calls"
+msgstr "Appels de graphes"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vue de gauche."
+msgid "Vertices"
+msgstr "Vertex"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Gauche"
+msgid "FPS"
+msgstr "Images par secondes"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vue de droite."
+msgid "Top View."
+msgstr "Vue de dessus."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Droite"
+msgid "Bottom View."
+msgstr "Vue de dessous."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "L'insertion de clé est désactivée (pas de clé insérée)."
+msgid "Bottom"
+msgstr "Dessous"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Clé d'animation insérée."
+msgid "Left View."
+msgstr "Vue de gauche."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Objets dessinés"
+msgid "Left"
+msgstr "Gauche"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Modifications de materiau"
+msgid "Right View."
+msgstr "Vue de droite."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Modification de shader"
+msgid "Right"
+msgstr "Droite"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Modifications de surface"
+msgid "Front View."
+msgstr "Vue avant."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Appels de graphes"
+msgid "Front"
+msgstr "Avant"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vertex"
+msgid "Rear View."
+msgstr "Vue arrière."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "Images par secondes"
+msgid "Rear"
+msgstr "Arrière"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5236,6 +5227,12 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Pas de parent dans lequel instancier l'enfant."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+"Cette opération ne peut être réalisée uniquement avec un seul nœud "
+"sélectionné."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Affichage normal"
@@ -5309,16 +5306,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificateur de vitesse de la vue libre"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "Aperçu"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogue XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Sélectionner le mode (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Sélectionner le mode (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5347,14 +5340,12 @@ msgid "Local Coords"
msgstr "Coordonnées locales"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Mode de mise à l'échelle (R)"
+msgstr "Mode d'échelle local (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Mode d'aimantation :"
+msgstr "Mode d'aimantation (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5471,7 +5462,7 @@ msgstr "Paramètres"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Visibilité squelette Gizmo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5598,10 +5589,20 @@ msgstr "Déplacer le(s) nœud(s)"
msgid "Move (After)"
msgstr "Déplacer (Après)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Images du sprite"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Aperçu de la StyleBox :"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Style Box"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Définir région rectangulaire"
@@ -5627,14 +5628,17 @@ msgid "Auto Slice"
msgstr "Coupe automatique"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Décalage :"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Pas (s) :"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Séparation :"
@@ -5772,6 +5776,10 @@ msgstr "Police"
msgid "Color"
msgstr "Couleur"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Thème"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Supprimer la sélection"
@@ -5874,6 +5882,32 @@ msgstr "Fusionner depuis la scène"
msgid "Error"
msgstr "Erreur"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "Coupe automatique"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Enregistrer la ressource actuellement modifiée."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Annuler"
@@ -5985,12 +6019,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "Veuillez choisir un fichier 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Votre projet sera créé dans un dossier non-vide (vous pourriez avoir besoin "
-"de créer un nouveau dossier)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "Veuillez choisir un fichier 'project.godot'."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6002,6 +6033,15 @@ msgid "Imported Project"
msgstr "Projet importé"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Impossible de créer le dossier."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Ce serait une bonne idée de donner un nom à votre projet."
@@ -6045,14 +6085,29 @@ msgid "Import Existing Project"
msgstr "Importer un projet existant"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importer et ouvrir"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Créer un nouveau projet"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Créer Émetteur"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Installer projet :"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installer"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nom du projet :"
@@ -6069,10 +6124,6 @@ msgid "Browse"
msgstr "Parcourir"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "C'est un BINGO !"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projet sans titre"
@@ -6129,6 +6180,10 @@ msgstr ""
"existants. Est-ce que vous confirmez ?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestionnaire de projets"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Liste des projets"
@@ -6258,11 +6313,6 @@ msgid "Button 9"
msgstr "Bouton 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Changer"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Index de l'axe de la manette de jeu :"
@@ -6526,7 +6576,7 @@ msgstr "Nouveau script"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Nouveau %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6644,10 +6694,6 @@ msgid "Error loading scene from %s"
msgstr "Erreur de chargement de la scène depuis %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "OK"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6736,7 +6782,8 @@ msgid "Error duplicating scene to save it."
msgstr "Erreur de duplication de la scène afin de l'enregistrer."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+#, fuzzy
+msgid "Sub-Resources"
msgstr "Ressources secondaires :"
#: editor/scene_tree_dock.cpp
@@ -7041,7 +7088,7 @@ msgid "Pick one or more items from the list to display the graph."
msgstr ""
"Chosissez un ou plusieurs éléments dans la liste pour afficher le graphique."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Erreurs"
@@ -7050,6 +7097,11 @@ msgid "Child Process Connected"
msgstr "Processus enfant connecté"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Erreurs de chargement"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspecter l'instance précédente"
@@ -7143,7 +7195,7 @@ msgstr "Raccourcis"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Liaison"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7195,11 +7247,11 @@ msgstr "Changer les ampleurs de la sonde"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Sélectionnez la librairie dynamique pour cette entrée"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Sélectionnez les dépendances de la librairie pour cette entrée"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -7208,11 +7260,12 @@ msgstr "Supprimer point de courbe"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Double-cliquez pour créer une nouvelle entrée"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
+#, fuzzy
msgid "Platform:"
-msgstr ""
+msgstr "Platform:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -7225,8 +7278,9 @@ msgid "Dynamic Library"
msgstr "Bibliothèque"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
+#, fuzzy
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Ajouter une entrée architecturale"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -7406,10 +7460,58 @@ msgstr "Paramètres GridMap"
msgid "Pick Distance:"
msgstr "Choisissez distance :"
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Création des coutours..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Impossible de créer le contour !"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Impossible de charger la ressource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "C'est fait !"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Impossible de charger la ressource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Créer le contour"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Constructions"
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Projet"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "Avertissement"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7771,23 +7873,33 @@ 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:\n"
+#, fuzzy
+msgid "Could not write file:"
msgstr "Impossible d'écrire le fichier:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+#, fuzzy
+msgid "Could not open template for export:"
msgstr "Impossible d'ouvrir le modèle pour exportation:\n"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+#, fuzzy
+msgid "Invalid export template:"
msgstr "Modèle d'exportation non valide :\n"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+#, fuzzy
+msgid "Could not read custom HTML shell:"
msgstr "Impossible de lire le shell HTML :\n"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+#, fuzzy
+msgid "Could not read boot splash image file:"
+msgstr "Impossible de lire l'image de démarrage :\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "Impossible de lire l'image de démarrage :\n"
#: scene/2d/animated_sprite.cpp
@@ -7806,6 +7918,13 @@ msgstr ""
"Seul un nœud de type CanvasModulate est autorisé par scène (ou ensemble de "
"scènes instanciées). Le premier créé fonctionnera, les autres seront ignorés."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7899,7 +8018,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7972,6 +8091,13 @@ msgstr "Finalisation du tracer"
msgid "Lighting Meshes: "
msgstr "Tracer les maillages"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8029,8 +8155,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Les changements de taille pour RigidBody (dans les modes caractère ou "
@@ -8111,9 +8237,10 @@ msgid "(Other)"
msgstr "(Autre)"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"L'environnement par défaut spécifié dans les réglages du projet (Rendu -> "
"Viewport -> Environnement par défaut) ne peut pas être chargé."
@@ -8146,6 +8273,40 @@ msgstr "Erreur lors du chargement de la police."
msgid "Invalid font size."
msgstr "Taille de police invalide."
+#~ msgid "Next"
+#~ msgstr "Suivant"
+
+#~ msgid "Not found!"
+#~ msgstr "Non trouvé !"
+
+#~ msgid "Replace By"
+#~ msgstr "Remplacer par"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Sensible à la casse"
+
+#~ msgid "Backwards"
+#~ msgstr "À l'envers"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Avertir lors du remplacement"
+
+#~ msgid "Skip"
+#~ msgstr "Passer"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Votre projet sera créé dans un dossier non-vide (vous pourriez avoir "
+#~ "besoin de créer un nouveau dossier)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "C'est un BINGO !"
+
+#~ msgid "preview"
+#~ msgstr "Aperçu"
+
#~ msgid "Move Add Key"
#~ msgstr "Mouvement Ajouter une clé"
@@ -8241,9 +8402,6 @@ msgstr "Taille de police invalide."
#~ msgid "' parsing of config failed."
#~ msgstr "L'analyse de la configuration a échoué."
-#~ msgid "Theme"
-#~ msgstr "Thème"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Liste des méthodes pour « %s » :"
@@ -8514,9 +8672,6 @@ msgstr "Taille de police invalide."
#~ msgid "Import Anyway"
#~ msgstr "Importer quand même"
-#~ msgid "Import & Open"
-#~ msgstr "Importer et ouvrir"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène "
@@ -8773,9 +8928,6 @@ msgstr "Taille de police invalide."
#~ msgid "Stereo"
#~ msgstr "Stéréo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Hauteur"
@@ -8957,9 +9109,6 @@ msgstr "Taille de police invalide."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Alerte lorsqu'une ressource externe a été modifiée."
-#~ msgid "Tutorials"
-#~ msgstr "Tutoriels"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Ouvre https://godotengine.org dans la section des tutoriels."
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 032e8bcac7..57ec12e002 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -5,19 +5,20 @@
#
# Ben Golan <golanben4@gmail.com>, 2017.
# Luc Stepniewski <lior@gradstein.info>, 2017.
+# Yaron Shahrabani <sh.yaron@gmail.com>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-10 12:47+0000\n"
-"Last-Translator: Ben Golan <golanben4@gmail.com>\n"
+"PO-Revision-Date: 2018-01-25 22:27+0000\n"
+"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/godot-engine/"
"godot/he/>\n"
"Language: he\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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -25,7 +26,7 @@ msgstr "מושבת"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr "כל ×”××œ×ž× ×˜×™× ×©× ×‘×—×¨×•"
+msgstr "כל הבחירה"
#: editor/animation_editor.cpp
msgid "Anim Change Keyframe Time"
@@ -110,11 +111,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Remove Selection"
-msgstr ""
+msgstr "הסרת הבחירה"
#: editor/animation_editor.cpp
msgid "Continuous"
-msgstr ""
+msgstr "מתמשך"
#: editor/animation_editor.cpp
msgid "Discrete"
@@ -155,35 +156,35 @@ msgstr ""
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr ""
+msgstr "קבוע"
#: editor/animation_editor.cpp
msgid "In"
-msgstr ""
+msgstr "כניסה"
#: editor/animation_editor.cpp
msgid "Out"
-msgstr ""
+msgstr "יצי××”"
#: editor/animation_editor.cpp
msgid "In-Out"
-msgstr ""
+msgstr "כניסה-יצי××”"
#: editor/animation_editor.cpp
msgid "Out-In"
-msgstr ""
+msgstr "יצי××”-כניסה"
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr ""
+msgstr "מעברוני×"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr ""
+msgstr "מטוב ההנפשה"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr ""
+msgstr "ניקוי ההנפשה"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
@@ -197,10 +198,9 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
-msgstr ""
+msgstr "יצירה"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
@@ -248,11 +248,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
-msgstr ""
+msgstr "משך ההנפשה (בשניות)."
#: editor/animation_editor.cpp
msgid "Step (s):"
-msgstr ""
+msgstr "צעד/×™×:"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
@@ -264,7 +264,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr ""
+msgstr "הוספת רצועות חדשות."
#: editor/animation_editor.cpp
msgid "Move current track up."
@@ -304,7 +304,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Optimize"
-msgstr ""
+msgstr "מטוב"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
@@ -312,15 +312,15 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Key"
-msgstr ""
+msgstr "מפתח"
#: editor/animation_editor.cpp
msgid "Transition"
-msgstr ""
+msgstr "מעברון"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
-msgstr ""
+msgstr "יחס מתיחה:"
#: editor/animation_editor.cpp
msgid "Call Functions in Which Node?"
@@ -328,15 +328,15 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Remove invalid keys"
-msgstr ""
+msgstr "הסרת מפתחות שגויי×"
#: editor/animation_editor.cpp
msgid "Remove unresolved and empty tracks"
-msgstr ""
+msgstr "הסרת רצועות בלתי פתורות וריקות"
#: editor/animation_editor.cpp
msgid "Clean-up all animations"
-msgstr ""
+msgstr "ניקוי כל ההנפשות"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation(s) (NO UNDO!)"
@@ -348,111 +348,71 @@ msgstr ""
#: editor/array_property_edit.cpp
msgid "Resize Array"
-msgstr ""
+msgstr "שינוי גודל המערך"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr ""
+msgstr "החלפת סוג ערך המערך"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
-msgstr ""
+msgstr "החלפת ערך המערך"
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr ""
+msgstr "מעבר לשורה"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr ""
+msgstr "מספר השורה:"
#: editor/code_editor.cpp
msgid "No Matches"
-msgstr ""
+msgstr "×ין תוצ×ות"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
-msgstr ""
+msgstr "הת×מת רישיות"
#: editor/code_editor.cpp
msgid "Whole Words"
-msgstr ""
+msgstr "×ž×™×œ×™× ×©×œ×ž×•×ª"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr ""
+msgid "Replace"
+msgstr "להחליף"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr ""
+msgid "Replace All"
+msgstr "להחליף הכול"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr ""
+msgid "Selection Only"
+msgstr "בחירה בלבד"
#: editor/code_editor.cpp
msgid "Zoom In"
-msgstr ""
+msgstr "להתקרב"
#: editor/code_editor.cpp
msgid "Zoom Out"
-msgstr ""
+msgstr "להתרחק"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr ""
+msgstr "×יפוס התקריב"
#: editor/code_editor.cpp editor/script_editor_debugger.cpp
msgid "Line:"
-msgstr ""
+msgstr "שורה:"
#: editor/code_editor.cpp
msgid "Col:"
-msgstr ""
+msgstr "עמודה:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
@@ -466,20 +426,20 @@ msgstr ""
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
-msgstr ""
+msgstr "התחברות למפרק:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
-msgstr ""
+msgstr "הוספה"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
-msgstr ""
+msgstr "הסרה"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
@@ -491,7 +451,7 @@ msgstr ""
#: editor/connections_dialog.cpp
msgid "Path to Node:"
-msgstr ""
+msgstr "נתיב המפרק:"
#: editor/connections_dialog.cpp
msgid "Make Function"
@@ -517,7 +477,7 @@ msgstr ""
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
-msgstr ""
+msgstr "סגירה"
#: editor/connections_dialog.cpp
msgid "Connect"
@@ -542,51 +502,60 @@ msgstr ""
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Disconnect"
-msgstr ""
+msgstr "ניתוק"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
+msgstr "×ותות"
+
+#: editor/create_dialog.cpp
+msgid "Change %s Type"
msgstr ""
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "שינוי"
+
#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr ""
+msgstr "יצירת %s חדש"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
-msgstr ""
+msgstr "מועדפי×:"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
msgid "Recent:"
-msgstr ""
+msgstr "×חרוני×:"
#: editor/create_dialog.cpp editor/editor_node.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Search:"
-msgstr ""
+msgstr "חיפוש:"
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
-msgstr ""
+msgstr "הת×מות:"
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
#: editor/script_editor_debugger.cpp
msgid "Description:"
-msgstr ""
+msgstr "תי×ור:"
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
-msgstr ""
+msgstr "חיפוש חלופה עבור:"
#: editor/dependency_editor.cpp
msgid "Dependencies For:"
-msgstr ""
+msgstr "תלויות עבור:"
#: editor/dependency_editor.cpp
msgid ""
@@ -603,40 +572,40 @@ msgstr ""
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Dependencies"
-msgstr ""
+msgstr "תלויות"
#: editor/dependency_editor.cpp
msgid "Resource"
-msgstr ""
+msgstr "מש×ב"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
-msgstr ""
+msgstr "נתיב"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
-msgstr ""
+msgstr "תלויות:"
#: editor/dependency_editor.cpp
msgid "Fix Broken"
-msgstr ""
+msgstr "תיקון פגומי×"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr ""
+msgstr "עורך תלויות"
#: editor/dependency_editor.cpp
msgid "Search Replacement Resource:"
-msgstr ""
+msgstr "חיפוש מש×ב חלופי:"
#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
#: editor/editor_help.cpp editor/editor_node.cpp editor/filesystem_dock.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp scene/gui/file_dialog.cpp
msgid "Open"
-msgstr ""
+msgstr "פתיחה"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
@@ -644,7 +613,7 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid "Remove selected files from the project? (no undo)"
-msgstr ""
+msgstr "להסיר ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×ž×”×ž×™×–×? (××™ ×פשר לשחזר)"
#: editor/dependency_editor.cpp
msgid ""
@@ -654,32 +623,32 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr ""
+msgid "Cannot remove:"
+msgstr "×œ× × ×™×ª×Ÿ להסיר:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
-msgstr ""
+msgstr "שגי××” בטעינה:"
#: editor/dependency_editor.cpp
msgid "Scene failed to load due to missing dependencies:"
-msgstr ""
+msgstr "טעינת הסצנה נכשלה עקב תלויות חסרות:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
-msgstr ""
+msgstr "לפתוח בכל ×–×ת"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
-msgstr ""
+msgstr "ב×יזו פעולה יש לנקוט?"
#: editor/dependency_editor.cpp
msgid "Fix Dependencies"
-msgstr ""
+msgstr "תיקון תלויות"
#: editor/dependency_editor.cpp
msgid "Errors loading!"
-msgstr ""
+msgstr "שגי××” בטעינה!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
@@ -691,15 +660,15 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid "Resources Without Explicit Ownership:"
-msgstr ""
+msgstr "מש××‘×™× × ×˜×•×œ×™ בעלות מפורשת:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Orphan Resource Explorer"
-msgstr ""
+msgstr "דפדפן מש××‘×™× ×™×ª×•×ž×™×"
#: editor/dependency_editor.cpp
msgid "Delete selected files?"
-msgstr ""
+msgstr "למחוק ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™×?"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
@@ -707,83 +676,83 @@ msgstr ""
#: editor/project_export.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_dock.cpp
msgid "Delete"
-msgstr ""
+msgstr "למחוק"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
-msgstr ""
+msgstr "החלפת מפתח מילון"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Value"
-msgstr ""
+msgstr "החלפת ערך מילון"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr ""
+msgstr "תודה רבה מקהילת Godot!"
#: editor/editor_about.cpp
msgid "Thanks!"
-msgstr ""
+msgstr "תודה!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
+msgstr "מתנדבי מנוע Godot"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr ""
+msgstr "מקימי המיז×"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "×ž×¤×ª×—×™× ×¨×שיי×"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "מנהל ×”×ž×™×–× "
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "מפתחי×"
#: editor/editor_about.cpp
msgid "Authors"
-msgstr ""
+msgstr "יוצרי×"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
-msgstr ""
+msgstr "מממני פלטינה"
#: editor/editor_about.cpp
msgid "Gold Sponsors"
-msgstr ""
+msgstr "מממני זהב"
#: editor/editor_about.cpp
msgid "Mini Sponsors"
-msgstr ""
+msgstr "×ž×ž×ž× ×™× ×–×¢×™×¨×™×"
#: editor/editor_about.cpp
msgid "Gold Donors"
-msgstr ""
+msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª זהב"
#: editor/editor_about.cpp
msgid "Silver Donors"
-msgstr ""
+msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª כסף"
#: editor/editor_about.cpp
msgid "Bronze Donors"
-msgstr ""
+msgstr "×ª×•×¨×ž×™× ×‘×“×¨×’×ª ×רד"
#: editor/editor_about.cpp
msgid "Donors"
-msgstr ""
+msgstr "תורמי×"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "רישיון"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "רישיון צד שלישי"
#: editor/editor_about.cpp
msgid ""
@@ -795,19 +764,19 @@ msgstr ""
#: editor/editor_about.cpp
msgid "All Components"
-msgstr ""
+msgstr "כל הרכיבי×"
#: editor/editor_about.cpp
msgid "Components"
-msgstr ""
+msgstr "רכיבי×"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "רישיונות"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "פתיחת קובץ החבילה נכשלה, המבנה ×ינו zip."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
@@ -815,37 +784,37 @@ msgstr ""
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
-msgstr ""
+msgstr "החבילה הותקנה בהצלחה!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Success!"
-msgstr ""
+msgstr "הצלחה!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
-msgstr ""
+msgstr "התקנה"
#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr ""
+msgstr "מתקין החבילות"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "רמקולי×"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "הוספת ×פקט"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
-msgstr ""
+msgstr "שינוי ×©× ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Change Audio Bus Volume"
-msgstr ""
+msgstr "שינוי עצמה ל×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -853,7 +822,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "החלפת מצב השתקה על ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
@@ -865,19 +834,19 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "הוספת ×פקט על ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "העברת ×פקט ×פיק"
#: editor/editor_audio_buses.cpp
msgid "Delete Bus Effect"
-msgstr ""
+msgstr "מחיקת ×פקט ×פיק"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
+msgstr "×פיק שמע, יש לגרור ולשחרר כדי לסדר מחדש."
#: editor/editor_audio_buses.cpp
msgid "Solo"
@@ -885,154 +854,154 @@ msgstr ""
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "השתקה"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "מעקף"
#: editor/editor_audio_buses.cpp
msgid "Bus options"
-msgstr ""
+msgstr "×פשרויות ×פיק"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr ""
+msgstr "שכפול"
#: editor/editor_audio_buses.cpp
msgid "Reset Volume"
-msgstr ""
+msgstr "×יפוס עצמת השמע"
#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr ""
+msgstr "מחיקת ×פקט"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "שמע"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
-msgstr ""
+msgstr "הוספת ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "××™ ×פשר למחוק ×ת ×”×פיק הר×שי!"
#: editor/editor_audio_buses.cpp
msgid "Delete Audio Bus"
-msgstr ""
+msgstr "מחיקת ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Duplicate Audio Bus"
-msgstr ""
+msgstr "שכפול ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Reset Bus Volume"
-msgstr ""
+msgstr "×יפוס עצמת שמע ×”×פיק"
#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr ""
+msgstr "הזזת ×פיק שמע"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "שמירת פריסת ×פיקי השמע בתור…"
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "×ž×™×§×•× ×œ×¤×¨×™×¡×” החדשה…"
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "פתיחת פריסת ×פיקי שמע"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "×ין קובץ ‚res://default_bus_layout.tres’."
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr ""
+msgstr "קובץ שגוי, ×œ× ×¤×¨×™×¡×” של ×פיקי שמע."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr ""
+msgstr "הוספת ×פיק"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
-msgstr ""
+msgstr "יצירת פריסת ××¤×™×§×™× ×—×“×©×”."
#: editor/editor_audio_buses.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr ""
+msgstr "טעינה"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr ""
+msgstr "טעינת פריסת ×פיקי שמע."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
-msgstr ""
+msgstr "שמירה בש×"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr ""
+msgstr "שמירת פריסת ×”××¤×™×§×™× ×”×–×ת לקובץ."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr ""
+msgstr "טעינת בררת המחדל"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "טעינת בררת המחדל של פריסת ×פיקי השמע."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
-msgstr ""
+msgstr "×©× ×©×’×•×™."
#: editor/editor_autoload_settings.cpp
msgid "Valid characters:"
-msgstr ""
+msgstr "×ª×•×•×™× ×ª×§×¤×™×:"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing engine class name."
-msgstr ""
+msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×ž×—×œ×§×ª מנוע קיימת."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing buit-in type name."
-msgstr ""
+msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×¡×•×’ מובנה ×§×™×™×."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing global constant name."
-msgstr ""
+msgstr "×©× ×©×’×•×™. ×œ× ×™×›×•×œ לחפוף ×œ×©× ×§×‘×•×¢ גלובלי ×§×™×™×."
#: editor/editor_autoload_settings.cpp
msgid "Invalid Path."
-msgstr ""
+msgstr "נתיב שגוי."
#: editor/editor_autoload_settings.cpp
msgid "File does not exist."
-msgstr ""
+msgstr "הקובץ ×œ× ×§×™×™×."
#: editor/editor_autoload_settings.cpp
msgid "Not in resource path."
-msgstr ""
+msgstr "×œ× ×‘× ×ª×™×‘ המש×ב."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr ""
+msgstr "הוספת טעינה ×וטומטית"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr ""
+msgstr "הטעינה ×”×וטומטית ‚%s’ כבר קיימת!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
-msgstr ""
+msgstr "שינוי ×©× ×˜×¢×™× ×” ×וטומטית"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
@@ -1040,217 +1009,217 @@ msgstr ""
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
-msgstr ""
+msgstr "הזזת טעינה ×וטומטית"
#: editor/editor_autoload_settings.cpp
msgid "Remove Autoload"
-msgstr ""
+msgstr "הסרת טעינה ×וטומטית"
#: editor/editor_autoload_settings.cpp
msgid "Enable"
-msgstr ""
+msgstr "הפעלה"
#: editor/editor_autoload_settings.cpp
msgid "Rearrange Autoloads"
-msgstr ""
+msgstr "סידור טעינות ×וטומטית מחדש"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: scene/gui/file_dialog.cpp
msgid "Path:"
-msgstr ""
+msgstr "נתיב:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
-msgstr ""
+msgstr "×©× ×”×ž×¤×¨×§:"
#: editor/editor_autoload_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
-msgstr ""
+msgstr "ש×"
#: editor/editor_autoload_settings.cpp
msgid "Singleton"
-msgstr ""
+msgstr "יחידני"
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr ""
+msgstr "הסצנה מתעדכנת"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr ""
+msgstr "×”×©×™× ×•×™×™× ×”×ž×§×•×ž×™×™× ×ž×וחסני×…"
#: editor/editor_data.cpp
msgid "Updating scene.."
-msgstr ""
+msgstr "הסצנה מתעדכנת…"
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[ריק]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[×œ× × ×©×ž×¨]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ ×ת תיקיית הבסיס תחילה"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ תיקייה"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr ""
+msgstr "יצירת תיקייה"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
#: scene/gui/file_dialog.cpp
msgid "Name:"
-msgstr ""
+msgstr "ש×:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
#: editor/editor_dir_dialog.cpp
msgid "Choose"
-msgstr ""
+msgstr "בחירה"
#: editor/editor_export.cpp
msgid "Storing File:"
-msgstr ""
+msgstr "קובץ ×חסון:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr ""
+msgstr "×ריזה"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr ""
+msgid "Template file not found:"
+msgstr "קובץ התבנית ×œ× × ×ž×¦×:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
-msgstr ""
+msgstr "הקובץ ×§×™×™×, לשכתב?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ ×ת התיקייה הנוכחית"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
-msgstr ""
+msgstr "העתקת נתיב"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Show In File Manager"
-msgstr ""
+msgstr "הצגה במנהל הקבצי×"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder.."
-msgstr ""
+msgstr "תיקייה חדשה…"
#: editor/editor_file_dialog.cpp
msgid "Refresh"
-msgstr ""
+msgstr "רענון"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
-msgstr ""
+msgstr "כל המוכרי×"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
-msgstr ""
+msgstr "כל ×”×§×‘×¦×™× (*)"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File"
-msgstr ""
+msgstr "פתיחת קובץ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open File(s)"
-msgstr ""
+msgstr "פתיחת קבצי×"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a Directory"
-msgstr ""
+msgstr "פתיחת תיקייה"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File or Directory"
-msgstr ""
+msgstr "פתיחת קובץ ×ו תיקייה"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
-msgstr ""
+msgstr "שמירה"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Save a File"
-msgstr ""
+msgstr "שמירת קובץ"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
-msgstr ""
+msgstr "חזרה ×חורה"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr ""
+msgstr "התקדמות קדימה"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
-msgstr ""
+msgstr "עלייה למעלה"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr ""
+msgstr "החלפת מצב תצוגה ×œ×§×‘×¦×™× ×ž×•×¡×ª×¨×™×"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr ""
+msgstr "החלפת מצב מועדפי×"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr ""
+msgstr "החלפת מצב"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
-msgstr ""
+msgstr "התמקדות על נתיב"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr ""
+msgstr "העברת מועדף למעלה"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr ""
+msgstr "העברת מועדף למטה"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Go to parent folder"
-msgstr ""
+msgstr "מעבר לתיקייה שמעל"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
-msgstr ""
+msgstr "תיקיות וקבצי×:"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr ""
+msgstr "תצוגה מקדימה:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
msgid "File:"
-msgstr ""
+msgstr "קובץ:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
-msgstr ""
+msgstr "יש להשתמש בסיומת תקנית."
#: editor/editor_file_system.cpp
msgid "ScanSources"
-msgstr ""
+msgstr "סריקת מקורות"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
@@ -1259,95 +1228,106 @@ msgstr ""
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Help"
-msgstr ""
+msgstr "חיפוש בעזרה"
#: editor/editor_help.cpp
msgid "Class List:"
-msgstr ""
+msgstr "רשימת מחלקות:"
#: editor/editor_help.cpp
msgid "Search Classes"
-msgstr ""
+msgstr "חיפוש במחלקות"
#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Top"
-msgstr ""
+msgstr "עליון"
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
-msgstr ""
+msgstr "מחלקה:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
msgid "Inherits:"
-msgstr ""
+msgstr "ירושה:"
#: editor/editor_help.cpp
msgid "Inherited by:"
-msgstr ""
+msgstr "מוריש ×ל:"
#: editor/editor_help.cpp
msgid "Brief Description:"
-msgstr ""
+msgstr "תי×ור קצר:"
#: editor/editor_help.cpp
msgid "Members"
-msgstr ""
+msgstr "חברי×"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
-msgstr ""
+msgstr "חברי×:"
#: editor/editor_help.cpp
msgid "Public Methods"
-msgstr ""
+msgstr "שיטות ציבוריות"
#: editor/editor_help.cpp
msgid "Public Methods:"
-msgstr ""
+msgstr "שיטות ציבוריות:"
#: editor/editor_help.cpp
msgid "GUI Theme Items"
-msgstr ""
+msgstr "פריטי מנשק משתמש של ערכת העיצוב"
#: editor/editor_help.cpp
msgid "GUI Theme Items:"
-msgstr ""
+msgstr "פריטי מנשק משתמש של ערכת העיצוב:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
-msgstr ""
+msgstr "×ותות:"
#: editor/editor_help.cpp
msgid "Enumerations"
-msgstr ""
+msgstr "מוני×"
#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr ""
+msgstr "מוני×:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "מונה "
#: editor/editor_help.cpp
msgid "Constants"
-msgstr ""
+msgstr "קבועי×"
#: editor/editor_help.cpp
msgid "Constants:"
-msgstr ""
+msgstr "קבועי×:"
#: editor/editor_help.cpp
msgid "Description"
+msgstr "תי×ור"
+
+#: editor/editor_help.cpp
+msgid "Online Tutorials:"
msgstr ""
#: editor/editor_help.cpp
-msgid "Properties"
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
msgstr ""
#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "מ×פייני×"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
-msgstr ""
+msgstr "תי×ור המ×פיין:"
#: editor/editor_help.cpp
msgid ""
@@ -1357,11 +1337,11 @@ msgstr ""
#: editor/editor_help.cpp
msgid "Methods"
-msgstr ""
+msgstr "שיטות"
#: editor/editor_help.cpp
msgid "Method Description:"
-msgstr ""
+msgstr "תי×ור השיטה:"
#: editor/editor_help.cpp
msgid ""
@@ -1371,55 +1351,63 @@ msgstr ""
#: editor/editor_help.cpp
msgid "Search Text"
-msgstr ""
+msgstr "חיפוש טקסט"
+
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "×יתור"
#: editor/editor_log.cpp
msgid "Output:"
-msgstr ""
+msgstr "פלט:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
#: editor/property_editor.cpp editor/script_editor_debugger.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Clear"
-msgstr ""
+msgstr "מחיקה"
+
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "מחיקת הפלט"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
-msgstr ""
+msgstr "שגי××” בשמירת המש×ב!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Save Resource As.."
-msgstr ""
+msgstr "שמירת המש×ב בתור…"
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
-msgstr ""
+msgstr "×× ×™ רו×ה…"
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לפתוח קובץ לכתיבה:"
#: editor/editor_node.cpp
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "תבנית הקובץ המבוקשת ×œ× ×™×“×•×¢×”:"
#: editor/editor_node.cpp
msgid "Error while saving."
-msgstr ""
+msgstr "שגי××” בעת השמירה."
#: editor/editor_node.cpp
msgid "Can't open '%s'."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת ‚%s’."
#: editor/editor_node.cpp
msgid "Error while parsing '%s'."
-msgstr ""
+msgstr "הפענוח של ‚%s’ נכשל."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
-msgstr ""
+msgstr "סוף הקובץ בלתי צפוי ‚%s’."
#: editor/editor_node.cpp
msgid "Missing '%s' or its dependencies."
@@ -1427,32 +1415,35 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Error while loading '%s'."
-msgstr ""
+msgstr "הטעינה של ‚%s’ נכשלה."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr ""
+msgstr "הסצנה נשמרת"
#: editor/editor_node.cpp
msgid "Analyzing"
-msgstr ""
+msgstr "מתבצע ניתוח"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr ""
+msgstr "נוצרת תמונה ממוזערת"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×©×•×¨×© ×”×¢×¥."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
+"×œ× × ×™×ª×Ÿ לשמור ×ת הסצנה. כפי הנר××” עקב תלויות (×ž×•×¤×¢×™× ×ו ירושות) ש×ינן "
+"מסופקות."
#: editor/editor_node.cpp
msgid "Failed to load resource."
-msgstr ""
+msgstr "טעינת המש×ב נכשלה."
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
@@ -1472,19 +1463,19 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Error trying to save layout!"
-msgstr ""
+msgstr "שמירת הפריסה נכשלה!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr ""
+msgstr "בררת המחדל של פריסת העורך שוכתבה."
#: editor/editor_node.cpp
msgid "Layout name not found!"
-msgstr ""
+msgstr "×©× ×”×¤×¨×™×¡×” ×œ× × ×ž×¦×!"
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
-msgstr ""
+msgstr "פריסת בררת המחדל שוחזרה להגדרות הבסיס."
#: editor/editor_node.cpp
msgid ""
@@ -1504,6 +1495,8 @@ msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
+"מש×ב ×–×” עבר יבו×, לכן ×ין ×פשרות לערוך ×ותו. יש לשנות ×ת ההגדרות שלו בחלונית "
+"×”×™×™×‘×•× ×•××– ×œ×™×™×‘× ×©×•×‘."
#: editor/editor_node.cpp
msgid ""
@@ -1522,27 +1515,27 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Expand all properties"
-msgstr ""
+msgstr "הרחבת כל המ×פייני×"
#: editor/editor_node.cpp
msgid "Collapse all properties"
-msgstr ""
+msgstr "×¦×ž×¦×•× ×›×œ המ×פייני×"
#: editor/editor_node.cpp
msgid "Copy Params"
-msgstr ""
+msgstr "העתקת משתני×"
#: editor/editor_node.cpp
msgid "Paste Params"
-msgstr ""
+msgstr "הדבקת משתני×"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
-msgstr ""
+msgstr "הדבקת מש×ב"
#: editor/editor_node.cpp
msgid "Copy Resource"
-msgstr ""
+msgstr "העתקת מש×ב"
#: editor/editor_node.cpp
msgid "Make Built-In"
@@ -1554,11 +1547,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Open in Help"
-msgstr ""
+msgstr "פתיחה בעזרה"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "×ין סצנה מוגדרת להרצה."
#: editor/editor_node.cpp
msgid ""
@@ -1583,55 +1576,55 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
+msgstr "הסצנה הנוכחית ×ž×¢×•×œ× ×œ× × ×©×ž×¨×”, × × ×œ×©×ž×•×¨ ×ותה ×‘×˜×¨× ×”×”×¨×¦×”."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
#: editor/editor_node.cpp
msgid "Open Scene"
-msgstr ""
+msgstr "פתיחת סצנה"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "פתיחת סצנת בסיס"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr ""
+msgstr "פתיחת סצנה מהירה…"
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr ""
+msgstr "פתיחת סקריפט מהירה…"
#: editor/editor_node.cpp
msgid "Save & Close"
-msgstr ""
+msgstr "שמירה וסגירה"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œÖ¾â€š%s’ לפני הסגירה?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr ""
+msgstr "שמירת סצנה בש×…"
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "ל×"
#: editor/editor_node.cpp
msgid "Yes"
-msgstr ""
+msgstr "כן"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "סצנה ×–×ת ×ž×¢×•×œ× ×œ× × ×©×ž×¨×”. לשמור לפני ההרצה?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×¡×¦× ×”."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
@@ -1639,7 +1632,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×ž×¤×¨×§ עליון."
#: editor/editor_node.cpp
msgid "Export Tile Set"
@@ -1647,23 +1640,23 @@ msgstr ""
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×‘×—×™×¨×” של מפרק."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr ""
+msgstr "הסצנה הנוכחית ×œ× × ×©×ž×¨×”. לפתוח בכל ×–×ת?"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לרענן סצנה ×©×ž×¢×•×œ× ×œ× × ×©×ž×¨×”."
#: editor/editor_node.cpp
msgid "Revert"
-msgstr ""
+msgstr "שחזור"
#: editor/editor_node.cpp
msgid "This action cannot be undone. Revert anyway?"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לבטל פעולה זו. לשחזר בכל ×–×ת?"
#: editor/editor_node.cpp
msgid "Quick Run Scene.."
@@ -1671,49 +1664,51 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Quit"
-msgstr ""
+msgstr "יצי××”"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr ""
+msgstr "לצ×ת מהעורך?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr ""
+msgstr "לפתוח ×ת מנהל המיזמי×?"
#: editor/editor_node.cpp
msgid "Save & Quit"
-msgstr ""
+msgstr "לשמור ולצ×ת"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œ×¡×¦× ×•×ª הב×ות לפני היצי××”?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
-msgstr ""
+msgstr "לשמור ×ת הסצנות הב×ות לפני פתיחת מנהל המיזמי×?"
#: editor/editor_node.cpp
msgid ""
"This option is deprecated. Situations where refresh must be forced are now "
"considered a bug. Please report."
msgstr ""
+"×פשרות זו ××™× ×” זמינה עוד. ×ž×¦×‘×™× ×‘×”× ×™×© ל×לץ רענון × ×—×©×‘×™× ×œ×‘××’×™×. × × ×œ×“×•×•×— "
+"עליה×."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ סצנה ר×שית"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לפתוח ×ת תוסף ההרחבות תחת: ‚%s’ פענוח ההגדרות נכשל."
#: editor/editor_node.cpp
msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×©×“×” סקריפט עבור תוסף הרחבה תחת ‚res://addons/%s’."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ לטעון סקריפט הרחבה מהנתיב: ‚%s’."
#: editor/editor_node.cpp
msgid ""
@@ -1792,23 +1787,23 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr ""
+msgstr "הוספת סצנה חדשה."
#: editor/editor_node.cpp
msgid "Scene"
-msgstr ""
+msgstr "סצנה"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr ""
+msgstr "מעבר לסצנה שנפתחה ×§×•×“× ×œ×›×Ÿ."
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr ""
+msgstr "הלשונית הב××”"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr ""
+msgstr "הלשונית הקודמת"
#: editor/editor_node.cpp
msgid "Filter Files.."
@@ -1816,39 +1811,39 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr ""
+msgstr "פעולות ×¢× ×§×•×‘×¦×™ סצנות."
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr ""
+msgstr "סצנה חדשה"
#: editor/editor_node.cpp
msgid "New Inherited Scene.."
-msgstr ""
+msgstr "סצנה חדשה בירושה…"
#: editor/editor_node.cpp
msgid "Open Scene.."
-msgstr ""
+msgstr "פתיחת סצנה…"
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr ""
+msgstr "שמירת סצנה"
#: editor/editor_node.cpp
msgid "Save all Scenes"
-msgstr ""
+msgstr "שמירת כל הסצנות"
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr ""
+msgstr "סגירת סצנה"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
-msgstr ""
+msgstr "פתיחה מה×חרוני×"
#: editor/editor_node.cpp
msgid "Convert To.."
-msgstr ""
+msgstr "המרה ×ל…"
#: editor/editor_node.cpp
msgid "MeshLibrary.."
@@ -1861,62 +1856,64 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr ""
+msgstr "ביטול"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp
msgid "Redo"
-msgstr ""
+msgstr "ביצוע חוזר"
#: editor/editor_node.cpp
msgid "Revert Scene"
-msgstr ""
+msgstr "שחזור סצנה"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "×›×œ×™× ×©×•× ×™× ×œ×ž×™×–× ×ו למגוון סצנות."
#: editor/editor_node.cpp
msgid "Project"
-msgstr ""
+msgstr "מיז×"
#: editor/editor_node.cpp
msgid "Project Settings"
-msgstr ""
+msgstr "הגדרות מיז×"
#: editor/editor_node.cpp
msgid "Run Script"
-msgstr ""
+msgstr "הרצת סקריפט"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "ייצו×"
#: editor/editor_node.cpp
msgid "Tools"
-msgstr ""
+msgstr "כלי×"
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr ""
+msgstr "יצי××” לרשימת המיזמי×"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Debug"
-msgstr ""
+msgstr "ניפוי שגי×ות"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr ""
+msgstr "הטעמה ×¢× × ×™×¤×•×™ שגי×ות מרחוק"
#: editor/editor_node.cpp
msgid ""
"When exporting or deploying, the resulting executable will attempt to "
"connect to the IP of this computer in order to be debugged."
msgstr ""
+"בעת ×™×™×¦×•× ×ו הטמעה, קובץ ההפעלה ינסה להתחבר לכתובת ×”Ö¾IP של המחשב ×”×–×” לצורך "
+"ניפוי שגי×ות."
#: editor/editor_node.cpp
msgid "Small Deploy with Network FS"
-msgstr ""
+msgstr "הטמעה קטנה ×¢× ×ž×¢×¨×›×ª ×§×‘×¦×™× ×‘×¨×©×ª"
#: editor/editor_node.cpp
msgid ""
@@ -1940,7 +1937,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Navigation"
-msgstr ""
+msgstr "ניווט גלוי"
#: editor/editor_node.cpp
msgid ""
@@ -1950,7 +1947,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "סנכרון ×”×©×™× ×•×™×™× ×‘×¡×¦× ×”"
#: editor/editor_node.cpp
msgid ""
@@ -1962,7 +1959,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Script Changes"
-msgstr ""
+msgstr "סנכרון ×”×©×™× ×•×™×™× ×‘×¡×§×¨×™×¤×˜"
#: editor/editor_node.cpp
msgid ""
@@ -1974,216 +1971,223 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Editor"
-msgstr ""
+msgstr "עורך"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
-msgstr ""
+msgstr "הגדרות עורך"
#: editor/editor_node.cpp
msgid "Editor Layout"
-msgstr ""
+msgstr "פריסת עורך"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr ""
+msgstr "כניסה ×ל/יצי××” ממסך מל×"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
-msgstr ""
+msgstr "ניהול תבניות ייצו×"
#: editor/editor_node.cpp
msgid "Help"
-msgstr ""
+msgstr "עזרה"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
-msgstr ""
+msgstr "מחלקות"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "חיפוש"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
-msgstr ""
+msgstr "×ž×¡×ž×›×™× ×ž×§×•×•× ×™×"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "שו״ת"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "עוקב תקלות"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
-msgstr ""
+msgstr "קהילה"
#: editor/editor_node.cpp
msgid "About"
-msgstr ""
+msgstr "על ×ודות"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr ""
+msgstr "נגינת המיז×…"
#: editor/editor_node.cpp
msgid "Play"
-msgstr ""
+msgstr "× ×’×™× ×”"
#: editor/editor_node.cpp
msgid "Pause the scene"
-msgstr ""
+msgstr "השהיית הסצנה"
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr ""
+msgstr "השהיית סצנה"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr ""
+msgstr "עצירת הסצנה."
#: editor/editor_node.cpp
msgid "Stop"
-msgstr ""
+msgstr "עצירה"
#: editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr ""
+msgstr "נגינת הסצנה שנערכה."
#: editor/editor_node.cpp
msgid "Play Scene"
-msgstr ""
+msgstr "נגינת הסצנה"
#: editor/editor_node.cpp
msgid "Play custom scene"
-msgstr ""
+msgstr "נגינת סצנה מות×מת ×ישית"
#: editor/editor_node.cpp
msgid "Play Custom Scene"
-msgstr ""
+msgstr "נגינת סצנה בהת×מה ×ישית"
#: editor/editor_node.cpp
msgid "Spins when the editor window repaints!"
-msgstr ""
+msgstr "מסתובב ×›×שר חלון העורך מצויר מחדש!"
#: editor/editor_node.cpp
msgid "Update Always"
-msgstr ""
+msgstr "לעדכן תמיד"
#: editor/editor_node.cpp
msgid "Update Changes"
-msgstr ""
+msgstr "עדכון שינויי×"
#: editor/editor_node.cpp
msgid "Disable Update Spinner"
-msgstr ""
+msgstr "השבתת שבשבת עדכון"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr ""
+msgstr "חוקר"
#: editor/editor_node.cpp
msgid "Create a new resource in memory and edit it."
-msgstr ""
+msgstr "יצירת מש×ב חדש בזיכרון ועריכתו."
#: editor/editor_node.cpp
msgid "Load an existing resource from disk and edit it."
-msgstr ""
+msgstr "טעינת מש×ב ×§×™×™× ×ž×”×›×•× ×Ÿ ועריכתו."
#: editor/editor_node.cpp
msgid "Save the currently edited resource."
-msgstr ""
+msgstr "שמירת המש×ב שנערך כרגע."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr ""
+msgstr "שמירה בש×…"
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
-msgstr ""
+msgstr "מעבר לפריט ×”×חרון שנערך מההיסטוריה."
#: editor/editor_node.cpp
msgid "Go to the next edited object in history."
-msgstr ""
+msgstr "מעבר לפריט ×”×‘× ×©× ×¢×¨×š מההיסטוריה."
#: editor/editor_node.cpp
msgid "History of recently edited objects."
-msgstr ""
+msgstr "היסטוריה של ×”×¤×¨×™×˜×™× ×©× ×¢×¨×›×• ל×חרונה."
#: editor/editor_node.cpp
msgid "Object properties."
-msgstr ""
+msgstr "מ×פייני פריט."
#: editor/editor_node.cpp
msgid "Changes may be lost!"
-msgstr ""
+msgstr "×”×©×™× ×•×™×™× ×¢×©×•×™×™× ×œ×œ×›×ª ל×יבוד!"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "ייבו×"
#: editor/editor_node.cpp
msgid "Node"
-msgstr ""
+msgstr "מפרק"
#: editor/editor_node.cpp
msgid "FileSystem"
-msgstr ""
+msgstr "מערכת קבצי×"
#: editor/editor_node.cpp
msgid "Output"
-msgstr ""
+msgstr "פלט"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
+msgstr "×œ× ×œ×©×ž×•×¨"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
-msgstr ""
+msgstr "×™×™×‘×•× ×ª×‘× ×™×•×ª מקובץ ZIP"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
-msgstr ""
+msgstr "×™×™×¦×•× ×ž×™×–×"
#: editor/editor_node.cpp
msgid "Export Library"
-msgstr ""
+msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr ""
+msgstr "מיזוג ×¢× × ×•×›×—×™×™×"
#: editor/editor_node.cpp
msgid "Password:"
-msgstr ""
+msgstr "ססמה:"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
-msgstr ""
+msgstr "פתיחה והרצה של סקריפט"
#: editor/editor_node.cpp
msgid "New Inherited"
-msgstr ""
+msgstr "חדש בירושה"
#: editor/editor_node.cpp
msgid "Load Errors"
-msgstr ""
+msgstr "שגי×ות טעינה"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
-msgstr ""
+msgstr "בחירה"
#: editor/editor_node.cpp
msgid "Open 2D Editor"
-msgstr ""
+msgstr "פתיחת עורך דו־ממד"
#: editor/editor_node.cpp
msgid "Open 3D Editor"
-msgstr ""
+msgstr "פתיחת עורך תלת־ממד"
#: editor/editor_node.cpp
msgid "Open Script Editor"
-msgstr ""
+msgstr "פתיחת עורך סקריפטי×"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
@@ -2191,11 +2195,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Open the next Editor"
-msgstr ""
+msgstr "פתיחת העורך הב×"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
-msgstr ""
+msgstr "פתיחת העורך הקוד×"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
@@ -2203,28 +2207,28 @@ msgstr ""
#: editor/editor_plugin.cpp
msgid "Thumbnail.."
-msgstr ""
+msgstr "תמונה ממוזערת…"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
-msgstr ""
+msgstr "×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×:"
#: editor/editor_plugin_settings.cpp
msgid "Update"
-msgstr ""
+msgstr "עדכון"
#: editor/editor_plugin_settings.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Version:"
-msgstr ""
+msgstr "גרסה:"
#: editor/editor_plugin_settings.cpp
msgid "Author:"
-msgstr ""
+msgstr "יוצר:"
#: editor/editor_plugin_settings.cpp
msgid "Status:"
-msgstr ""
+msgstr "מצב:"
#: editor/editor_profiler.cpp
msgid "Stop Profiling"
@@ -2236,27 +2240,27 @@ msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
-msgstr ""
+msgstr "מדידה:"
#: editor/editor_profiler.cpp
msgid "Frame Time (sec)"
-msgstr ""
+msgstr "זמן שקופית (שניות)"
#: editor/editor_profiler.cpp
msgid "Average Time (sec)"
-msgstr ""
+msgstr "זמן ממוצע (שניות)"
#: editor/editor_profiler.cpp
msgid "Frame %"
-msgstr ""
+msgstr "שקופית %"
#: editor/editor_profiler.cpp
msgid "Physics Frame %"
-msgstr ""
+msgstr "שקופית פיזיקלית %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
msgid "Time:"
-msgstr ""
+msgstr "זמן:"
#: editor/editor_profiler.cpp
msgid "Inclusive"
@@ -2264,23 +2268,23 @@ msgstr ""
#: editor/editor_profiler.cpp
msgid "Self"
-msgstr ""
+msgstr "עצמי"
#: editor/editor_profiler.cpp
msgid "Frame #:"
-msgstr ""
+msgstr "שקופית מס׳:"
#: editor/editor_profiler.cpp
msgid "Time"
-msgstr ""
+msgstr "זמן"
#: editor/editor_profiler.cpp
msgid "Calls"
-msgstr ""
+msgstr "קרי×ות"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה"
#: editor/editor_run_native.cpp
msgid ""
@@ -2290,11 +2294,11 @@ msgstr ""
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
-msgstr ""
+msgstr "ניתן לכתוב ×ת הלוגיקה שלך בשיטה ‎_run()‎."
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
-msgstr ""
+msgstr "כבר יש סצנה בעריכה."
#: editor/editor_run_script.cpp
msgid "Couldn't instance script:"
@@ -2302,55 +2306,55 @@ msgstr ""
#: editor/editor_run_script.cpp
msgid "Did you forget the 'tool' keyword?"
-msgstr ""
+msgstr "יכול להיות ששכחת ×ת מילת המפתח ‚tool’?"
#: editor/editor_run_script.cpp
msgid "Couldn't run script:"
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ להריץ ×ת הסקריפט:"
#: editor/editor_run_script.cpp
msgid "Did you forget the '_run' method?"
-msgstr ""
+msgstr "שכחת ×ת השיטה ‚‎_run’?"
#: editor/editor_settings.cpp
msgid "Default (Same as Editor)"
-msgstr ""
+msgstr "בררת מחדל (כמו העורך)"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
-msgstr ""
+msgstr "× × ×œ×‘×—×•×¨ ×ž×¤×¨×§×™× ×œ×™×™×¦×•×"
#: editor/editor_sub_scene.cpp
msgid "Scene Path:"
-msgstr ""
+msgstr "נתיב סצנות:"
#: editor/editor_sub_scene.cpp
msgid "Import From Node:"
-msgstr ""
+msgstr "×™×™×‘×•× ×ž×ž×¤×¨×§:"
#: editor/export_template_manager.cpp
msgid "Re-Download"
-msgstr ""
+msgstr "הורדה מחדש"
#: editor/export_template_manager.cpp
msgid "Uninstall"
-msgstr ""
+msgstr "הסרה"
#: editor/export_template_manager.cpp
msgid "(Installed)"
-msgstr ""
+msgstr "(מותקן)"
#: editor/export_template_manager.cpp
msgid "Download"
-msgstr ""
+msgstr "הורדה"
#: editor/export_template_manager.cpp
msgid "(Missing)"
-msgstr ""
+msgstr "(חסר)"
#: editor/export_template_manager.cpp
msgid "(Current)"
-msgstr ""
+msgstr "(נוכחי)"
#: editor/export_template_manager.cpp
msgid "Retrieving mirrors, please wait.."
@@ -2358,15 +2362,15 @@ msgstr ""
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "להסיר ×ת גרסת התבנית ‚%s’?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
-msgstr ""
+msgstr "×œ× × ×™×ª×Ÿ ×œ×™×™×¦× zip של תבניות."
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates."
-msgstr ""
+msgstr "תבנית ה־version.txt שגויה בתוך התבניות."
#: editor/export_template_manager.cpp
msgid ""
@@ -2379,7 +2383,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2533,9 +2537,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2543,19 +2545,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3192,6 +3194,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3357,6 +3363,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3657,19 +3664,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4040,7 +4050,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4429,14 +4439,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4512,6 +4524,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4943,83 +4959,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5034,6 +5050,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5107,15 +5127,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5390,10 +5406,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5419,14 +5443,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5564,6 +5591,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5664,6 +5695,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5771,9 +5826,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5785,6 +5838,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5825,14 +5886,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5849,10 +5922,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5898,6 +5967,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6024,11 +6097,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6406,10 +6474,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6494,7 +6558,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6785,7 +6849,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6794,6 +6858,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7139,10 +7207,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7411,23 +7519,23 @@ msgstr ""
#: modules/visual_script/visual_script_editor.cpp
msgid "Find Node Type"
-msgstr ""
+msgstr "×יתור סוג מפרק"
#: modules/visual_script/visual_script_editor.cpp
msgid "Copy Nodes"
-msgstr ""
+msgstr "העתקת מפרקי×"
#: modules/visual_script/visual_script_editor.cpp
msgid "Cut Nodes"
-msgstr ""
+msgstr "גזירת מפרקי×"
#: modules/visual_script/visual_script_editor.cpp
msgid "Paste Nodes"
-msgstr ""
+msgstr "הדבקת מפרקי×"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
-msgstr ""
+msgstr "סוג הקלט ×œ× ×–×ž×™×Ÿ למחזוריות: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
@@ -7439,15 +7547,15 @@ msgstr ""
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name."
-msgstr ""
+msgstr "×©× ×ž×פיין ×”×ינדקס שגוי."
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
-msgstr ""
+msgstr "×¢×¦× ×”×‘×¡×™×¡ ×יננו מפרק!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
-msgstr ""
+msgstr "הנתיב ×œ× ×ž×•×‘×™×œ מפרק!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
@@ -7455,23 +7563,23 @@ msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
-msgstr ""
+msgstr ": ×רגומנט שגוי מסוג: "
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid arguments: "
-msgstr ""
+msgstr ": ××¨×’×•×ž× ×˜×™× ×©×’×•×™×™×: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
-msgstr ""
+msgstr "×œ× × ×ž×¦× VariableGet בסקריפט: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableSet not found in script: "
-msgstr ""
+msgstr "×œ× × ×ž×¦× VariableSet בסקריפט: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
+msgstr "למפרק המות×× ×ין שיטת ‎_step()‎, ×ין ×פשרות לעבד תרשי×."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
@@ -7481,31 +7589,35 @@ msgstr ""
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
-msgstr ""
+msgstr "הפעלה בדפדפן"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "הפעלת ×”Ö¾HTML ×”×ž×™×•×¦× ×‘×“×¤×“×¤×Ÿ בררת המחדל של המערכת."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr ""
+msgid "Could not write file:"
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+msgid "Could not open template for export:"
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr ""
+msgid "Invalid export template:"
+msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr ""
+msgid "Could not read custom HTML shell:"
+msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ž×¢×˜×¤×ª HTML מות×מת:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr ""
+msgid "Could not read boot splash image file:"
+msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×§×•×‘×¥ תמונת פתיח:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "נעשה שימוש בתמונת הפתיח כבררת מחדל."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7519,6 +7631,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7574,20 +7693,21 @@ msgstr ""
msgid ""
"ParallaxLayer node only works when set as child of a ParallaxBackground node."
msgstr ""
+"מפרק ParallaxLayer עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק ParallaxBackground."
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
-msgstr ""
+msgstr "×œ× ×ž×•×§×¦×” חומר לעיבוד חלקיקי×, לכן ×œ× ×ª×•×˜×‘×¢ התנהגות."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
+msgstr "PathFollow2D עובד רק ×›×שר ×”×•× ×ž×•×’×“×¨ כצ××¦× ×©×œ מפרק Path2D."
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7604,7 +7724,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ל־ARVRCamera חייב להיות מפרק ARVROrigin כהורה שלו"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
@@ -7628,7 +7748,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin דורש מפרק צ××¦× ×ž×¡×•×’ ARVRCamera"
#: scene/3d/baked_lightmap.cpp
msgid "Plotting Meshes: "
@@ -7646,6 +7766,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7655,7 +7782,7 @@ msgstr ""
#: scene/3d/collision_polygon.cpp
msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
+msgstr "ל־CollisionPolygon ריק ×ין כל השפעה על התנגשות."
#: scene/3d/collision_shape.cpp
msgid ""
@@ -7691,8 +7818,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7757,8 +7884,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7775,12 +7902,33 @@ msgstr ""
#: scene/resources/dynamic_font.cpp
msgid "Unknown font format."
-msgstr ""
+msgstr "מבנה הגופן ×œ× ×™×“×•×¢."
#: scene/resources/dynamic_font.cpp
msgid "Error loading font."
-msgstr ""
+msgstr "שגי××” בטעינת הגופן."
#: scene/resources/dynamic_font.cpp
msgid "Invalid font size."
-msgstr ""
+msgstr "גודל הגופן שגוי."
+
+#~ msgid "Next"
+#~ msgstr "הב×"
+
+#~ msgid "Not found!"
+#~ msgstr "×œ× × ×ž×¦×!"
+
+#~ msgid "Replace By"
+#~ msgstr "להחליף ב־"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "תלוי רישיות"
+
+#~ msgid "Backwards"
+#~ msgstr "×חורה"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "להודיע על החלפה"
+
+#~ msgid "Skip"
+#~ msgstr "לדלג"
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index 2da7f0fed1..c124727d74 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -204,8 +204,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -382,14 +381,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -398,50 +389,18 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "छोड़ें"
-
-#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "बड़ा करो"
@@ -565,6 +524,15 @@ msgid "Signals"
msgstr "संकेत"
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
#, fuzzy
msgid "Create New %s"
msgstr "à¤à¤• नया बनाà¤à¤‚"
@@ -681,7 +649,8 @@ msgstr ""
"वैसे भी उनà¥à¤¹à¥‡à¤‚ निकालें? (कोई पूरà¥à¤µà¤µà¤¤ नहीं)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "निकाला नहीं जा सकता:\n"
#: editor/dependency_editor.cpp
@@ -765,8 +734,9 @@ msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•"
msgid "Lead Developer"
msgstr "पà¥à¤°à¤®à¥à¤– डेवलपर"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर"
#: editor/editor_about.cpp
@@ -857,7 +827,7 @@ msgid "Success!"
msgstr "सफलता!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "इंसà¥à¤Ÿà¥‰à¤²"
@@ -1169,7 +1139,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1381,6 +1351,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1412,6 +1393,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1423,6 +1408,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1431,8 +1420,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1486,7 +1475,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2039,6 +2029,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2418,7 +2415,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2573,9 +2570,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2583,21 +2578,23 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:"
+msgstr "लापता निरà¥à¤­à¤°à¤¤à¤¾à¤“ं के कारण दृशà¥à¤¯ लोड करने में विफल रहे:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -3237,6 +3234,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3402,6 +3403,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3702,19 +3704,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4085,7 +4090,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4474,14 +4479,17 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "संसाधन"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4557,6 +4565,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4988,83 +5000,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5079,6 +5091,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5152,15 +5168,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5435,10 +5447,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5464,14 +5484,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5609,6 +5632,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5709,6 +5736,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5816,9 +5867,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5830,6 +5879,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5870,14 +5927,28 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "à¤à¤• नया बनाà¤à¤‚"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "इंसà¥à¤Ÿà¥‰à¤²"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5894,10 +5965,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5943,6 +6010,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6069,11 +6140,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6451,10 +6517,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6539,8 +6601,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "संसाधन"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6830,7 +6893,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6839,6 +6902,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7184,10 +7251,51 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7533,23 +7641,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7564,6 +7676,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7632,7 +7751,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7691,6 +7810,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7736,8 +7862,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7802,8 +7928,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7830,6 +7956,5 @@ msgstr ""
msgid "Invalid font size."
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
-#, fuzzy
-#~ msgid "Create Subscription"
-#~ msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+#~ msgid "Skip"
+#~ msgstr "छोड़ें"
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 9f38422bbc..9d89e98f7e 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -5,20 +5,20 @@
#
# Nagy Lajos <neutron9707@gmail.com>, 2017.
# Sandor Domokos <sandor.domokos@gmail.com>, 2017.
-# Varga Dániel <danikah.danikah@gmail.com>, 2016-2017.
+# Varga Dániel <danikah.danikah@gmail.com>, 2016-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-01 05:47+0000\n"
-"Last-Translator: Sandor Domokos <sandor.domokos@gmail.com>\n"
+"PO-Revision-Date: 2018-01-20 08:54+0000\n"
+"Last-Translator: Varga Dániel <danikah.danikah@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hu/>\n"
"Language: hu\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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -26,49 +26,47 @@ msgstr "Tiltva"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr "Mind kiválaszt"
+msgstr "Mind kiválasztva"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Animáció érték váltás"
+msgstr "Animáció Kulcsképkocka Idő Változtatása"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr "Animáció átmenet megváltoztatása"
+msgstr "Animáció Ãtmenet Váltás"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr "Animáció átalakító váltás"
+msgstr "Animáció Transzformáció Váltás"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Animáció érték váltás"
+msgstr "Animáció Kulcsképkocka Érték"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr "Animáció hívás váltás"
+msgstr "Animáció Hívás Váltás"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr "Animáció nyomvonal hozzáadása"
+msgstr "Animáció Nyomvonal Hozzáadása"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Animáció kulcs megkettőzése"
+msgstr "Animáció Kulcs Megkettőzése"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr "Animáció nyomvonal felfelé mozgatása"
+msgstr "Animáció Nyomvonal Felfelé Mozgatása"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr "Animáció nyomvonal lefelé mozgatása"
+msgstr "Animáció Nyomvonal Lefelé Mozgatása"
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr "Animáció nyomvonal eltávolítása"
+msgstr "Animáció Nyomvonal Eltávolítása"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
@@ -76,44 +74,44 @@ msgstr "Ãtmenet beállítása erre:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr "Animáció nyomvonal átnevezése"
+msgstr "Animáció Nyomvonal Ãtnevezése"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr "Animáció nyomvonal intelpoláció változtatása"
+msgstr "Animáció Nyomvonal Interpoláció Változtatása"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr "Animáció nyomvonal érték mód változtatása"
+msgstr "Animáció Nyomvonal Érték Mód Változtatása"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
-msgstr "Animáció nyomvonal takarási mód változtatása"
+msgstr "Animáció Nyomvonal Takarási Mód Változtatása"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
-msgstr "Node görbe szerkesztése"
+msgstr "Node Görbe Szerkesztése"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
-msgstr "Kiválasztás görbe szerkesztése"
+msgstr "Kiválasztás Görbe Szerkesztése"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr "Animáció kulcs törlése"
+msgstr "Animáció Kulcs Törlése"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr "Kiválasztás megkettőzése"
+msgstr "Kiválasztás Megkettőzése"
#: editor/animation_editor.cpp
msgid "Duplicate Transposed"
-msgstr "Kiválasztás áthelyezése"
+msgstr "Ãthelyezettek MegkettÅ‘zése"
#: editor/animation_editor.cpp
msgid "Remove Selection"
-msgstr "Kiválasztás eltávolítása"
+msgstr "Kiválasztás Eltávolítása"
#: editor/animation_editor.cpp
msgid "Continuous"
@@ -129,27 +127,27 @@ msgstr "Érzékelő"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr "Animáció kulcs hozzáadása"
+msgstr "Animáció Kulcs Hozzáadása"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
-msgstr "Animáció kulcs mozgatása"
+msgstr "Animáció Kulcs Mozgatása"
#: editor/animation_editor.cpp
msgid "Scale Selection"
-msgstr "Kiválasztás átméretezése"
+msgstr "Kiválasztás Ãtméretezése"
#: editor/animation_editor.cpp
msgid "Scale From Cursor"
-msgstr "Kijelölés a kurzortól"
+msgstr "Ãtméretezés A Kurzortól"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
-msgstr "Ugrás a következő lépésre"
+msgstr "Ugrás A következő lépésre"
#: editor/animation_editor.cpp
msgid "Goto Prev Step"
-msgstr "Ugrás az előző lépésre"
+msgstr "Ugrás Az Előző Lépésre"
#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
@@ -162,92 +160,91 @@ msgstr "Ãllandó"
#: editor/animation_editor.cpp
msgid "In"
-msgstr "Belső"
+msgstr "Be"
#: editor/animation_editor.cpp
msgid "Out"
-msgstr "Külső"
+msgstr "Ki"
#: editor/animation_editor.cpp
msgid "In-Out"
-msgstr "Belső-külső"
+msgstr "Be-Ki"
#: editor/animation_editor.cpp
msgid "Out-In"
-msgstr "Külső-belső"
+msgstr "Ki-Be"
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr "Ãtmenet"
+msgstr "Ãtmenetek"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr "Animáció optimalizálása"
+msgstr "Animáció Optimalizálása"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr "Animáció megtisztítása"
+msgstr "Animáció Megtisztítása"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "ÚJ útvonal létrehozása %s -hez és kulcs beillesztése?"
+msgstr "Létrehoz ÚJ útvonalat %s -hez és beilleszti a kulcsot?"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "Létrehoz %d ÚJ útvonalat és beilleszti a kulcsokat?"
+msgstr "Létrehoz %d ÚJ nyomvonalat és beilleszti a kulcsokat?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Létrehozás"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
-msgstr "Animáció létrehozása és beillesztése"
+msgstr "Animáció Létrehozása És Beillesztése"
#: editor/animation_editor.cpp
msgid "Anim Insert Track & Key"
-msgstr "Animáció útvonal & kulcs beillesztése"
+msgstr "Animáció Útvonal És Kulcs Beillesztése"
#: editor/animation_editor.cpp
msgid "Anim Insert Key"
-msgstr "Animáció kulcs beillesztése"
+msgstr "Animáció Kulcs Beillesztése"
#: editor/animation_editor.cpp
msgid "Change Anim Len"
-msgstr "Csak animáció változtatása"
+msgstr "Csak Animáció változtatása"
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr "Animáció hurok változtatása"
+msgstr "Animáció Loop Megváltoztatása"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
-msgstr ""
+msgstr "Animáció Típusos Érték Kulcs Létrehozása"
#: editor/animation_editor.cpp
msgid "Anim Insert"
-msgstr "Animáció beillesztése"
+msgstr "Animáció Beilleszt"
#: editor/animation_editor.cpp
msgid "Anim Scale Keys"
-msgstr ""
+msgstr "Animáció Kulcsok Nyújtása"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
-msgstr ""
+msgstr "Animáció Hívási Nyomvonal Hozzáadása"
#: editor/animation_editor.cpp
msgid "Animation zoom."
-msgstr ""
+msgstr "Animáció nagyítás."
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr "Hossz(ak):"
+msgstr "Hossz (mp):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
@@ -255,11 +252,11 @@ msgstr "Animáció hossza (másodpercben)."
#: editor/animation_editor.cpp
msgid "Step (s):"
-msgstr "Lépés(ek):"
+msgstr "Lépés (mp):"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
-msgstr "Kurzor léptetése (másodpercben)."
+msgstr "Kurzor hozzáillesztése a lépésekhez (másodpercben)."
#: editor/animation_editor.cpp
msgid "Enable/Disable looping in animation."
@@ -267,7 +264,7 @@ msgstr "Az animáció ismétlésének engedélyezése/tiltása."
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr "Új nyomvonal hozzáadása."
+msgstr "Új nyomvonalak hozzáadása."
#: editor/animation_editor.cpp
msgid "Move current track up."
@@ -287,23 +284,23 @@ msgstr "Nyomvonal eszközök"
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr ""
+msgstr "Engedélyezi az egyes kulcsok szerkesztését rákattintással."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr ""
+msgstr "Animáció Optimalizáló"
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
-msgstr "Max. lineáris hiba:"
+msgstr "Max. Lineáris Hiba:"
#: editor/animation_editor.cpp
msgid "Max. Angular Error:"
-msgstr "Max. szög hiba:"
+msgstr "Max. Szög Hiba:"
#: editor/animation_editor.cpp
msgid "Max Optimizable Angle:"
-msgstr "Max. optimalizálható szög:"
+msgstr "Max. Optimalizálható Szög:"
#: editor/animation_editor.cpp
msgid "Optimize"
@@ -312,11 +309,12 @@ msgstr "Optimalizálás"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
msgstr ""
-"AnimationPlayer választása a Scene Tree-ból az animációk szerkesztéséhez."
+"Válasszon egy AnimationPlayer-t a Jelenetfából, hogy animációkat "
+"szerkeszthessen."
#: editor/animation_editor.cpp
msgid "Key"
-msgstr ""
+msgstr "Kulcs"
#: editor/animation_editor.cpp
msgid "Transition"
@@ -328,7 +326,7 @@ msgstr "Méretezési arány:"
#: editor/animation_editor.cpp
msgid "Call Functions in Which Node?"
-msgstr "Melyik Node-ban hívjon funkciókat?"
+msgstr "Melyik Node-ban Hívjon Funkciókat?"
#: editor/animation_editor.cpp
msgid "Remove invalid keys"
@@ -344,7 +342,7 @@ msgstr "Összes animáció tisztítása"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr "Animációk tisztítása (Nem visszavonható!)"
+msgstr "Animáció(k) Tisztítása (NEM VISSZAVONHATÓ!)"
#: editor/animation_editor.cpp
msgid "Clean-Up"
@@ -352,99 +350,59 @@ msgstr "Tisztítás"
#: editor/array_property_edit.cpp
msgid "Resize Array"
-msgstr "Tömb átméretezése"
+msgstr "Tömb Ãtméretezése"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr "Tömb értéktípusának megváltoztatása"
+msgstr "Tömb Értéktípusának Megváltoztatása"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
-msgstr "Tömb értékének megváltoztatása"
+msgstr "Tömb Értékének Megváltoztatása"
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr "Sorra ugrás"
+msgstr "Sorra Ugrás"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr "Sor száma:"
+msgstr "Sor Száma:"
#: editor/code_editor.cpp
msgid "No Matches"
-msgstr "Nincs találat"
+msgstr "Nincs Találat"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
msgstr "Lecserélve %d előfordulás."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Lecserélés"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Mind lecserélése"
-
-#: editor/code_editor.cpp
msgid "Match Case"
-msgstr "Előfordulás"
+msgstr "Pontos Egyezés"
#: editor/code_editor.cpp
msgid "Whole Words"
-msgstr "Teljes szavak"
+msgstr "Teljes Szavak"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Csak a kiválsztás"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Keresés"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Találat"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Következő"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Nincs találat!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr ""
+msgid "Replace"
+msgstr "Lecserélés"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr ""
+msgid "Replace All"
+msgstr "Mind Lecserélése"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr ""
+msgid "Selection Only"
+msgstr "Csak Kiválsztás"
#: editor/code_editor.cpp
msgid "Zoom In"
-msgstr "Nagyítás közelítés"
+msgstr "Nagyítás"
#: editor/code_editor.cpp
msgid "Zoom Out"
-msgstr "Nagyítás távolítás"
+msgstr "Kicsinyítés"
#: editor/code_editor.cpp
msgid "Reset Zoom"
@@ -460,54 +418,56 @@ msgstr "Oszlop:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr ""
+msgstr "Nevezze meg a metódust a cél Node-ban!"
#: editor/connections_dialog.cpp
msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
+"Nem található a cél metódus! Nevezzen meg egy érvényes metódust, vagy "
+"csatoljon egy scriptet a cél Node-hoz."
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
-msgstr ""
+msgstr "Csatlakoztatás Node-hoz:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
-msgstr ""
+msgstr "Hozzáad"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
-msgstr ""
+msgstr "Eltávolít"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "További Meghívási Argumentum Hozzáadása:"
#: editor/connections_dialog.cpp
msgid "Extra Call Arguments:"
-msgstr ""
+msgstr "További Meghívási Argumentumok:"
#: editor/connections_dialog.cpp
msgid "Path to Node:"
-msgstr ""
+msgstr "Út a Node-hoz:"
#: editor/connections_dialog.cpp
msgid "Make Function"
-msgstr ""
+msgstr "Funkció Készítése"
#: editor/connections_dialog.cpp
msgid "Deferred"
-msgstr ""
+msgstr "Elhalasztott"
#: editor/connections_dialog.cpp
msgid "Oneshot"
-msgstr ""
+msgstr "Egyszeri"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/export_template_manager.cpp
@@ -521,27 +481,27 @@ msgstr ""
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Close"
-msgstr ""
+msgstr "Bezárás"
#: editor/connections_dialog.cpp
msgid "Connect"
-msgstr ""
+msgstr "Csatlakoztatás"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
-msgstr ""
+msgstr "'%s' Csatlakoztatása '%s'-hez"
#: editor/connections_dialog.cpp
msgid "Connecting Signal:"
-msgstr ""
+msgstr "Csatlakoztató Jelzés:"
#: editor/connections_dialog.cpp
msgid "Disconnect '%s' from '%s'"
-msgstr ""
+msgstr "'%s' Lecsatlakoztatása '%s'-ról"
#: editor/connections_dialog.cpp
msgid "Connect.."
-msgstr "Kapcsolódás..."
+msgstr "Kapcsolás..."
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
@@ -553,9 +513,17 @@ msgid "Signals"
msgstr "Jelzések"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "%s Típusának Megváltoztatása"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Megváltoztatás"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Új létrehozása"
+msgstr "Új %s Létrehozása"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -587,23 +555,27 @@ msgstr "Leírás:"
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
-msgstr ""
+msgstr "Csere Keresése:"
#: editor/dependency_editor.cpp
msgid "Dependencies For:"
-msgstr ""
+msgstr "Függőségek:"
#: editor/dependency_editor.cpp
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will not take effect unless reloaded."
msgstr ""
+"'%s' Jelenet éppen szerkesztés alatt ál.\n"
+"A változások nem lépnek érvénybe, ha csak újra nem tölti a jelenetet."
#: editor/dependency_editor.cpp
msgid ""
"Resource '%s' is in use.\n"
"Changes will take effect when reloaded."
msgstr ""
+"'%s' forrás éppen használatban van.\n"
+"A változtatások akkor lépnek életbe, ha a forrást újratölti."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -612,7 +584,7 @@ msgstr "Függőségek"
#: editor/dependency_editor.cpp
msgid "Resource"
-msgstr ""
+msgstr "Forrás"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
@@ -622,19 +594,19 @@ msgstr "Útvonal"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
-msgstr ""
+msgstr "Függőségek:"
#: editor/dependency_editor.cpp
msgid "Fix Broken"
-msgstr ""
+msgstr "HIbásak Kijavítása"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr "Függőség szerkesztő"
+msgstr "Függőség Szerkesztő"
#: editor/dependency_editor.cpp
msgid "Search Replacement Resource:"
-msgstr ""
+msgstr "Csere Forrás Keresése:"
#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
#: editor/editor_help.cpp editor/editor_node.cpp editor/filesystem_dock.cpp
@@ -657,10 +629,13 @@ msgid ""
"work.\n"
"Remove them anyway? (no undo)"
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ó)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Nem eltávolítható:\n"
+#, fuzzy
+msgid "Cannot remove:"
+msgstr "Nem eltávolítható:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -668,39 +643,39 @@ msgstr "Hiba betöltéskor:"
#: editor/dependency_editor.cpp
msgid "Scene failed to load due to missing dependencies:"
-msgstr "A Scene-t nem sikerült betölteni a hiányzó függőségek miatt:"
+msgstr "A Jelenetet nem sikerült betölteni a hiányzó függőségek miatt:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
-msgstr "Valahogy megnyit"
+msgstr "Megnyitás Mindenképpen"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
-msgstr ""
+msgstr "Melyik lépést tegyük meg?"
#: editor/dependency_editor.cpp
msgid "Fix Dependencies"
-msgstr ""
+msgstr "Függőségek Megjavítása"
#: editor/dependency_editor.cpp
msgid "Errors loading!"
-msgstr ""
+msgstr "Hibák a betöltés során!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "Véglegesen törli a(z) %d eleme(ke)t? (Nem visszavonható!)"
+msgstr "Véglegesen törlöl %d elemet? (Nem visszavonható!)"
#: editor/dependency_editor.cpp
msgid "Owns"
-msgstr ""
+msgstr "Birtokol"
#: editor/dependency_editor.cpp
msgid "Resources Without Explicit Ownership:"
-msgstr ""
+msgstr "Források Explicit Tulajdonos Nélkül:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Orphan Resource Explorer"
-msgstr ""
+msgstr "Ãrva Forrás KezelÅ‘"
#: editor/dependency_editor.cpp
msgid "Delete selected files?"
@@ -712,15 +687,15 @@ msgstr "Törli a kiválasztott fájlokat?"
#: editor/project_export.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_dock.cpp
msgid "Delete"
-msgstr "Töröl"
+msgstr "Törlés"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
-msgstr "Szótár kulcs módosítás"
+msgstr "Szótár Kulcs Módosítása"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Value"
-msgstr "Szótár érték módosítás"
+msgstr "Szótár Érték Módosítása"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
@@ -736,59 +711,59 @@ msgstr "Godot Engine közreműködők"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr ""
+msgstr "Projekt Alapítói"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "Vezető Fejlesztő"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Projekt Menedzser "
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "Fejlesztők"
#: editor/editor_about.cpp
msgid "Authors"
-msgstr ""
+msgstr "Szerzők"
#: editor/editor_about.cpp
msgid "Platinum Sponsors"
-msgstr ""
+msgstr "Platina Támogatók"
#: editor/editor_about.cpp
msgid "Gold Sponsors"
-msgstr ""
+msgstr "Arany Szponzorok"
#: editor/editor_about.cpp
msgid "Mini Sponsors"
-msgstr ""
+msgstr "Mini Szponzorok"
#: editor/editor_about.cpp
msgid "Gold Donors"
-msgstr ""
+msgstr "Arany Adományozók"
#: editor/editor_about.cpp
msgid "Silver Donors"
-msgstr ""
+msgstr "Ezüst Adományozók"
#: editor/editor_about.cpp
msgid "Bronze Donors"
-msgstr ""
+msgstr "Bronz Adományozók"
#: editor/editor_about.cpp
msgid "Donors"
-msgstr ""
+msgstr "Adományozók"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Licenc"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Harmadik Fél Engedély"
#: editor/editor_about.cpp
msgid ""
@@ -804,53 +779,53 @@ msgstr ""
#: editor/editor_about.cpp
msgid "All Components"
-msgstr ""
+msgstr "Minden Összetevő"
#: editor/editor_about.cpp
msgid "Components"
-msgstr ""
+msgstr "Összetevők"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licencek"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Hiba a csomagfájl megnyitása során, nem zip formátumú."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr ""
+msgstr "Eszközök Kicsomagolása"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
-msgstr ""
+msgstr "A Csomag Telepítése Sikeresen Megtörtént!"
#: editor/editor_asset_installer.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Success!"
-msgstr ""
+msgstr "Siker!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
-msgstr ""
+msgstr "Telepítés"
#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr ""
+msgstr "Csomagtelepítő"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Hangszórók"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "Effektus Hozzáadása"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
-msgstr ""
+msgstr "Hangbusz Ãtnevezése"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -859,297 +834,298 @@ msgstr "Tömb értékének megváltoztatása"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr ""
+msgstr "Hangbusz Szóló Ki-/Bekapcsolása"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "Hangbusz Némításának Ki-/Bekapcsolása"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Hangbusz KItérés Effektus Ki-/Bekapcsolása"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Hangbusz Küldésének Kiválasztása"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Hangbusz Effektus Hozzáadása"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Busz Effektus Ãthelyezése"
#: editor/editor_audio_buses.cpp
msgid "Delete Bus Effect"
-msgstr ""
+msgstr "Busz Effektus Törlése"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
+msgstr "Hangbusz, Húzd és Vidd az átrendezéshez."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Szóló"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Néma"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Kitérés"
#: editor/editor_audio_buses.cpp
msgid "Bus options"
-msgstr ""
+msgstr "Busz beállítások"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr ""
+msgstr "Megkettőzés"
#: editor/editor_audio_buses.cpp
msgid "Reset Volume"
-msgstr ""
+msgstr "Hangerő Visszállítása"
#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr ""
+msgstr "Effektus Törlése"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Hang"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
-msgstr ""
+msgstr "Hangbusz Hozzáadása"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "A főbuszt nem lehet kitörölni!"
#: editor/editor_audio_buses.cpp
msgid "Delete Audio Bus"
-msgstr ""
+msgstr "Hangbusz Törlése"
#: editor/editor_audio_buses.cpp
msgid "Duplicate Audio Bus"
-msgstr ""
+msgstr "Hangbusz Megkettőzése"
#: editor/editor_audio_buses.cpp
msgid "Reset Bus Volume"
-msgstr ""
+msgstr "Busz Hangerő Visszaállítása"
#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr ""
+msgstr "Hangbusz Ãthelyezése"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "Hangbusz Elrendezés Mentése Másként.."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "Új Elrendezés Helye.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "Hangbusz Elrendezés Megnyitása"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Nincs 'res://default_bus_layout.tres' fájl."
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr ""
+msgstr "Érvénytelen fájl, nem egy hangbusz elrendezés."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr ""
+msgstr "Busz Hozzáadása"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
-msgstr ""
+msgstr "Új Buszelrendezés létrehozása."
#: editor/editor_audio_buses.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr ""
+msgstr "Betöltés"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr ""
+msgstr "Meglévő Busz Elrendezés betöltése."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
-msgstr ""
+msgstr "Mentés Másként"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr ""
+msgstr "Jelenlegi Busz Elrendezés mentése fájlba."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr ""
+msgstr "Alapértelmezett Betöltése"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Betölti az alapértelmezett Busz Elrendezést."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
-msgstr ""
+msgstr "Érvénytelen név."
#: editor/editor_autoload_settings.cpp
msgid "Valid characters:"
-msgstr ""
+msgstr "Érvényes karakterek:"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing engine class name."
-msgstr ""
+msgstr "Érvénytelen név. Nem ütközhet egy már meglévő motor osztálynévvel."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing buit-in type name."
-msgstr ""
+msgstr "Érvénytelen név. Nem ütközhet egy már meglévő beépített típusnévvel."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing global constant name."
msgstr ""
+"Érvénytelen név. Nem ütközhet egy már meglévő globális konstans névvel."
#: editor/editor_autoload_settings.cpp
msgid "Invalid Path."
-msgstr ""
+msgstr "Érvénytelen Elérési Út."
#: editor/editor_autoload_settings.cpp
msgid "File does not exist."
-msgstr ""
+msgstr "A fájl nem létezik."
#: editor/editor_autoload_settings.cpp
msgid "Not in resource path."
-msgstr ""
+msgstr "Nincs az erőforrás elérési útban."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr ""
+msgstr "AutoLoad Hozzáadása"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr ""
+msgstr "Már létezik '%s' AutoLoad!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
-msgstr ""
+msgstr "AutoLoad Ãtnevezése"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr ""
+msgstr "AutoLoad Globálisok Kapcsolása"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
-msgstr ""
+msgstr "AutoLoad Ãthelyezése"
#: editor/editor_autoload_settings.cpp
msgid "Remove Autoload"
-msgstr ""
+msgstr "AutoLoad Eltávolítása"
#: editor/editor_autoload_settings.cpp
msgid "Enable"
-msgstr ""
+msgstr "Engedélyezés"
#: editor/editor_autoload_settings.cpp
msgid "Rearrange Autoloads"
-msgstr ""
+msgstr "AutoLoad-ok Ãtrendezése"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
#: scene/gui/file_dialog.cpp
msgid "Path:"
-msgstr ""
+msgstr "Útvonal:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
-msgstr ""
+msgstr "Node Neve:"
#: editor/editor_autoload_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
-msgstr ""
+msgstr "Név"
#: editor/editor_autoload_settings.cpp
msgid "Singleton"
-msgstr ""
+msgstr "Egyke"
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr ""
+msgstr "Jelenet Frissítése"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr ""
+msgstr "Helyi módosítások eltárolása.."
#: editor/editor_data.cpp
msgid "Updating scene.."
-msgstr ""
+msgstr "Jelenet frissítése.."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[üres]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[nincs mentve]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr ""
+msgstr "Válasszon egy alap könyvtárat először"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
-msgstr ""
+msgstr "Válasszon egy Könyvtárat"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr ""
+msgstr "Mappa Létrehozása"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
#: scene/gui/file_dialog.cpp
msgid "Name:"
-msgstr ""
+msgstr "Név:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
-msgstr ""
+msgstr "Nem sikerült létrehozni a mappát."
#: editor/editor_dir_dialog.cpp
msgid "Choose"
-msgstr ""
+msgstr "Kiválaszt"
#: editor/editor_export.cpp
msgid "Storing File:"
-msgstr ""
+msgstr "Tároló Fájl:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr ""
+msgstr "Csomagolás"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr ""
+msgid "Template file not found:"
+msgstr "Sablon fájl nem található:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
-msgstr ""
+msgstr "Fájl Létezik, Felülírja?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
-msgstr ""
+msgstr "Aktuális Mappa Kiválasztása"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
@@ -1157,344 +1133,375 @@ msgstr "Útvonal másolása"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Show In File Manager"
-msgstr ""
+msgstr "Mutat Fájlkezelőben"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "New Folder.."
-msgstr ""
+msgstr "Új Mappa.."
#: editor/editor_file_dialog.cpp
msgid "Refresh"
-msgstr ""
+msgstr "Frissítés"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
-msgstr ""
+msgstr "Minden Felismert"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
-msgstr ""
+msgstr "Minden Fájl (*)"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File"
-msgstr ""
+msgstr "Fálj Megnyitása"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open File(s)"
-msgstr ""
+msgstr "Fájl(ok) Megnyitása"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a Directory"
-msgstr ""
+msgstr "Könyvtár Megnyitása"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File or Directory"
-msgstr ""
+msgstr "Fájl vagy Könyvtár Megnyitása"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
-msgstr ""
+msgstr "Mentés"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Save a File"
-msgstr ""
+msgstr "Fájl Mentése"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
-msgstr ""
+msgstr "Ugrás Vissza"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr ""
+msgstr "Ugrás Előre"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
-msgstr ""
+msgstr "Ugrás Fel"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr ""
+msgstr "Rejtett Fájlok Megjelenítése"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr ""
+msgstr "Kedvenc Kapcsolása"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr ""
+msgstr "Mód Váltása"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
-msgstr ""
+msgstr "Elérési Út Fókuszálása"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr ""
+msgstr "Kedvenc Felfelé Mozgatása"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr ""
+msgstr "Kedvenc Lefelé Mozgatása"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Go to parent folder"
-msgstr ""
+msgstr "Ugrás a szülőmappába"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
-msgstr ""
+msgstr "Könyvtárak és Fájlok:"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr ""
+msgstr "Előnézet:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
msgid "File:"
-msgstr ""
+msgstr "Fájl:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
-msgstr ""
+msgstr "Használjon érvényes kiterjesztést."
#: editor/editor_file_system.cpp
msgid "ScanSources"
-msgstr ""
+msgstr "Források Vizsgálata"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr ""
+msgstr "Eszközök (Újra) Betöltése"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Help"
-msgstr ""
+msgstr "Keresés Súgóban"
#: editor/editor_help.cpp
msgid "Class List:"
-msgstr ""
+msgstr "Osztálylista:"
#: editor/editor_help.cpp
msgid "Search Classes"
-msgstr ""
+msgstr "Osztályok Keresése"
#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Top"
-msgstr ""
+msgstr "Eleje"
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
-msgstr ""
+msgstr "Osztály:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
msgid "Inherits:"
-msgstr ""
+msgstr "Örököl:"
#: editor/editor_help.cpp
msgid "Inherited by:"
-msgstr ""
+msgstr "Åt örökli:"
#: editor/editor_help.cpp
msgid "Brief Description:"
-msgstr ""
+msgstr "Rövid Leírás:"
#: editor/editor_help.cpp
msgid "Members"
-msgstr ""
+msgstr "Tagok"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
-msgstr ""
+msgstr "Tagok:"
#: editor/editor_help.cpp
msgid "Public Methods"
-msgstr ""
+msgstr "Publikus Metódusok"
#: editor/editor_help.cpp
msgid "Public Methods:"
-msgstr ""
+msgstr "Publikus Metódusok:"
#: editor/editor_help.cpp
msgid "GUI Theme Items"
-msgstr ""
+msgstr "GUI Téma Elemek"
#: editor/editor_help.cpp
msgid "GUI Theme Items:"
-msgstr ""
+msgstr "GUI Téma Elemek:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
-msgstr ""
+msgstr "Jelzések:"
#: editor/editor_help.cpp
msgid "Enumerations"
-msgstr ""
+msgstr "Felsorolások"
#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr ""
+msgstr "Felsorolások:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
#: editor/editor_help.cpp
msgid "Constants"
-msgstr ""
+msgstr "Konstansok"
#: editor/editor_help.cpp
msgid "Constants:"
-msgstr ""
+msgstr "Konstansok:"
#: editor/editor_help.cpp
msgid "Description"
+msgstr "Leírás"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Online Dokumentáció"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
msgstr ""
+"Ennek a metódusnak jelenleg nincs leírása. Segítsen minket azzal, hogy "
+"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!"
#: editor/editor_help.cpp
msgid "Properties"
-msgstr ""
+msgstr "Tulajdonságok"
#: editor/editor_help.cpp
msgid "Property Description:"
-msgstr ""
+msgstr "Tulajdonság Leírása:"
#: editor/editor_help.cpp
msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
msgstr ""
+"Ennek a tulajdonságnak jelenleg nincs leírása. Segítsen minket azzal, hogy "
+"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!"
#: editor/editor_help.cpp
msgid "Methods"
-msgstr ""
+msgstr "Metódusok"
#: editor/editor_help.cpp
msgid "Method Description:"
-msgstr ""
+msgstr "Metódus Leírás:"
#: editor/editor_help.cpp
msgid ""
"There is currently no description for this method. Please help us by [color="
"$color][url=$url]contributing one[/url][/color]!"
msgstr ""
+"Ennek a metódusnak jelenleg nincs leírása. Segítsen minket azzal, hogy "
+"[color=$color][url=$url]hozzájárul eggyel[/url][/color]!"
#: editor/editor_help.cpp
msgid "Search Text"
-msgstr ""
+msgstr "Keresés a Szövegben"
+
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Keres"
#: editor/editor_log.cpp
msgid "Output:"
-msgstr ""
+msgstr "Kimenet:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
#: editor/property_editor.cpp editor/script_editor_debugger.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Clear"
-msgstr ""
+msgstr "Töröl"
+
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Kimenet Törlése"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
-msgstr ""
+msgstr "Hiba történt az erőforrás mentésekor!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Save Resource As.."
-msgstr ""
+msgstr "Erőforrás Mentése Másként.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
-msgstr ""
+msgstr "Értem.."
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "Nem lehet megnyitni a fájlt írásra:"
#: editor/editor_node.cpp
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "Kért fájl formátum ismeretlen:"
#: editor/editor_node.cpp
msgid "Error while saving."
-msgstr ""
+msgstr "Hiba történt mentés közben."
#: editor/editor_node.cpp
msgid "Can't open '%s'."
-msgstr ""
+msgstr "'%s' nem nyitható meg."
#: editor/editor_node.cpp
msgid "Error while parsing '%s'."
-msgstr ""
+msgstr "Hiba történt '%s' feldolgozása közben."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
-msgstr ""
+msgstr "Váratlan fájlvége '%s'."
#: editor/editor_node.cpp
msgid "Missing '%s' or its dependencies."
-msgstr ""
+msgstr "Nem található '%s' vagy annak függőségei."
#: editor/editor_node.cpp
msgid "Error while loading '%s'."
-msgstr ""
+msgstr "Hiba történt '%s' betöltése közben."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr ""
+msgstr "Jelenet Mentése"
#: editor/editor_node.cpp
msgid "Analyzing"
-msgstr ""
+msgstr "Elemzés"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr ""
+msgstr "Indexkép Létrehozása"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
-msgstr ""
+msgstr "Ezt a műveletet nem lehet fagyökér nélkül végrehajtani."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
+"Nem sikerült a jelenet mentése. Valószínű, hogy a függőségei (példányok vagy "
+"öröklések) nem voltak kielégíthetők."
#: editor/editor_node.cpp
msgid "Failed to load resource."
-msgstr ""
+msgstr "Nem sikerült betölteni az erőforrást."
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
-msgstr ""
+msgstr "Nem lehet betölteni a MeshLibrary-t összeolvasztásra!"
#: editor/editor_node.cpp
msgid "Error saving MeshLibrary!"
-msgstr ""
+msgstr "Hiba MeshLibrary mentésekor!"
#: editor/editor_node.cpp
msgid "Can't load TileSet for merging!"
-msgstr ""
+msgstr "Nem lehet betölteni a TileSet-et összeolvasztásra!"
#: editor/editor_node.cpp
msgid "Error saving TileSet!"
-msgstr ""
+msgstr "Hiba TileSet mentésekor!"
#: editor/editor_node.cpp
msgid "Error trying to save layout!"
-msgstr ""
+msgstr "Hiba történt az elrendezés mentésekor!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr ""
+msgstr "Alapértelmezett szerkesztő elrendezés felülírva."
#: editor/editor_node.cpp
msgid "Layout name not found!"
-msgstr ""
+msgstr "Elrendezés neve nem található!"
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
msgstr ""
+"Az alapértelmezett elrendezés vissza lett állítva az alap beállításokra."
#: editor/editor_node.cpp
msgid ""
@@ -1502,18 +1509,28 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
+"Ez az erőforrás egy olyan jelenethez tartozik, ami be lett importálva, így "
+"nem szerkeszthető.\n"
+"Olvassa el a jelenetek importálásáról szóló megfelelő dokumentációt, hogy "
+"jobban megértse ezt a munkafolyamatot."
#: editor/editor_node.cpp
msgid ""
"This resource belongs to a scene that was instanced or inherited.\n"
"Changes to it will not be kept when saving the current scene."
msgstr ""
+"Ez az erőforrás egy olyan jelenethez tartozik, amit példányosítottak, vagy "
+"amit örökölt a jelenet.\n"
+"A rajta végzett módosítások nem lesznek megtartva a jelenlegi jelenet "
+"elmentésekor."
#: editor/editor_node.cpp
msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
+"Ez azt erőforrást importálta, így ez nem szerkeszthető. Módosítsa a "
+"beállításait az import panelen, és importálja újból."
#: editor/editor_node.cpp
msgid ""
@@ -1522,6 +1539,11 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
+"Ezt a jelenetet importálta, így a rajta végzett módosítások nem lesznek "
+"megtartva.\n"
+"Változtatásokat végezhet rajta, ha példányosítja, vagy leszármaztatja.\n"
+"Olvassa el a jelenetek importálásáról szóló megfelelő dokumentációt, hogy "
+"jobban megértse ezt a munkafolyamatot."
#: editor/editor_node.cpp
msgid ""
@@ -1529,14 +1551,18 @@ msgid ""
"Please read the documentation relevant to debugging to better understand "
"this workflow."
msgstr ""
+"Ez egy távoli objektum, így a rajta végzett módosítások nem lesznek "
+"megtartva.\n"
+"Olvassa el a hibakezelésről szóló megfelelő dokumentációt, hogy jobban "
+"megértse ezt a munkafolyamatot."
#: editor/editor_node.cpp
msgid "Expand all properties"
-msgstr ""
+msgstr "Összes tulajdonság kibontása"
#: editor/editor_node.cpp
msgid "Collapse all properties"
-msgstr ""
+msgstr "Összes tulajdonság összecsukása"
#: editor/editor_node.cpp
msgid "Copy Params"
@@ -1544,11 +1570,11 @@ msgstr "Paraméterek másolása"
#: editor/editor_node.cpp
msgid "Paste Params"
-msgstr ""
+msgstr "Paraméterek Beillesztése"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
-msgstr ""
+msgstr "Erőforrás Beillesztése"
#: editor/editor_node.cpp
msgid "Copy Resource"
@@ -1556,19 +1582,19 @@ msgstr "Forrás másolása"
#: editor/editor_node.cpp
msgid "Make Built-In"
-msgstr ""
+msgstr "Integrálás"
#: editor/editor_node.cpp
msgid "Make Sub-Resources Unique"
-msgstr ""
+msgstr "Tegye Az Al-Erőforrásokat Egyedivé"
#: editor/editor_node.cpp
msgid "Open in Help"
-msgstr ""
+msgstr "Megnyitás Súgóban"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "Nincs meghatározva jelenet a futtatáshoz."
#: editor/editor_node.cpp
msgid ""
@@ -1576,6 +1602,9 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"Nincs meghatározva főjelenet, kiválaszt most egyet?\n"
+"Ezt megváltoztathatja később a \"Projekt Beállításokban\" az \"Alkalmazás\" "
+"kategóriában."
#: editor/editor_node.cpp
msgid ""
@@ -1583,6 +1612,10 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"A kiválasztott '%s' jelenet nem létezik, kiválaszt most egy érvényes "
+"jelenetet?\n"
+"Ezt megváltoztathatja később a \"Projekt Beállításokban\" az \"Alkalmazás\" "
+"kategóriában."
#: editor/editor_node.cpp
msgid ""
@@ -1590,343 +1623,369 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"A kiválasztott '%s' jelenet nem egy jelenetfájl, kiválaszt most egy érvényes "
+"jelenetet?\n"
+"Ezt megváltoztathatja később a \"Projekt Beállításokban\" az \"Alkalmazás\" "
+"kategóriában."
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
msgstr ""
+"A jelenlegi jelenet soha nem volt még mentve, mentse el a futtatás előtt."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr ""
+msgstr "Az alprocesszt nem lehetett elindítani!"
#: editor/editor_node.cpp
msgid "Open Scene"
-msgstr ""
+msgstr "Jelenet Megnyitása"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "Alap Jelenet Megnyitása"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr ""
+msgstr "Jelenet Gyors Megnyitása.."
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr ""
+msgstr "Script Gyors Megnyitása.."
#: editor/editor_node.cpp
msgid "Save & Close"
-msgstr ""
+msgstr "Mentés és Bezárás"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Bezárás előtt menti a '%s'-n végzett módosításokat?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr ""
+msgstr "Jelenet Mentése Másként.."
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "Nem"
#: editor/editor_node.cpp
msgid "Yes"
-msgstr ""
+msgstr "Igen"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "Ez a jelenet soha nem volt mentve. Menti futtatás előtt?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "Ezt a műveletet nem lehet végrehajtani jelenet nélkül."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "Mesh Könyvtár Exportálása"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
-msgstr ""
+msgstr "Ezt a műveletet nem lehet végrehajtani gyökér node nélkül."
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr ""
+msgstr "Tile Set Exportálása"
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
-msgstr ""
+msgstr "Ezt a műveletet nem lehet végrehajtani egy kiválaszott node nélkül."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr ""
+msgstr "Még nem mentette az aktuális jelenetet. Megnyitja mindenképp?"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr ""
+msgstr "Nem lehet újratölteni egy olyan jelenetet, amit soha nem mentett el."
#: editor/editor_node.cpp
msgid "Revert"
-msgstr ""
+msgstr "Visszaállítás"
#: editor/editor_node.cpp
msgid "This action cannot be undone. Revert anyway?"
-msgstr ""
+msgstr "Ez a művelet nem vonható vissza. Visszaállítja mindenképp?"
#: editor/editor_node.cpp
msgid "Quick Run Scene.."
-msgstr ""
+msgstr "Jelenet Gyors Futtatása.."
#: editor/editor_node.cpp
msgid "Quit"
-msgstr ""
+msgstr "Kilépés"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr ""
+msgstr "Kilépés a szerkesztőből?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr ""
+msgstr "Megnyitja a Projektkezelőt?"
#: editor/editor_node.cpp
msgid "Save & Quit"
-msgstr ""
+msgstr "Mentés és Kilépés"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
msgstr ""
+"Elmenti a következő jelenet(ek)en végzett változtatásokat kilépés előtt?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Elmenti a következő jelenet(ek)en végzett változtatásokat a Projektkezelő "
+"megnyitása előtt?"
#: editor/editor_node.cpp
msgid ""
"This option is deprecated. Situations where refresh must be forced are now "
"considered a bug. Please report."
msgstr ""
+"Ez a lehetőség elavult. Az olyan helyzeteket, ahol ki kell kényszeríteni egy "
+"frissítést, már hibának vesszük. Kérjük, jelentse a helyzetet."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
-msgstr ""
+msgstr "Válasszon egy Fő Jelenetet"
#: editor/editor_node.cpp
msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
+"Nem sikerült az addon plugin engedélyezése itt: '%s' a konfiguráció elemzése "
+"megbukott."
#: editor/editor_node.cpp
msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Nem található script mező az addon pluginnak a következő helyen: 'res://"
+"addons/%s'."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
-msgstr ""
+msgstr "Nem sikerült az addon script betöltése a következő útvonalról: '%s'."
#: editor/editor_node.cpp
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
+"Nem sikerült az addon script betöltése a következő útvonalról: '%s' Az "
+"alaptípus nem EditorPlugin."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
+"Nem sikerült az addon script betöltése a következő útvonalról: '%s' A script "
+"nem eszközmódban van."
#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
+"A(z) '%s' jelenet automatikusan be lett importálva, ezért nem módosítható.\n"
+"Ahhoz, hogy változtatásokat végezhessen rajta, egy új, azt öröklő jelenetet "
+"hozhat létre."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
-msgstr ""
+msgstr "Hoppá"
#: editor/editor_node.cpp
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 ""
+"Hiba történt a jelenet betöltésekor, benne kell, hogy legyen a projekt "
+"útvonalában. Használja az 'import' lehetőséget a jelenet megnyitására, majd "
+"mentse el a projekt útvonalán belülre."
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
-msgstr ""
+msgstr "A(z) '%s' jelenetnek tört függőségei vannak:"
#: editor/editor_node.cpp
msgid "Clear Recent Scenes"
-msgstr ""
+msgstr "Legutóbbi Jelenetek Törlése"
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "Elrendezés Mentése"
#: editor/editor_node.cpp
msgid "Delete Layout"
-msgstr ""
+msgstr "Elrendezés Törlése"
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
msgid "Default"
-msgstr ""
+msgstr "Alapértelmezett"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr ""
+msgstr "Jelenet Fül Váltása"
#: editor/editor_node.cpp
msgid "%d more files or folders"
-msgstr ""
+msgstr "%d további fájl vagy mappa"
#: editor/editor_node.cpp
msgid "%d more folders"
-msgstr ""
+msgstr "%d további mappa"
#: editor/editor_node.cpp
msgid "%d more files"
-msgstr ""
+msgstr "%d további fájl"
#: editor/editor_node.cpp
msgid "Dock Position"
-msgstr ""
+msgstr "Dokk Pozíció"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Zavarmentes Mód"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
-msgstr ""
+msgstr "Zavarmentes mód váltása."
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr ""
+msgstr "Hozzáad egy új jelenetet."
#: editor/editor_node.cpp
msgid "Scene"
-msgstr ""
+msgstr "Jelenet"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr ""
+msgstr "Ugrás az előzőleg megnyitott jelenetre."
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr ""
+msgstr "Következő fül"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr ""
+msgstr "Előző fül"
#: editor/editor_node.cpp
msgid "Filter Files.."
-msgstr ""
+msgstr "Fájlok Szűrése.."
#: editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr ""
+msgstr "Műveletek a jelenet fájlokkal."
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr ""
+msgstr "Új Jelenet"
#: editor/editor_node.cpp
msgid "New Inherited Scene.."
-msgstr ""
+msgstr "Új Örökölt Jelenet.."
#: editor/editor_node.cpp
msgid "Open Scene.."
-msgstr ""
+msgstr "Jelenet Megnyitása.."
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr ""
+msgstr "Jelenet Mentése"
#: editor/editor_node.cpp
msgid "Save all Scenes"
-msgstr ""
+msgstr "Minden Jelenet Mentése"
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr ""
+msgstr "Jelenet Bezárása"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
-msgstr ""
+msgstr "Legutóbbi Megnyitása"
#: editor/editor_node.cpp
msgid "Convert To.."
-msgstr ""
+msgstr "Ãtkonvertálás.."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr ""
+msgstr "MeshLibrary-ra.."
#: editor/editor_node.cpp
msgid "TileSet.."
-msgstr ""
+msgstr "TileSet-re.."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Undo"
-msgstr ""
+msgstr "Visszavonás"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp
msgid "Redo"
-msgstr ""
+msgstr "Mégis"
#: editor/editor_node.cpp
msgid "Revert Scene"
-msgstr ""
+msgstr "Jelenet Visszaállítása"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "Egyéb projekt- vagy jelenet-szintű eszközök."
#: editor/editor_node.cpp
msgid "Project"
-msgstr ""
+msgstr "Projekt"
#: editor/editor_node.cpp
msgid "Project Settings"
-msgstr ""
+msgstr "Projekt Beállítások"
#: editor/editor_node.cpp
msgid "Run Script"
-msgstr ""
+msgstr "Script Futtatása"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "Exportálás"
#: editor/editor_node.cpp
msgid "Tools"
-msgstr ""
+msgstr "Eszközök"
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr ""
+msgstr "Kilépés a Projektlistába"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Debug"
-msgstr ""
+msgstr "Hibakeresés"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr ""
+msgstr "Indítás Távoli Teszteléssel"
#: editor/editor_node.cpp
msgid ""
"When exporting or deploying, the resulting executable will attempt to "
"connect to the IP of this computer in order to be debugged."
msgstr ""
+"Exportáláskor vagy telepítéskor az így kapott futtatható program megpróbál "
+"ennek a számítógépnek az IP-jéhez csatlakozni távoli hibakeresés érdekében."
#: editor/editor_node.cpp
msgid "Small Deploy with Network FS"
-msgstr ""
+msgstr "Kis Telepítés Hálózati FR-rel"
#: editor/editor_node.cpp
msgid ""
@@ -1937,30 +1996,40 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
+"Ha ez az opció engedélyezve van, akkor az exportálás vagy a telepítés egy "
+"minimális méretű futtatható programot hoz létre.\n"
+"A fájlrendszert magát a projektből a szerkesztő szolgáltatja majd a "
+"hálózaton keresztül.\n"
+"Androidon a telepítés gyorsabb teljesítmény érdekében kihasználja az USB "
+"kábelt. Ez a lehetőség felgyorsítja a nagy lábnyomú játékok tesztelését."
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
-msgstr ""
+msgstr "Látható Ütközési Alakzatok"
#: editor/editor_node.cpp
msgid ""
"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
"running game if this option is turned on."
msgstr ""
+"Az ütközési alakzatok és a fénysugárkövető node-ok (mind 2D-hez és 3D-hez) "
+"láthatóak lesznek a játék futásakor, ha ez az opció be van kapcsolva."
#: editor/editor_node.cpp
msgid "Visible Navigation"
-msgstr ""
+msgstr "Látható Navigáció"
#: editor/editor_node.cpp
msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
msgstr ""
+"A navigációs hálók és sokszögek láthatóak lesznek a játék futásakor, ha ez "
+"az opció be van kapcsolva."
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "Jelenet Változtatások Szinkronizálása"
#: editor/editor_node.cpp
msgid ""
@@ -1969,10 +2038,14 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Ha ez a beállítás be van kapcsolva, bármilyen változtatás a jeleneten a "
+"szerkesztőben le lesz másolva a futó játékba.\n"
+"Ha egy távoli eszközön használja, sokkal hatékonyabb a hálózati "
+"fájlrendszerrel együtt."
#: editor/editor_node.cpp
msgid "Sync Script Changes"
-msgstr ""
+msgstr "Script Változtatások Szinkronizálása"
#: editor/editor_node.cpp
msgid ""
@@ -1981,231 +2054,242 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Ha ez a beállítás be van kapcsolva, bármilyen script, amit elment, újra "
+"betöltődik a futó játékba.\n"
+"Ha egy távoli eszközön használja, sokkal hatékonyabb a hálózati "
+"fájlrendszerrel együtt."
#: editor/editor_node.cpp
msgid "Editor"
-msgstr ""
+msgstr "Szerkesztő"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
-msgstr ""
+msgstr "Szerkesztő Beállítások"
#: editor/editor_node.cpp
msgid "Editor Layout"
-msgstr ""
+msgstr "Szerkesztő Elrendezés"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr ""
+msgstr "Teljes Képernyő"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
-msgstr ""
+msgstr "Export Sablonok Kezelése"
#: editor/editor_node.cpp
msgid "Help"
-msgstr ""
+msgstr "Súgó"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
-msgstr ""
+msgstr "Osztályok"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Keresés"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
-msgstr ""
+msgstr "Online Dokumentáció"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Kérdések és Válaszok"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "Problémakövető"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
msgid "Community"
-msgstr ""
+msgstr "Közösség"
#: editor/editor_node.cpp
msgid "About"
-msgstr ""
+msgstr "Névjegy"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr ""
+msgstr "Projekt futtatása."
#: editor/editor_node.cpp
msgid "Play"
-msgstr ""
+msgstr "Játék"
#: editor/editor_node.cpp
msgid "Pause the scene"
-msgstr ""
+msgstr "Szünetelteti a jelenetet"
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr ""
+msgstr "Jelenet Szüneteltetése"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr ""
+msgstr "Leállítja a jelenetet."
#: editor/editor_node.cpp
msgid "Stop"
-msgstr ""
+msgstr "Leállítás"
#: editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr ""
+msgstr "Szerkesztett jelenet futtatása."
#: editor/editor_node.cpp
msgid "Play Scene"
-msgstr ""
+msgstr "Jelenet Futtatása"
#: editor/editor_node.cpp
msgid "Play custom scene"
-msgstr ""
+msgstr "Tetszőleges jelenet futtatása"
#: editor/editor_node.cpp
msgid "Play Custom Scene"
-msgstr ""
+msgstr "Tetszőleges Jelenet Futtatása"
#: editor/editor_node.cpp
msgid "Spins when the editor window repaints!"
-msgstr ""
+msgstr "Fordul egyet, amikor a szerkesztőablak újrarajzolódik!"
#: editor/editor_node.cpp
msgid "Update Always"
-msgstr ""
+msgstr "Frissítés Mindig"
#: editor/editor_node.cpp
msgid "Update Changes"
-msgstr ""
+msgstr "Változások Frissítése"
#: editor/editor_node.cpp
msgid "Disable Update Spinner"
-msgstr ""
+msgstr "Frissítési Forgó Kikapcsolása"
#: editor/editor_node.cpp
msgid "Inspector"
-msgstr ""
+msgstr "Megfigyelő"
#: editor/editor_node.cpp
msgid "Create a new resource in memory and edit it."
-msgstr ""
+msgstr "Új erőforrás létrehozása a memóriában, majd annak szerkesztése."
#: editor/editor_node.cpp
msgid "Load an existing resource from disk and edit it."
-msgstr ""
+msgstr "Meglévő erőforrás betöltése a lemezről, majd annak szerkesztése."
#: editor/editor_node.cpp
msgid "Save the currently edited resource."
-msgstr ""
+msgstr "A jelenleg szerkesztett erőforrás elmentése."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr ""
+msgstr "Mentés Másként.."
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
-msgstr ""
+msgstr "Ugrás az előzőleg módosított objektumra a történelemben."
#: editor/editor_node.cpp
msgid "Go to the next edited object in history."
-msgstr ""
+msgstr "Ugrás a következő módosított objektumra a történelemben."
#: editor/editor_node.cpp
msgid "History of recently edited objects."
-msgstr ""
+msgstr "A nemrég módosított objektumok történelme."
#: editor/editor_node.cpp
msgid "Object properties."
-msgstr ""
+msgstr "Objektumtulajdonságok."
#: editor/editor_node.cpp
msgid "Changes may be lost!"
-msgstr ""
+msgstr "Néhány változtatás elveszhet!"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "Importálás"
#: editor/editor_node.cpp
msgid "Node"
-msgstr ""
+msgstr "Node"
#: editor/editor_node.cpp
msgid "FileSystem"
-msgstr ""
+msgstr "Fájlrendszer"
#: editor/editor_node.cpp
msgid "Output"
-msgstr ""
+msgstr "Kimenet"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
+msgstr "Nincs Mentés"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
-msgstr ""
+msgstr "Sablonok Importálása ZIP Fájlból"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
-msgstr ""
+msgstr "Projekt Exportálása"
#: editor/editor_node.cpp
msgid "Export Library"
-msgstr ""
+msgstr "Könyvtár Exportálása"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr ""
+msgstr "Egyesítés Meglévővel"
#: editor/editor_node.cpp
msgid "Password:"
-msgstr ""
+msgstr "Jelszó:"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
-msgstr ""
+msgstr "Megnyit és Scriptet Futtat"
#: editor/editor_node.cpp
msgid "New Inherited"
-msgstr ""
+msgstr "Új Örökölt"
#: editor/editor_node.cpp
msgid "Load Errors"
-msgstr ""
+msgstr "Betöltési Hibák"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
-msgstr ""
+msgstr "Kiválaszt"
#: editor/editor_node.cpp
msgid "Open 2D Editor"
-msgstr ""
+msgstr "2D Szerkesztő Megnyitása"
#: editor/editor_node.cpp
msgid "Open 3D Editor"
-msgstr ""
+msgstr "3D Szerkesztő Megnyitása"
#: editor/editor_node.cpp
msgid "Open Script Editor"
-msgstr ""
+msgstr "Script Szerkesztő Megnyitása"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
-msgstr ""
+msgstr "Eszköz Könyvtár Megnyitása"
#: editor/editor_node.cpp
msgid "Open the next Editor"
-msgstr ""
+msgstr "Következő Szerkesztő Megnyitása"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
-msgstr ""
+msgstr "Előző Szerkesztő Megnyitása"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
@@ -2389,7 +2473,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2544,9 +2628,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2554,21 +2636,23 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Hiba betöltéskor:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Hiba betöltéskor:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:"
+msgstr "A Scene-t nem sikerült betölteni a hiányzó függőségek miatt:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -3206,6 +3290,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animáció másolása"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3371,6 +3460,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3671,19 +3761,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4054,7 +4147,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4443,14 +4536,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4527,6 +4622,10 @@ msgid "Copy Script Path"
msgstr "Útvonal másolása"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4958,83 +5057,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5049,6 +5148,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5122,15 +5225,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5405,10 +5504,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5434,14 +5541,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5579,6 +5689,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5679,6 +5793,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Mégse"
@@ -5786,9 +5924,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5800,6 +5936,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5840,14 +5984,27 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Létrehozás"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5864,10 +6021,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5913,6 +6066,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6039,11 +6196,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6421,10 +6573,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6509,8 +6657,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "Forrás másolása"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6800,7 +6949,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6809,6 +6958,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Póz másolása"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7155,10 +7309,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7504,23 +7698,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7535,6 +7733,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7603,7 +7808,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7662,6 +7867,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7707,8 +7919,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7773,8 +7985,8 @@ msgstr "(Más)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7806,5 +8018,27 @@ msgstr "Hiba a betűtípus betöltésekor."
msgid "Invalid font size."
msgstr "Érvénytelen betűtípus méret."
+#~ msgid "Next"
+#~ msgstr "Következő"
+
+#~ msgid "Not found!"
+#~ msgstr "Nincs Találat!"
+
+#, fuzzy
+#~ msgid "Replace By"
+#~ msgstr "Lecserél"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Pontos Egyezés"
+
+#~ msgid "Backwards"
+#~ msgstr "Visszafelé"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Figyelmeztetés Lecseréléskor"
+
+#~ msgid "Skip"
+#~ msgstr "Ãtlapoz"
+
#~ msgid "Move Add Key"
#~ msgstr "Hozzáadás kulcs mozgatása"
diff --git a/editor/translations/id.po b/editor/translations/id.po
index e739435ee9..ae7fd98ae2 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -207,8 +207,7 @@ msgstr "Buat track BARU %d dan masukkan tombol-tombol?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Buat"
@@ -386,14 +385,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Diganti kejadian (kejadian-kejadian) %d."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Ganti"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Ganti Semua"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Kasus Kecocokan"
@@ -402,49 +393,16 @@ msgid "Whole Words"
msgstr "Semua Kata"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Hanya yang Dipilih"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cari"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Cari"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Berikutnya"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Tidak ditemukan!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Ganti dengan"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Case Sensitive"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Ke belakang"
+msgid "Replace"
+msgstr "Ganti"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Prompt On Replace"
-msgstr "Cepat Pada Penggantian"
+msgid "Replace All"
+msgstr "Ganti Semua"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Lalui"
+msgid "Selection Only"
+msgstr "Hanya yang Dipilih"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -565,6 +523,16 @@ msgstr "Sinyal-sinyal"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Ubah Tipe Nilai Array"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Ubah"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Buat Baru"
@@ -679,7 +647,8 @@ msgstr ""
"Hapus saja? (tidak bisa dibatalkan/undo)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Tidak bisa dibuang:\n"
#: editor/dependency_editor.cpp
@@ -763,8 +732,9 @@ msgstr "Penemu Proyek"
msgid "Lead Developer"
msgstr "Pengembang Utama"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Manajer Proyek"
#: editor/editor_about.cpp
@@ -856,7 +826,7 @@ msgid "Success!"
msgstr "Sukses!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Pasang"
@@ -1177,7 +1147,8 @@ msgid "Packing"
msgstr "Mengemas"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "Template berkas tidak ditemukan:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1404,6 +1375,21 @@ msgstr "Deskripsi:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Online Dokumentasi"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Untuk saat ini tidak ada deskripsi metode ini. Tolong bantu kita dengan "
+"[color=$color][url=$url]kontribusi[/url][/color]!"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Properties"
msgstr "Properti Objek."
@@ -1441,6 +1427,10 @@ msgstr ""
msgid "Search Text"
msgstr "Mencari Teks"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Cari"
+
#: editor/editor_log.cpp
#, fuzzy
msgid "Output:"
@@ -1453,6 +1443,11 @@ msgstr " Keluaran:"
msgid "Clear"
msgstr "Bersihkan"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Luaran"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Error menyimpan resource!"
@@ -1461,8 +1456,8 @@ msgstr "Error menyimpan resource!"
msgid "Save Resource As.."
msgstr "Simpan Resource Sebagai.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "Aku tahu.."
@@ -1521,8 +1516,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Tindakan ini tidak dapat dibatalkan. Pulihkan saja?"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Tidak dapat menyimpan scene. Dependensi (instance) mungkin tidak terpenuhi."
@@ -2150,6 +2147,13 @@ msgstr "Bantuan"
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cari"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Online Dokumentasi"
@@ -2540,7 +2544,7 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "Gagal menyimpan atlas:"
#: editor/export_template_manager.cpp
@@ -2712,9 +2716,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2722,22 +2724,22 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "Error memuat:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Error saat memuat:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "Scene '%s' memiliki dependensi yang rusak:"
#: editor/filesystem_dock.cpp
@@ -3394,6 +3396,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animasi"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3566,6 +3573,7 @@ msgid "Bake Lightmaps"
msgstr "Ganti Radius Lampu"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3873,19 +3881,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4264,7 +4275,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4658,15 +4669,19 @@ msgstr ""
msgid "Paste"
msgstr "Tempel"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Resource"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
+#, fuzzy
+msgid "Close and save changes?"
+msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4743,6 +4758,11 @@ msgid "Copy Script Path"
msgstr "Salin Resource"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Tampilkan dalam Manajer Berkas"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5181,86 +5201,86 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Tampilan Bawah."
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Bawah"
+msgid "Animation Key Inserted."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Tampilan Atas."
+msgid "Objects Drawn"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Tampilan Belakang."
+#, fuzzy
+msgid "Material Changes"
+msgstr "Menyimpan perubahan-perubahan lokal.."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Belakang"
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Ubah"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Tampilan Depan."
+msgid "Surface Changes"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Depan"
+msgid "Draw Calls"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Tampilan Kiri."
+msgid "Vertices"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Kiri"
+msgid "FPS"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Tampilan Kanan."
+msgid "Top View."
+msgstr "Tampilan Atas."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Kanan"
+msgid "Bottom View."
+msgstr "Tampilan Bawah."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
+msgid "Bottom"
+msgstr "Bawah"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
+msgid "Left View."
+msgstr "Tampilan Kiri."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
+msgid "Left"
+msgstr "Kiri"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "Menyimpan perubahan-perubahan lokal.."
+msgid "Right View."
+msgstr "Tampilan Kanan."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Ubah"
+msgid "Right"
+msgstr "Kanan"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+msgid "Front View."
+msgstr "Tampilan Depan."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+msgid "Front"
+msgstr "Depan"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr ""
+msgid "Rear View."
+msgstr "Tampilan Belakang."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr ""
+msgid "Rear"
+msgstr "Belakang"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5274,6 +5294,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5353,17 +5377,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "Pratinjau:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Metode Publik:"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5642,10 +5661,18 @@ msgstr "Salin Resource"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5671,14 +5698,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5818,6 +5848,11 @@ msgstr ""
msgid "Color"
msgstr "Warna"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme"
+msgstr "Simpan Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5921,6 +5956,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Simpan sumber yang sedang diatur."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Batal"
@@ -6035,9 +6095,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -6049,6 +6107,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Tidak dapat membuat folder."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -6091,14 +6158,29 @@ msgid "Import Existing Project"
msgstr "Impor Projek yang Sudah Ada"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Impor"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Buat Projek Baru"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Buat"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Pasang"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nama Projek:"
@@ -6116,10 +6198,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6172,6 +6250,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Manajer Proyek"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Daftar Projek"
@@ -6300,11 +6382,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Ubah"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6700,10 +6777,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6789,7 +6862,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "Resource"
#: editor/scene_tree_dock.cpp
@@ -7098,7 +7171,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -7107,6 +7180,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Muat Galat"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7466,10 +7544,55 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Gagal memuat resource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Gagal memuat resource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Gagal memuat resource."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Buat Subskribsi"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Proyek"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7849,27 +7972,32 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "Tidak dapat membuat folder."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "Tidak dapat membuat folder."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Memuat Ekspor Template-template."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Tidak dapat membuat folder."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "Tidak dapat membuat folder."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "Tidak dapat membuat folder."
#: scene/2d/animated_sprite.cpp
@@ -7889,6 +8017,13 @@ msgstr ""
"scene-scene yang diacu). Yang diciptakan pertama akan bekerja, sedangkan "
"sisanya akan diabaikan."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7980,7 +8115,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8042,6 +8177,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8101,8 +8243,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8180,8 +8322,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Lingkungan Baku yang ditetapkan di Pengaturan Proyek (Rendering -> Viewport -"
"> Lingkungan Baku) tidak dapat dimuat"
@@ -8216,12 +8358,35 @@ msgstr "Error memuat font."
msgid "Invalid font size."
msgstr "Ukuran font tidak sah."
+#~ msgid "Next"
+#~ msgstr "Berikutnya"
+
+#~ msgid "Not found!"
+#~ msgstr "Tidak ditemukan!"
+
+#~ msgid "Replace By"
+#~ msgstr "Ganti dengan"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Case Sensitive"
+
+#~ msgid "Backwards"
+#~ msgstr "Ke belakang"
+
+#, fuzzy
+#~ msgid "Prompt On Replace"
+#~ msgstr "Cepat Pada Penggantian"
+
+#~ msgid "Skip"
+#~ msgstr "Lalui"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "Pratinjau:"
+
#~ msgid "Move Add Key"
#~ msgstr "Pindahkan Kunci Tambah"
-#~ msgid "Create Subscription"
-#~ msgstr "Buat Subskribsi"
-
#~ msgid "List:"
#~ msgstr "Daftar:"
@@ -8344,9 +8509,6 @@ msgstr "Ukuran font tidak sah."
#~ msgid "Ctrl+"
#~ msgstr "Ctrl+"
-#~ msgid "Close scene? (Unsaved changes will be lost)"
-#~ msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)"
-
#~ msgid ""
#~ "Open Project Manager? \n"
#~ "(Unsaved changes will be lost)"
diff --git a/editor/translations/is.po b/editor/translations/is.po
index 33e2f9ad3f..3cccf15a6c 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -198,8 +198,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -376,14 +375,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -392,47 +383,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -550,6 +509,15 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
msgstr ""
@@ -655,7 +623,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -738,8 +706,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -824,7 +792,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1131,7 +1099,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1343,6 +1311,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1374,6 +1353,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1385,6 +1368,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1393,8 +1380,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1448,7 +1435,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2001,6 +1989,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2380,7 +2375,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2534,9 +2529,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2544,19 +2537,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3194,6 +3187,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3359,6 +3356,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3659,19 +3657,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4042,7 +4043,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4431,14 +4432,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4514,6 +4517,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4945,83 +4952,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5036,6 +5043,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5109,15 +5120,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5392,10 +5399,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5421,14 +5436,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5566,6 +5584,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5666,6 +5688,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5773,9 +5819,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5787,6 +5831,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5827,14 +5879,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5851,10 +5915,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5900,6 +5960,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6026,11 +6090,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6408,10 +6467,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6496,7 +6551,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6787,7 +6842,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6796,6 +6851,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7141,10 +7200,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7490,23 +7589,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7521,6 +7624,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7589,7 +7699,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7648,6 +7758,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7693,8 +7810,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7759,8 +7876,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 974e667dfb..86700a094b 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -208,8 +208,7 @@ msgstr "Creare %d NUOVE tracce e inserire key?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Crea"
@@ -387,14 +386,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Rimpiazzate %d occorrenze."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Rimpiazza"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Rimpiazza Tutti"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Controlla Maiuscole"
@@ -403,48 +394,16 @@ msgid "Whole Words"
msgstr "Parole Intere"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Solo Selezione"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cerca"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Trova"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Successivo"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Non trovato!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Rimpiazza con"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Case Sensitive"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "All'indietro"
+msgid "Replace"
+msgstr "Rimpiazza"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Richiedi Per Sostituire"
+msgid "Replace All"
+msgstr "Rimpiazza Tutti"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Salta"
+msgid "Selection Only"
+msgstr "Solo Selezione"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -565,6 +524,16 @@ msgstr "Segnali"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Cambia Tipo"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Cambia"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Crea Nuovo"
@@ -677,7 +646,8 @@ msgstr ""
"Rimuoverli comunque? (no undo)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Impossibile rimouvere:\n"
#: editor/dependency_editor.cpp
@@ -760,8 +730,9 @@ msgstr "Fondatori Progetto"
msgid "Lead Developer"
msgstr "Lead Developer"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Gestione Progetti"
#: editor/editor_about.cpp
@@ -850,7 +821,7 @@ msgid "Success!"
msgstr "Successo!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installa"
@@ -1165,7 +1136,8 @@ msgid "Packing"
msgstr "Impacchettando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "File template non trovato:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1377,6 +1349,21 @@ msgid "Description"
msgstr "Descrizione"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Tutorials"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Al momento una descrizione per questo metodo non esiste. Aiutaci [color="
+"$color][url=$url]aggiungendone una[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Proprietà"
@@ -1412,6 +1399,10 @@ msgstr ""
msgid "Search Text"
msgstr "Cerca Testo"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Trova"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Output:"
@@ -1423,6 +1414,11 @@ msgstr "Output:"
msgid "Clear"
msgstr "Rimuovi"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Output"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Errore salvando la Risorsa!"
@@ -1431,8 +1427,8 @@ msgstr "Errore salvando la Risorsa!"
msgid "Save Resource As.."
msgstr "Salva Risorsa Come.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Capisco.."
@@ -1486,8 +1482,10 @@ msgstr ""
"Questa operazione non può essere eseguita senza una radice dell'albero."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Impossibile salvare la scena. Probabili dipendenze (instanze) non sono state "
"soddisfatte."
@@ -2105,6 +2103,13 @@ msgstr "Aiuto"
msgid "Classes"
msgstr "Classi"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cerca"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentazione Online"
@@ -2492,7 +2497,8 @@ 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:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Errore di creazione del percorso per le template:\n"
#: editor/export_template_manager.cpp
@@ -2654,9 +2660,8 @@ msgid "View items as a list"
msgstr "Visualizza elementi come una lista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"Stato: Importazione file fallita. Si prega di sistemare il file e "
@@ -2667,20 +2672,23 @@ msgid "Cannot move/rename resources root."
msgstr "Impossibile spostare/rinominare risorse root."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+#, fuzzy
+msgid "Cannot move a folder into itself."
msgstr "Impossibile spostare una cartella in se stessa.\n"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+#, fuzzy
+msgid "Error moving:"
msgstr "Errore spostamento:\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Errore in caricamento:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+#, fuzzy
+msgid "Unable to update dependencies:"
msgstr "Impossibile aggiornare le dipendenze:\n"
#: editor/filesystem_dock.cpp
@@ -3332,6 +3340,11 @@ msgstr "Modifica Filtri Nodi"
msgid "Filters.."
msgstr "Filtri.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animazione"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Gratuito"
@@ -3498,6 +3511,7 @@ msgid "Bake Lightmaps"
msgstr "Trasferisci a Lightmap:"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Anteprima"
@@ -3814,6 +3828,14 @@ msgstr "Aggiungi %s"
msgid "Adding %s..."
msgstr "Aggiungendo %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3825,11 +3847,6 @@ msgid "Error instancing scene from %s"
msgstr "Errore istanziamento scena da %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Questa operazione richiede un solo nodo selezionato."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Cambia tipo di default"
@@ -4216,7 +4233,7 @@ msgstr "Bake!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
#, fuzzy
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr "Crea Mesh di Navigazione"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4618,15 +4635,18 @@ msgstr "Carica Risorsa"
msgid "Paste"
msgstr "Incolla"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Percorso Risosa"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Elimina File recenti"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
"Chiudere e salvare i cambiamenti?\n"
"\""
@@ -4707,6 +4727,11 @@ msgid "Copy Script Path"
msgstr "Copia Percorso"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Mostra nel File System"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr "Cronologia Succ."
@@ -5151,84 +5176,84 @@ msgid "Rotating %s degrees."
msgstr "Ruotando di %s gradi."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vista dal Basso."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Keying disabilitato (nessun key inserito)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Basso"
+msgid "Animation Key Inserted."
+msgstr "Key d'Animazione Inserito."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vista dall'Alto."
+msgid "Objects Drawn"
+msgstr "Oggetti Disegnati"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vista dal Retro."
+msgid "Material Changes"
+msgstr "Cambiamenti dei Materiali"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Retro"
+msgid "Shader Changes"
+msgstr "Cambiamenti delle Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vista Frontale."
+msgid "Surface Changes"
+msgstr "Cambiamenti delle Superfici"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Fronte"
+msgid "Draw Calls"
+msgstr "Draw Calls"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vista Sinistra."
+msgid "Vertices"
+msgstr "Vertici"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Sinistra"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vista Destra."
+msgid "Top View."
+msgstr "Vista dall'Alto."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Destra"
+msgid "Bottom View."
+msgstr "Vista dal Basso."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Keying disabilitato (nessun key inserito)."
+msgid "Bottom"
+msgstr "Basso"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Key d'Animazione Inserito."
+msgid "Left View."
+msgstr "Vista Sinistra."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Oggetti Disegnati"
+msgid "Left"
+msgstr "Sinistra"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Cambiamenti dei Materiali"
+msgid "Right View."
+msgstr "Vista Destra."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Cambiamenti delle Shader"
+msgid "Right"
+msgstr "Destra"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Cambiamenti delle Superfici"
+msgid "Front View."
+msgstr "Vista Frontale."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Draw Calls"
+msgid "Front"
+msgstr "Fronte"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vertici"
+msgid "Rear View."
+msgstr "Vista dal Retro."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Retro"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5242,6 +5267,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Nessun genitore del quale istanziare un figlio."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Questa operazione richiede un solo nodo selezionato."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Mostra Normale"
@@ -5318,17 +5347,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificatore Velocità Vista Libera"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "Anteprima"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Finestra di XForm"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "Modalità di Selezione"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5609,10 +5633,20 @@ msgstr "Rimuovi nodo(i)"
msgid "Move (After)"
msgstr "Sposta a Sinistra"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Impila Frame"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Anteprima StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Stile"
+
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Set Region Rect"
@@ -5639,14 +5673,17 @@ msgid "Auto Slice"
msgstr "Auto Divisione"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Offset:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Step:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separazione:"
@@ -5787,6 +5824,10 @@ msgstr "Font"
msgid "Color"
msgstr "Colore"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5892,6 +5933,32 @@ msgstr "Unisci da Scena"
msgid "Error"
msgstr "Errore"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "Auto Divisione"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Salva la risorsa in modifica."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Annulla"
@@ -6010,12 +6077,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "Si prega di esportare al di fuori della cartella del progetto!"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Il tuo progetto verrà creato in una cartella già esistente (forse vorresti "
-"creare una nuova cartella?)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "Si prega di esportare al di fuori della cartella del progetto!"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6027,6 +6091,15 @@ msgid "Imported Project"
msgstr "Progetto Importato"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Impossibile creare cartella."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Sarebbe una buona idea dare un nome al tuo progetto."
@@ -6071,14 +6144,29 @@ msgid "Import Existing Project"
msgstr "Importa Progetto Esistente"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importa e Apri"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Crea Nuovo Progetto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Crea Emitter"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Installa Progetto:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installa"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nome Progetto:"
@@ -6096,10 +6184,6 @@ msgid "Browse"
msgstr "Sfoglia"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Questo è un BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Progetto Senza Nome"
@@ -6157,6 +6241,10 @@ msgid ""
msgstr "Stai per esaminare %s cartelle per progetti Godot esistenti. Confermi?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestione Progetti"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista Progetti"
@@ -6288,11 +6376,6 @@ msgid "Button 9"
msgstr "Pulsante 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Cambia"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Indice Asse Joypad:"
@@ -6687,10 +6770,6 @@ msgid "Error loading scene from %s"
msgstr "Errore caricamento scena da %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6779,7 +6858,8 @@ msgid "Error duplicating scene to save it."
msgstr "Errore duplicando la scena per salvarla."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+#, fuzzy
+msgid "Sub-Resources"
msgstr "Sub-Risorse:"
#: editor/scene_tree_dock.cpp
@@ -7090,7 +7170,7 @@ msgstr "Funzione:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Scegli uno o più oggetti dalla lista per mostrare il grafico."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Errori"
@@ -7099,6 +7179,11 @@ msgid "Child Process Connected"
msgstr "Processo Figlio Connesso"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Carica Errori"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Ispeziona Istanza Precedente"
@@ -7474,11 +7559,59 @@ msgstr "Impostazioni Snap"
msgid "Pick Distance:"
msgstr "Istanza:"
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Creazione Octree Texture"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Impossiblile creare outline!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Caricamento della risorsa fallito."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "Fatto!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Caricamento della risorsa fallito."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Crea Outline"
+
#: modules/mono/editor/mono_bottom_panel.cpp
#, fuzzy
msgid "Builds"
msgstr "Costruzioni"
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Progetto"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "Avvertimento"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7858,26 +7991,33 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Esegui HTML esportato all'interno del browser di sistema di default."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, fuzzy
+msgid "Could not write file:"
msgstr "Impossibile scrivere file:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+#, fuzzy
+msgid "Could not open template for export:"
msgstr "Impossibile aprire template per l'esportazione:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Installa Template di Esportazione"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Impossibile leggere file:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
msgstr "Impossibile leggere file:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr "Impossibile leggere file:\n"
#: scene/2d/animated_sprite.cpp
@@ -7897,6 +8037,13 @@ msgstr ""
"scene istanziate). Il primo creato funzionerà, mentre i restanti saranno "
"ignorati."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7993,7 +8140,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
#, fuzzy
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8066,6 +8213,13 @@ msgstr "Finalizzazione del Plot"
msgid "Lighting Meshes: "
msgstr "Bliting Immagini"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8125,8 +8279,8 @@ msgstr "Nulla é visibile perché le mesh non sono state assegnate ai draw pass.
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"I cambiamenti di dimensione a RigidBody (nel personaggio o nelle modalità "
@@ -8209,9 +8363,10 @@ msgid "(Other)"
msgstr "(Altro)"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Impossobile caricare Ambiente di Default come specificato nelle Impostazioni "
"Progetto (Rendering -> Vista -> Ambiente di Default)."
@@ -8244,6 +8399,41 @@ msgstr "Errore caricamento font."
msgid "Invalid font size."
msgstr "Dimensione font Invalida."
+#~ msgid "Next"
+#~ msgstr "Successivo"
+
+#~ msgid "Not found!"
+#~ msgstr "Non trovato!"
+
+#~ msgid "Replace By"
+#~ msgstr "Rimpiazza con"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Case Sensitive"
+
+#~ msgid "Backwards"
+#~ msgstr "All'indietro"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Richiedi Per Sostituire"
+
+#~ msgid "Skip"
+#~ msgstr "Salta"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Il tuo progetto verrà creato in una cartella già esistente (forse "
+#~ "vorresti creare una nuova cartella?)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Questo è un BINGO!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "Anteprima"
+
#~ msgid "Move Add Key"
#~ msgstr "Sposta Aggiunta Key"
@@ -8336,9 +8526,6 @@ msgstr "Dimensione font Invalida."
#~ msgid "' parsing of config failed."
#~ msgstr "' fallita lettura della configurazione."
-#~ msgid "Theme"
-#~ msgstr "Tema"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Lista Metodi Per '%s':"
@@ -8611,9 +8798,6 @@ msgstr "Dimensione font Invalida."
#~ msgid "Import Anyway"
#~ msgstr "Importa ComunqueImporta Comunque"
-#~ msgid "Import & Open"
-#~ msgstr "Importa e Apri"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "La scena modificata non è stata salvata, aprire la scena importata "
@@ -8869,9 +9053,6 @@ msgstr "Dimensione font Invalida."
#~ msgid "Stereo"
#~ msgstr "Stereo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Pitch"
@@ -9043,9 +9224,6 @@ msgstr "Dimensione font Invalida."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Avverti quando una risorsa esterna è stata modificata."
-#~ msgid "Tutorials"
-#~ msgstr "Tutorials"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Apri https://godotengine.org alla sezione tutorial."
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 66b9115692..061a3909e9 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -17,7 +17,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
+"PO-Revision-Date: 2018-01-06 13:19+0000\n"
"Last-Translator: NoahDigital <taku_58@hotmail.com>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -217,8 +217,7 @@ msgstr "æ–°ã—ã„ %d トラックを作æˆã—ã€ã‚­ãƒ¼ã‚’挿入ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "作æˆ"
@@ -381,97 +380,40 @@ msgid "Change Array Value"
msgstr "é…列ã®å€¤ã‚’変更"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Go to Line"
msgstr "行ã«ç§»å‹•"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Line Number:"
msgstr "行番å·:"
#: editor/code_editor.cpp
-#, fuzzy
msgid "No Matches"
msgstr "一致ãªã—"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replaced %d occurrence(s)."
msgstr "%d 箇所を置æ›ã—ã¾ã—ãŸã€‚"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Replace"
-msgstr "ç½®æ›"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Replace All"
-msgstr "ã™ã¹ã¦ç½®æ›"
-
-#: editor/code_editor.cpp
-#, fuzzy
msgid "Match Case"
msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別ã™ã‚‹"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Whole Words"
msgstr "å˜èªžå…¨ä½“"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Selection Only"
-msgstr "é¸æŠžç¯„å›²ã®ã¿"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-#, fuzzy
-msgid "Search"
-msgstr "検索"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-#, fuzzy
-msgid "Find"
-msgstr "検索"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Next"
-msgstr "次"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Not found!"
-msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "ã§ç½®æ›ã™ã‚‹"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Case Sensitive"
-msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Backwards"
-msgstr "後方"
+msgid "Replace"
+msgstr "ç½®æ›"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Prompt On Replace"
-msgstr "ç½®æ›æ™‚ã«ç¢ºèª"
+msgid "Replace All"
+msgstr "ã™ã¹ã¦ç½®æ›"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Skip"
-msgstr "スキップ"
+msgid "Selection Only"
+msgstr "é¸æŠžç¯„å›²ã®ã¿"
#: editor/code_editor.cpp
#, fuzzy
@@ -611,8 +553,19 @@ msgstr "シグナル"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "型(type)を変更"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "変更"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
-msgstr "æ–°è¦ã«ç”Ÿæˆ"
+msgstr "%s ã‚’æ–°è¦ä½œæˆ"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -649,7 +602,7 @@ msgstr "記述:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid "Search Replacement For:"
-msgstr "検索ã—ã¦ç½®æ›"
+msgstr "検索ã—ã¦ç½®æ›:"
#: editor/dependency_editor.cpp
#, fuzzy
@@ -738,7 +691,7 @@ msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr "解決ã§ãã¾ã›ã‚“."
#: editor/dependency_editor.cpp
@@ -806,12 +759,12 @@ msgstr "消去"
#: editor/dictionary_property_edit.cpp
#, fuzzy
msgid "Change Dictionary Key"
-msgstr "アニメーションã®åå‰ã‚’変更:"
+msgstr "ディクショナリ キーã®å¤‰æ›´"
#: editor/dictionary_property_edit.cpp
#, fuzzy
msgid "Change Dictionary Value"
-msgstr "é…列ã®å€¤ã‚’変更"
+msgstr "ディクショナリ 値ã®å¤‰æ›´"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
@@ -829,15 +782,16 @@ msgstr "Godotエンジンã«è²¢çŒ®ã—ãŸäººã€…"
#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
-msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+msgstr "プロジェクト創業者"
#: editor/editor_about.cpp
#, fuzzy
msgid "Lead Developer"
msgstr "開発者"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/editor_about.cpp
@@ -937,7 +891,7 @@ msgid "Success!"
msgstr "æˆåŠŸï¼"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Install"
msgstr "インストール"
@@ -960,9 +914,8 @@ msgid "Rename Audio Bus"
msgstr "オーディオãƒã‚¹åを変更"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "オーディオãƒã‚¹ã‚’ソロã«åˆ‡ã‚Šæ›¿ãˆ"
+msgstr "オーディオãƒã‚¹ã®ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’変更"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -1029,12 +982,11 @@ msgstr "エフェクトを消去"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "オーディオ"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "ãƒã‚¹ã‚’追加ã™ã‚‹"
+msgstr "オーディオãƒã‚¹ã‚’追加"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
@@ -1282,7 +1234,7 @@ msgstr "パッキングã™ã‚‹"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
#, fuzzy
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1526,6 +1478,21 @@ msgstr "記述:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Online Tutorials:"
+msgstr "オンライン文書"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"ç¾åœ¨ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®èª¬æ˜Žã¯ã‚りã¾ã›ã‚“。[color=$color][url=$url]貢献[/url][/"
+"color]ã—ã¦ç§ãŸã¡ã‚’助ã‘ã¦ãã ã•ã„!"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Properties"
msgstr "プロパティ:"
@@ -1565,6 +1532,11 @@ msgstr ""
msgid "Search Text"
msgstr "テキストを探ã™"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Find"
+msgstr "検索"
+
#: editor/editor_log.cpp
#, fuzzy
msgid "Output:"
@@ -1577,6 +1549,11 @@ msgstr " 出力:"
msgid "Clear"
msgstr "削除"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "出力"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Error saving resource!"
@@ -1587,8 +1564,8 @@ msgstr "リソースä¿å­˜ã‚¨ãƒ©ãƒ¼!"
msgid "Save Resource As.."
msgstr "~ã¨ã„ã†åå‰ã§ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "ã‚ã‹ã£ãŸ.."
@@ -1652,8 +1629,10 @@ msgid "This operation can't be done without a tree root."
msgstr "ã“ã®å‡¦ç†ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"シーンをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ãŠãらãä¾å­˜é–¢ä¿‚ (インスタンス) を完備ã•れã¦ã„"
"ãªã„ã¨æ€ã‚れã¾ã™."
@@ -2353,6 +2332,14 @@ msgstr "ヘルプ"
msgid "Classes"
msgstr "クラス"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Search"
+msgstr "検索"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Online Docs"
@@ -2771,7 +2758,8 @@ msgid "No version.txt found inside templates."
msgstr "テンプレート内ã«version.txtãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "テンプレートã®ãƒ‘ス生æˆã‚¨ãƒ©ãƒ¼\n"
#: editor/export_template_manager.cpp
@@ -2938,9 +2926,8 @@ msgid "View items as a list"
msgstr "リスト表示"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"状æ³: ファイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚ファイルを修正ã—ã¦æ‰‹å‹•ã§å†ã‚¤ãƒ³ãƒãƒ¼"
@@ -2953,22 +2940,22 @@ msgstr "ソースã®ãƒ•ォントを読ã¿è¾¼ã¿/処ç†ã§ãã¾ã›ã‚“."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr "åŒã˜ãƒ•ァイルã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "読ã¿è¾¼ã¿å¤±æ•—:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
#: editor/filesystem_dock.cpp
@@ -3704,6 +3691,11 @@ msgstr "ノードフィルターã®ç·¨é›†"
msgid "Filters.."
msgstr "フィルター.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "アニメーション"
+
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Free"
@@ -3886,6 +3878,7 @@ msgid "Bake Lightmaps"
msgstr "ライトマップã¸ã®è»¢å†™:"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "プレビュー"
@@ -4230,6 +4223,14 @@ msgstr "%s追加ã™ã‚‹"
msgid "Adding %s..."
msgstr "%s追加中..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "オッケー"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
@@ -4243,12 +4244,6 @@ msgid "Error instancing scene from %s"
msgstr "%sシーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–エラー"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "This operation requires a single selected node."
-msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
msgid "Change default type"
msgstr "é…列ã®å€¤ã®ç¨®é¡žã®å¤‰æ›´"
@@ -4673,7 +4668,7 @@ msgstr "ベイク!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
#, fuzzy
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -5122,15 +5117,19 @@ msgstr "リソースを読ã¿è¾¼ã‚€"
msgid "Paste"
msgstr "貼り付ã‘"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "リソースã®ãƒ‘ス"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
msgstr "最近開ã„ãŸãƒ•ァイルã®è¨˜éŒ²ã‚’クリア"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"変更をä¿å­˜ã—ã¦é–‰ã˜ã¾ã™ã‹?\n"
"\""
@@ -5214,6 +5213,11 @@ msgstr "パスをコピーã™ã‚‹"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
+msgid "Show In File System"
+msgstr "ファイルシステム上ã§è¡¨ç¤º"
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid "History Prev"
msgstr "ç›´å‰ã®å±¥æ­´"
@@ -5688,85 +5692,85 @@ msgid "Rotating %s degrees."
msgstr "%s 度回転."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "下é¢å›³."
+msgid "Keying is disabled (no key inserted)."
+msgstr "キーã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ï¼ˆã‚­ãƒ¼ã¯æŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "下é¢"
+#, fuzzy
+msgid "Animation Key Inserted."
+msgstr "アニメーションã®ã‚­ãƒ¼ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã™."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "上é¢å›³."
+msgid "Objects Drawn"
+msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "後é¢å›³."
+msgid "Material Changes"
+msgstr "ç´ æã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "後é¢"
+msgid "Shader Changes"
+msgstr "シェーダーã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "å‰é¢å›³."
+msgid "Surface Changes"
+msgstr "サーフェースã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "å‰é¢"
+msgid "Draw Calls"
+msgstr "ドローコール(Daw call)"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "å·¦å´é¢å›³."
+msgid "Vertices"
+msgstr "頂点"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "å·¦å´é¢"
+msgid "FPS"
+msgstr "フレームレート"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "å³å´é¢å›³."
+msgid "Top View."
+msgstr "上é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "å³å´é¢"
+msgid "Bottom View."
+msgstr "下é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "キーã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ï¼ˆã‚­ãƒ¼ã¯æŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“)."
+msgid "Bottom"
+msgstr "下é¢"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Animation Key Inserted."
-msgstr "アニメーションã®ã‚­ãƒ¼ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã™."
+msgid "Left View."
+msgstr "å·¦å´é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト"
+msgid "Left"
+msgstr "å·¦å´é¢"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "ç´ æã®å¤‰æ›´"
+msgid "Right View."
+msgstr "å³å´é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "シェーダーã®å¤‰æ›´"
+msgid "Right"
+msgstr "å³å´é¢"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "サーフェースã®å¤‰æ›´"
+msgid "Front View."
+msgstr "å‰é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "ドローコール(Daw call)"
+msgid "Front"
+msgstr "å‰é¢"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "頂点"
+msgid "Rear View."
+msgstr "後é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "フレームレート"
+msgid "Rear"
+msgstr "後é¢"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5781,6 +5785,11 @@ msgstr "ãŠãƒ¼ã‘ー :("
msgid "No parent to instance a child at."
msgstr "å­ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã™ã‚‹ãŸã‚ã®è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "This operation requires a single selected node."
+msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“"
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "通常表示"
@@ -5863,17 +5872,12 @@ msgid "Freelook Speed Modifier"
msgstr "フリールックã®é€Ÿåº¦ã‚’調整"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "プレビュー"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Xformダイアログ"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6170,10 +6174,20 @@ msgstr "ノードを除去"
msgid "Move (After)"
msgstr "å·¦ã«ç§»å‹•"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "スタックフレーム"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "スタイルボックス プレビュー:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "スタイル"
+
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Set Region Rect"
@@ -6201,14 +6215,17 @@ msgid "Auto Slice"
msgstr "自動スライス"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "オフセット:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "ステップ:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "分離:"
@@ -6354,6 +6371,10 @@ msgstr "フォント"
msgid "Color"
msgstr "色"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "テーマ"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -6463,6 +6484,32 @@ msgstr "シーンã‹ã‚‰ãƒžãƒ¼ã‚¸"
msgid "Error"
msgstr "エラー"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "自動スライス"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "キャンセル"
@@ -6591,12 +6638,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "'project.godot' ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"空ã§ãªã„フォルダã«ãƒ—ロジェクトãŒä½œæˆã•れã¾ã™(æ–°ã—ã„フォルダを作æˆã™ã‚‹ã“ã¨ãŒã§"
-"ãã¾ã™)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "'project.godot' ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6607,6 +6651,15 @@ msgid "Imported Project"
msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ロジェクト"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "プロジェクトã«åå‰ã‚’付ã‘ã¦ãã ã•ã„."
@@ -6654,15 +6707,30 @@ msgid "Import Existing Project"
msgstr "既存ã®ãƒ—ロジェクトをインãƒãƒ¼ãƒˆ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "æ–°ã—ã„プロジェクトを作る"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "発光物を生æˆ"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "プロジェクトをインストール:"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Install & Edit"
+msgstr "インストール"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Project Name:"
msgstr "プロジェクトå:"
@@ -6680,10 +6748,6 @@ msgid "Browse"
msgstr "ブラウズ"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "当ãŸã‚Š!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
@@ -6739,6 +6803,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "プロジェクトã®ãƒªã‚¹ãƒˆ"
@@ -6875,12 +6943,6 @@ msgid "Button 9"
msgstr "ボタン9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "変更"
-
-#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joypad Axis Index:"
msgstr "ジョイパッド軸ã®Index:"
@@ -7298,10 +7360,6 @@ msgid "Error loading scene from %s"
msgstr "シーンを%sã‹ã‚‰èª­ã¿è¾¼ã‚€éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç”Ÿã˜ã¾ã—ãŸ"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "オッケー"
-
-#: editor/scene_tree_dock.cpp
#, fuzzy
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
@@ -7404,7 +7462,8 @@ msgid "Error duplicating scene to save it."
msgstr "ä¿å­˜ã®ãŸã‚シーンを複製ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+#, fuzzy
+msgid "Sub-Resources"
msgstr "サブリソース:"
#: editor/scene_tree_dock.cpp
@@ -7744,7 +7803,7 @@ msgstr "関数:"
msgid "Pick one or more items from the list to display the graph."
msgstr "グラフ表示ã™ã‚‹ã«ã¯ãƒªã‚¹ãƒˆã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ã‚’é¸ã‚“ã§ãã ã•ã„."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "エラー"
@@ -7754,6 +7813,11 @@ msgstr "å­ãƒ—ロセス接続"
#: editor/script_editor_debugger.cpp
#, fuzzy
+msgid "Copy Error"
+msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+
+#: editor/script_editor_debugger.cpp
+#, fuzzy
msgid "Inspect Previous Instance"
msgstr "å‰ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®å†…容を確èª"
@@ -8132,10 +8196,58 @@ msgstr "Snapã®è¨­å®š"
msgid "Pick Distance:"
msgstr "インスタンス:"
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "八分木テクスãƒãƒ£ã‚’生æˆ"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "アウトラインを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "リソース読ã¿è¾¼ã¿å¤±æ•—"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "完了!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "リソース読ã¿è¾¼ã¿å¤±æ•—"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "モノラル音声"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "アウトラインを生æˆ"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "ビルド"
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "プロジェクト"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "警告"
+
#: modules/visual_script/visual_script.cpp
#, fuzzy
msgid ""
@@ -8561,27 +8673,33 @@ msgid "Run exported HTML in the system's default browser."
msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLファイルを既定ã®ãƒ–ラウザã§å®Ÿè¡Œ."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, fuzzy
+msgid "Could not write file:"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã¿ã§ãã¾ã›ã‚“ã§ã—ãŸ:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "エクスãƒãƒ¼ãƒˆã™ã‚‹ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "テンプレート エクスãƒãƒ¼ãƒˆã‚’管ç†"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr "ファイルを読ã‚ã¾ã›ã‚“ã§ã—ãŸ:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr "ファイルを読ã‚ã¾ã›ã‚“ã§ã—ãŸ:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "ファイルを読ã‚ã¾ã›ã‚“ã§ã—ãŸ:\n"
#: scene/2d/animated_sprite.cpp
@@ -8601,6 +8719,13 @@ msgstr ""
"シーンã®ã‚»ãƒƒãƒˆ) ã”ã¨ã«è¨±å¯ã•れã¾ã™ã€‚最åˆã«ä½œæˆã•れ㟠1 ã¤ãŒå‹•作ã™ã‚‹ä¸€æ–¹ã€æ®‹ã‚Š"
"ã®éƒ¨åˆ†ã¯ç„¡è¦–ã•れã¾ã™ã€‚"
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
#, fuzzy
msgid ""
@@ -8693,7 +8818,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8758,6 +8883,13 @@ msgstr "プロット完了"
msgid "Lighting Meshes: "
msgstr "イメージをé…ç½®(Blit)"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid ""
@@ -8818,8 +8950,8 @@ msgstr "æç”»ãƒ‘スã®ãŸã‚ã®ãƒ¡ãƒƒã‚·ãƒ¥ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ã®ã§
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8904,8 +9036,8 @@ msgstr "(ãã®ä»–)"
#: scene/main/scene_tree.cpp
#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"プロジェクトã®è¨­å®š (レンダリング-> ビューãƒãƒ¼ãƒˆ -> 既定ã®ç’°å¢ƒ) ã§æ—¢å®šã¨ã•れã¦"
"ã„る環境(Environment)ã¯èª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ."
@@ -8938,6 +9070,44 @@ msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
msgid "Invalid font size."
msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
+#~ msgid "Next"
+#~ msgstr "次"
+
+#~ msgid "Not found!"
+#~ msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#~ msgid "Replace By"
+#~ msgstr "ã§ç½®æ›ã™ã‚‹"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別"
+
+#, fuzzy
+#~ msgid "Backwards"
+#~ msgstr "後方"
+
+#, fuzzy
+#~ msgid "Prompt On Replace"
+#~ msgstr "ç½®æ›æ™‚ã«ç¢ºèª"
+
+#, fuzzy
+#~ msgid "Skip"
+#~ msgstr "スキップ"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "空ã§ãªã„フォルダã«ãƒ—ロジェクトãŒä½œæˆã•れã¾ã™(æ–°ã—ã„フォルダを作æˆã™ã‚‹ã“ã¨"
+#~ "ãŒã§ãã¾ã™)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "当ãŸã‚Š!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "プレビュー"
+
#~ msgid "Move Add Key"
#~ msgstr "追加ã—ãŸã‚­ãƒ¼ã‚’移動"
@@ -9026,9 +9196,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
#~ msgid "Filter:"
#~ msgstr "フィルター:"
-#~ msgid "Theme"
-#~ msgstr "テーマ"
-
#, fuzzy
#~ msgid "Method List For '%s':"
#~ msgstr "'%s' ã®ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§ï¼š"
@@ -9358,10 +9525,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
#~ msgstr "ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#, fuzzy
-#~ msgid "Import & Open"
-#~ msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã"
-
-#, fuzzy
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "編集ã—ãŸã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“ãŒã€ãれã§ã‚‚インãƒãƒ¼ãƒˆã—ãŸã‚·ãƒ¼ãƒ³ã‚’é–‹ãã¾"
@@ -9677,9 +9840,6 @@ msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
#~ msgid "Stereo"
#~ msgstr "ステレオ音声"
-#~ msgid "Mono"
-#~ msgstr "モノラル音声"
-
#~ msgid "Pitch"
#~ msgstr "ピッãƒ"
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 743f32a9e6..29518c9797 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -3,14 +3,16 @@
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
-# 박한얼 (volzhs) <volzhs@gmail.com>, 2016-2017.
+# 박한얼 (volzhs) <volzhs@gmail.com>, 2016-2018.
# Ch <ccwpc@hanmail.net>, 2017.
+# paijai 송 (fivejobi) <xotjq237@gmail.com>, 2018.
+# TheRedPlanet <junmo.moon8@gmail.com>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-12-11 00:48+0000\n"
+"PO-Revision-Date: 2018-01-20 17:48+0000\n"
"Last-Translator: 박한얼 <volzhs@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -19,7 +21,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -27,65 +29,63 @@ msgstr "비활성화ë¨"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr "모든 ì„ íƒ"
+msgstr "ëª¨ë‘ ì„ íƒ"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "값 변경"
+msgstr "애니메ì´ì…˜ 키프레임 시간 변경"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr "전환 변경"
+msgstr "애니메ì´ì…˜ 변화 변경"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr "ì†ì„± 변경"
+msgstr "애니메ì´ì…˜ 변형 변경"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "값 변경"
+msgstr "애니메ì´ì…˜ 키프레임 ê°’ 변경"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr "호출 변경"
+msgstr "애니메ì´ì…˜ 호출 변경"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr "트랙 추가"
+msgstr "애니메ì´ì…˜ 트랙 추가"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "키 복제"
+msgstr "애니메ì´ì…˜ 키 복제"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr "트랙 위로 ì´ë™"
+msgstr "애니메ì´ì…˜ 트랙 위로 ì´ë™"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr "트랙 아래로 ì´ë™"
+msgstr "애니메ì´ì…˜ 트랙 아래로 ì´ë™"
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr "트랙 삭제"
+msgstr "애니메ì´ì…˜ 트랙 ì‚­ì œ"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
-msgstr "전환 설정:"
+msgstr "변화 설정:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr "트랙 ì´ë¦„ 변경"
+msgstr "애니메ì´ì…˜ 트랙 ì´ë¦„ 변경"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr "트랙 보간 변경"
+msgstr "애니메ì´ì…˜ 트랙 ë³´ê°„ 변경"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr "트랙 값 모드 변경"
+msgstr "애니메ì´ì…˜ 트랙 ê°’ 모드 변경"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
@@ -93,20 +93,20 @@ msgstr "애니메ì´ì…˜ 트랙 ëž© 모드 변경"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
-msgstr "노드 커브 수정"
+msgstr "노드 커브 편집"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
-msgstr "ì„ íƒ ì»¤ë¸Œ 수정"
+msgstr "ì„ íƒ ì»¤ë¸Œ 편집"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr "키 삭제"
+msgstr "애니메ì´ì…˜ 키 ì‚­ì œ"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr "ì„ íƒí‚¤ 복제"
+msgstr "ì„ íƒ ë³µì œ"
#: editor/animation_editor.cpp
msgid "Duplicate Transposed"
@@ -130,19 +130,19 @@ msgstr "트리거"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr "키 추가"
+msgstr "애니메ì´ì…˜ 키 추가"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
-msgstr "키 ì´ë™"
+msgstr "애니메ì´ì…˜ 키 ì´ë™"
#: editor/animation_editor.cpp
msgid "Scale Selection"
-msgstr "ì„ íƒí‚¤ ìŠ¤ì¼€ì¼ ì¡°ì ˆ"
+msgstr "ì„ íƒ í¬ê¸° ì¡°ì ˆ"
#: editor/animation_editor.cpp
msgid "Scale From Cursor"
-msgstr "커서 위치ì—서 ìŠ¤ì¼€ì¼ ì¡°ì ˆ"
+msgstr "커서 위치ì—서 í¬ê¸° ì¡°ì ˆ"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
@@ -163,23 +163,23 @@ msgstr "비선형"
#: editor/animation_editor.cpp
msgid "In"
-msgstr "In"
+msgstr "안"
#: editor/animation_editor.cpp
msgid "Out"
-msgstr "Out"
+msgstr "ë°–"
#: editor/animation_editor.cpp
msgid "In-Out"
-msgstr "In-Out"
+msgstr "안-밖"
#: editor/animation_editor.cpp
msgid "Out-In"
-msgstr "Out-In"
+msgstr "밖-안"
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr "전환"
+msgstr "변화"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
@@ -191,18 +191,17 @@ msgstr "애니메ì´ì…˜ 정리"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "%s (ì„)를 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³  키를 추가하시겠습니까?"
+msgstr "%s (ì„)를 위해 새 íŠ¸ëž™ì„ ë§Œë“¤ê³  키를 삽입하시겠습니까?"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³  키를 추가하시겠습니까?"
+msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³  키를 삽입하시겠습니까?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "ìƒì„±"
@@ -240,7 +239,7 @@ msgstr "애니메ì´ì…˜ 키 í¬ê¸° ì¡°ì ˆ"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
-msgstr "애니메ì´ì…˜ 함수 트랙 추가"
+msgstr "애니메ì´ì…˜ 호출 트랙 추가"
#: editor/animation_editor.cpp
msgid "Animation zoom."
@@ -292,7 +291,7 @@ msgstr "개별 키를 í´ë¦­í•¨ìœ¼ë¡œì¨ 편집 활성화."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr "애니메ì´ì…˜ 최ì í™”"
+msgstr "애니메ì´ì…˜. 최ì í™”"
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
@@ -312,7 +311,8 @@ msgstr "최ì í™”"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
-msgstr "애니메ì´ì…˜ íŽ¸ì§‘ì„ ìœ„í•´ì„œëŠ” 씬ì—서 AnimationPlayer를 ì„ íƒí•´ì•¼ 합니다."
+msgstr ""
+"애니메ì´ì…˜ íŽ¸ì§‘ì„ ìœ„í•´ì„œëŠ” 씬 트리ì—서 AnimationPlayer를 ì„ íƒí•´ì•¼ 합니다."
#: editor/animation_editor.cpp
msgid "Key"
@@ -320,7 +320,7 @@ msgstr "키"
#: editor/animation_editor.cpp
msgid "Transition"
-msgstr "전환"
+msgstr "변화"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
@@ -379,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d 회 êµì²´ë¨."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "바꾸기"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "전체 바꾸기"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„"
@@ -395,48 +387,16 @@ msgid "Whole Words"
msgstr "전체 단어"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "ì„ íƒì˜ì—­ë§Œ"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "검색"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "찾기"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "다ìŒ"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "ì°¾ì„ ìˆ˜ 없습니다!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "으로 바꿈"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "뒤로"
+msgid "Replace"
+msgstr "바꾸기"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "변경 시 알림"
+msgid "Replace All"
+msgstr "전체 바꾸기"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "건너뛰기"
+msgid "Selection Only"
+msgstr "ì„ íƒ ì˜ì—­ë§Œ"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -460,14 +420,14 @@ msgstr "칼럼:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr "ëŒ€ìƒ ë…¸ë“œì˜ í•¨ìˆ˜ë¥¼ 명시해야합니다!"
+msgstr "ëŒ€ìƒ ë…¸ë“œì˜ ë©”ì„œë“œë¥¼ 명시해야 합니다!"
#: editor/connections_dialog.cpp
msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
-"타겟 메소드를 ì°¾ì„ ìˆ˜ 없습니다! 유효한 메소드를 지정하거나, 타겟 ë…¸ë“œì— ìŠ¤í¬"
+"ëŒ€ìƒ ë©”ì„œë“œë¥¼ ì°¾ì„ ìˆ˜ 없습니다! 유효한 메서드를 지정하거나, ëŒ€ìƒ ë…¸ë“œì— ìŠ¤í¬"
"립트를 추가하세요."
#: editor/connections_dialog.cpp
@@ -538,9 +498,8 @@ msgid "Connecting Signal:"
msgstr "ì‹œê·¸ë„ ì—°ê²°:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "'%s'를 '%s'ì— ì—°ê²°"
+msgstr "'%s'와 '%s'ì˜ ì—°ê²° í•´ì œ"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -556,9 +515,17 @@ msgid "Signals"
msgstr "시그ë„"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "%s로 타입 변경"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "변경"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "새로 만들기"
+msgstr "새 %s ìƒì„±"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -601,7 +568,7 @@ msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will not take effect unless reloaded."
msgstr ""
-"씬 '%s'ì´(ê°€) 현재 편집 중입니다.\n"
+"씬 '%s'(ì´)ê°€ 현재 편집 중입니다.\n"
"다시 로드 í•  때 변경 ì‚¬í•­ì´ ì ìš©ë©ë‹ˆë‹¤."
#: editor/dependency_editor.cpp
@@ -637,7 +604,7 @@ msgstr "깨진 종ì†ì„± 수정"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr "ì¢…ì† ê´€ê³„ 편집기"
+msgstr "ì¢…ì† ê´€ê³„ ì—디터"
#: editor/dependency_editor.cpp
msgid "Search Replacement Resource:"
@@ -668,8 +635,8 @@ msgstr ""
"ì •ë§ë¡œ 삭제하시겠습니까? (ë˜ëŒë¦¬ê¸° 불가)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "제거할 수 없습니다:\n"
+msgid "Cannot remove:"
+msgstr "제거할 수 없습니다:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -677,7 +644,7 @@ msgstr "로드 중 ì—러:"
#: editor/dependency_editor.cpp
msgid "Scene failed to load due to missing dependencies:"
-msgstr "없어진 ì¢…ì† ê´€ê³„ ë•Œë¬¸ì— ì”¬ì„ ë¡œë“œí•  수 없습니다:"
+msgstr "ì¢…ì† ê´€ê³„ë¥¼ ì°¾ì„ ìˆ˜ 없어 씬를 로드할 수 없습니다:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
@@ -751,9 +718,9 @@ msgstr "프로ì íЏ 창립ìž"
msgid "Lead Developer"
msgstr "리드 개발ìž"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "프로ì íЏ 매니저"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "프로ì íЏ 매니저 "
#: editor/editor_about.cpp
msgid "Developers"
@@ -824,11 +791,11 @@ msgstr "ë¼ì´ì„ ìФ"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr "패키지 파ì¼ì„ 여는 ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. zip í¬ë§·ì´ 아닙니다."
+msgstr "패키지 파ì¼ì„ 여는 ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. zip 형ì‹ì´ 아닙니다."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr "어셋 압축해제"
+msgstr "ì—ì…‹ ì••ì¶•í•´ì œ"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
@@ -840,7 +807,7 @@ msgid "Success!"
msgstr "성공!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "설치"
@@ -861,9 +828,8 @@ msgid "Rename Audio Bus"
msgstr "오디오 버스 ì´ë¦„ 변경"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "오디오 버스 솔로 토글"
+msgstr "오디오 버스 볼륨 바꾸기"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -895,7 +861,7 @@ msgstr "버스 ì´íŽ™íŠ¸ ì‚­ì œ"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr "오디오 버스, 드래그 ë° ë“œë¡­ìœ¼ë¡œ 재배치하세요."
+msgstr "오디오 버스, 드래그 ë° ë“œëžìœ¼ë¡œ 재배치하세요."
#: editor/editor_audio_buses.cpp
msgid "Solo"
@@ -928,7 +894,7 @@ msgstr "ì´íŽ™íŠ¸ ì‚­ì œ"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "ìŒì„±"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1044,11 +1010,11 @@ msgstr "리소스 경로가 아닙니다."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr "오토 로드 추가"
+msgstr "오토로드 추가"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr "ìžë™ë¡œë“œì— '%s'ì´(ê°€) ì´ë¯¸ 존재합니다!"
+msgstr "ì˜¤í† ë¡œë“œì— '%s'ì´(ê°€) ì´ë¯¸ 존재합니다!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
@@ -1056,7 +1022,7 @@ msgstr "오토로드 ì´ë¦„ 변경"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr "ìžë™ë¡œë“œ 글로벌 토글"
+msgstr "오토로드 글로벌 토글"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
@@ -1105,13 +1071,12 @@ msgid "Updating scene.."
msgstr "씬 ì—…ë°ì´íЏ 중.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(비었ìŒ)"
+msgstr "[비었ìŒ]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[저장ë˜ì§€ 않ìŒ]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1148,11 +1113,11 @@ msgstr "íŒŒì¼ ì €ìž¥ 중:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr "패킹중"
+msgstr "패킹 중"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:\n"
+msgid "Template file not found:"
+msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1192,7 +1157,7 @@ msgstr "íŒŒì¼ ì—´ê¸°"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open File(s)"
-msgstr "íŒŒì¼ ì—´ê¸°"
+msgstr "여러 íŒŒì¼ ì—´ê¸°"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a Directory"
@@ -1275,7 +1240,7 @@ msgstr "소스 조사"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr "어셋 (다시) 가져오기"
+msgstr "ì—ì…‹ (다시) 가져오기"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1320,11 +1285,11 @@ msgstr "멤버:"
#: editor/editor_help.cpp
msgid "Public Methods"
-msgstr "공개 메소드"
+msgstr "공개 메서드"
#: editor/editor_help.cpp
msgid "Public Methods:"
-msgstr "공개 함수:"
+msgstr "공개 메서드:"
#: editor/editor_help.cpp
msgid "GUI Theme Items"
@@ -1340,15 +1305,15 @@ msgstr "시그ë„:"
#: editor/editor_help.cpp
msgid "Enumerations"
-msgstr "Enumerations"
+msgstr "ì—´ê±°"
#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Enumerations:"
+msgstr "ì—´ê±°:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr "enum "
+msgstr "ì´ë„˜(ì—´ê±°) "
#: editor/editor_help.cpp
msgid "Constants"
@@ -1363,6 +1328,20 @@ msgid "Description"
msgstr "설명"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "온ë¼ì¸ 튜토리얼:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"현재 ì´ í´ëž˜ìŠ¤ì— ëŒ€í•œ íŠœí† ë¦¬ì–¼ì´ ì—†ìŠµë‹ˆë‹¤. [color=$color][url=$url]ë„ì›€ì„ ì£¼"
+"시거나[/url][/color] [color=$color][url=$url2]요청 하실 수[/url][/color] 있습"
+"니다."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "ì†ì„±"
@@ -1384,7 +1363,7 @@ msgstr "메서드"
#: editor/editor_help.cpp
msgid "Method Description:"
-msgstr "함수 설명:"
+msgstr "메서드 설명:"
#: editor/editor_help.cpp
msgid ""
@@ -1398,6 +1377,10 @@ msgstr ""
msgid "Search Text"
msgstr "ë¬¸ìž ê²€ìƒ‰"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "찾기"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "출력:"
@@ -1409,6 +1392,10 @@ msgstr "출력:"
msgid "Clear"
msgstr "지우기"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "출력 지우기"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "리소스 저장 중 ì—러!"
@@ -1417,8 +1404,8 @@ msgstr "리소스 저장 중 ì—러!"
msgid "Save Resource As.."
msgstr "리소스를 다른 ì´ë¦„으로 저장.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "알겠습니다.."
@@ -1472,9 +1459,11 @@ msgstr "ì´ ìž‘ì—…ì€ íŠ¸ë¦¬ 루트 ì—†ì´ëŠ” 불가합니다."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"ì”¬ì„ ì €ìž¥í•  수 없습니다. ì•„ë§ˆë„ ì¢…ì† ê´€ê³„ê°€ 만족스럽지 ì•Šì„ ìˆ˜ 있습니다."
+"ì”¬ì„ ì €ìž¥í•  수 없습니다. ì•„ë§ˆë„ ì¢…ì† ê´€ê³„(ì¸ìŠ¤í„´ìŠ¤ ë˜ëŠ” ìƒì†)ê°€ 만족스럽지 않"
+"ì„ ìˆ˜ 있습니다."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1482,11 +1471,11 @@ msgstr "리소스 로드 실패."
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
-msgstr "병합할 메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 로드할 수 없습니다!"
+msgstr "병합할 메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ 로드할 수 없습니다!"
#: editor/editor_node.cpp
msgid "Error saving MeshLibrary!"
-msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ 저장 중 ì—러!"
+msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ 저장 중 ì—러!"
#: editor/editor_node.cpp
msgid "Can't load TileSet for merging!"
@@ -1535,7 +1524,7 @@ msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
-"ì´ ë¦¬ì†ŒìŠ¤ëŠ” 가져오기ë˜ì—ˆìœ¼ë¯€ë¡œ 수정할 수 없습니다. 가져오기 패ë„ì—서 ì†ì„±ì„ "
+"ì´ ë¦¬ì†ŒìŠ¤ëŠ” 가져오기 ë˜ì—ˆìœ¼ë¯€ë¡œ 수정할 수 없습니다. 가져오기 패ë„ì—서 ì†ì„±ì„ "
"변경한 뒤 다시 가져오십시오."
#: editor/editor_node.cpp
@@ -1607,7 +1596,7 @@ msgid ""
"category."
msgstr ""
"ë©”ì¸ ì”¬ì´ ì§€ì •ë˜ì§€ 않았습니다. ì„ íƒí•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n"
-"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'Application' 항목ì—서 변경할 수 있습니다."
+"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'application' 항목ì—서 변경할 수 있습니다."
#: editor/editor_node.cpp
msgid ""
@@ -1616,7 +1605,7 @@ msgid ""
"category."
msgstr ""
"ì„ íƒí•œ '%s' ì”¬ì´ ì¡´ìž¬í•˜ì§€ 않습니다. 다시 ì„ íƒí•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n"
-"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'Application' 항목ì—서 변경할 수 있습니다."
+"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'application' 항목ì—서 변경할 수 있습니다."
#: editor/editor_node.cpp
msgid ""
@@ -1625,7 +1614,7 @@ msgid ""
"category."
msgstr ""
"ì„ íƒí•œ '%s' ì”¬ì´ ì”¬ 파ì¼ì´ 아닙니다. 다시 ì„ íƒí•˜ì‹œê² ìŠµë‹ˆê¹Œ?\n"
-"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'Application' 항목ì—서 변경할 수 있습니다."
+"ë‚˜ì¤‘ì— \"프로ì íЏ 설정\"ì˜ 'application' 항목ì—서 변경할 수 있습니다."
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
@@ -1681,7 +1670,7 @@ msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
+msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
@@ -1767,14 +1756,14 @@ msgstr "확장기능 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다: '%s'."
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
-"해당 경로ì—서 애드온 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다: '%s' 기본 íƒ€ìž…ì´ "
+"해당 경로ì—서 확장기능 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다: '%s' 기본 íƒ€ìž…ì´ "
"EditorPluginì´ ì•„ë‹™ë‹ˆë‹¤."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
-"해당 경로ì—서 애드온 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다: '%s' 스í¬ë¦½íŠ¸ê°€ tool 모드"
-"가 아닙니다."
+"해당 경로ì—서 확장기능 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다: '%s' 스í¬ë¦½íŠ¸ê°€ tool 모"
+"드가 아닙니다."
#: editor/editor_node.cpp
msgid ""
@@ -1799,7 +1788,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
-msgstr "'%s' ì”¬ì˜ ì¢…ì† í•­ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤.:"
+msgstr "'%s' ì”¬ì˜ ì¢…ì† í•­ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤:"
#: editor/editor_node.cpp
msgid "Clear Recent Scenes"
@@ -1816,7 +1805,7 @@ msgstr "ë ˆì´ì•„웃 ì‚­ì œ"
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
msgid "Default"
-msgstr "Default"
+msgstr "기본"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -1836,11 +1825,11 @@ msgstr "%dê°œ 추가 파ì¼"
#: editor/editor_node.cpp
msgid "Dock Position"
-msgstr "Dock 위치"
+msgstr "ë… ìœ„ì¹˜"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr "초집중 모드"
+msgstr "집중 모드"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
@@ -1908,7 +1897,7 @@ msgstr "변환.."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬.."
+msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬.."
#: editor/editor_node.cpp
msgid "TileSet.."
@@ -1985,8 +1974,8 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This "
"option speeds up testing for games with a large footprint."
msgstr ""
-"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 내보내기나 ë°°í¬ëŠ” ìµœì†Œí•œì˜ ì‹¤í–‰íŒŒì¼ì„ ìƒì„±í•©"
-"니다.\n"
+"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 내보내기나 ë°°í¬ëŠ” ìµœì†Œí•œì˜ ì‹¤í–‰ 파ì¼ì„ ìƒì„±"
+"합니다.\n"
"íŒŒì¼ ì‹œìŠ¤í…œì€ ë„¤íŠ¸ì›Œí¬ë¥¼ 통해서 ì—디터 ìƒì˜ 프로ì íŠ¸ê°€ 제공합니다.\n"
"안드로ì´ë“œì˜ 경우, USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•˜ì—¬ ë°°í¬í•  경우 ë” ë¹ ë¥¸ í¼í¬ë¨¼ìŠ¤ë¥¼ 제공"
"합니다. ì´ ì˜µì…˜ì€ í° ì„¤ì¹˜ ìš©ëŸ‰ì„ ìš”êµ¬í•˜ëŠ” ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ë¥¼ 빠르게 í•  수 있습니"
@@ -1994,7 +1983,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
-msgstr "Collision Shape ë³´ì´ê¸°"
+msgstr "ì¶©ëŒ ëª¨ì–‘ ë³´ì´ê¸°"
#: editor/editor_node.cpp
msgid ""
@@ -2006,14 +1995,14 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Navigation"
-msgstr "Navigation ë³´ì´ê¸°"
+msgstr "네비게ì´ì…˜ ë³´ì´ê¸°"
#: editor/editor_node.cpp
msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
msgstr ""
-"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ 네비게ì´ì…˜ 메쉬가 표시"
+"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ 네비게ì´ì…˜ 메시가 표시"
"ë©ë‹ˆë‹¤."
#: editor/editor_node.cpp
@@ -2027,8 +2016,8 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
-"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•­ì´ ì‹¤í–‰ì¤‘ì¸ ê²Œìž„ì— "
-"ë°˜ì˜ë©ë‹ˆë‹¤.\n"
+"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터 ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•­ì´ ì‹¤í–‰ ì¤‘ì¸ ê²Œìž„"
+"ì— ë°˜ì˜ë©ë‹ˆë‹¤.\n"
"ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì ìž…"
"니다."
@@ -2054,7 +2043,7 @@ msgstr "ì—디터"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
-msgstr "편집기 설정"
+msgstr "ì—디터 설정"
#: editor/editor_node.cpp
msgid "Editor Layout"
@@ -2076,6 +2065,13 @@ msgstr "ë„움ë§"
msgid "Classes"
msgstr "í´ëž˜ìФ"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "검색"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "온ë¼ì¸ 문서"
@@ -2263,7 +2259,7 @@ msgstr "스í¬ë¦½íЏ ì—디터 열기"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
-msgstr "ì–´ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ 열기"
+msgstr "ì—ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ 열기"
#: editor/editor_node.cpp
msgid "Open the next Editor"
@@ -2275,7 +2271,7 @@ msgstr "ì´ì „ ì—디터 열기"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "메쉬 미리보기 ìƒì„± 중"
+msgstr "메시 미리보기 ìƒì„± 중"
#: editor/editor_plugin.cpp
msgid "Thumbnail.."
@@ -2347,12 +2343,10 @@ msgid "Frame #:"
msgstr "프레임 #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "시간:"
+msgstr "시간"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
msgstr "호출"
@@ -2370,7 +2364,7 @@ msgstr ""
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
-msgstr "로ì§ì„ _run() í•¨ìˆ˜ì•ˆì— ìž‘ì„±í•˜ì„¸ìš”."
+msgstr "로ì§ì„ _run() ë©”ì„œë“œì•ˆì— ìž‘ì„±í•˜ì„¸ìš”."
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
@@ -2390,7 +2384,7 @@ msgstr "스í¬ë¦½íŠ¸ë¥¼ 실행할 수 없습니다:"
#: editor/editor_run_script.cpp
msgid "Did you forget the '_run' method?"
-msgstr "'_run' 함수를 잊으셨습니까?"
+msgstr "'_run' 메서드를 잊으셨습니까?"
#: editor/editor_settings.cpp
msgid "Default (Same as Editor)"
@@ -2461,8 +2455,8 @@ msgid "No version.txt found inside templates."
msgstr "í…œí”Œë¦¿ì— version.txt를 ì°¾ì„ ìˆ˜ 없습니다."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "템플릿 경로 ìƒì„± ì—러:\n"
+msgid "Error creating path for templates:"
+msgstr "템플릿 경로 ìƒì„± ì—러:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2497,7 +2491,6 @@ msgstr "ì‘답 ì—†ìŒ."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "요청 실패."
@@ -2545,7 +2538,6 @@ msgid "Connecting.."
msgstr "연결중.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "ì—°ê²°í•  수 ì—†ìŒ"
@@ -2619,11 +2611,8 @@ msgid "View items as a list"
msgstr "리스트로 보기"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"ìƒíƒœ: íŒŒì¼ ê°€ì ¸ì˜¤ê¸° 실패. 파ì¼ì„ 수정하고 \"다시 가져오기\"를 수행하세요."
#: editor/filesystem_dock.cpp
@@ -2631,21 +2620,20 @@ msgid "Cannot move/rename resources root."
msgstr "리소스 루트를 옮기거나 ì´ë¦„ì„ ë³€ê²½í•  수 없습니다."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "í´ë”를 ìžì‹ ì˜ 하위로 ì´ë™í•  수 없습니다.\n"
+msgid "Cannot move a folder into itself."
+msgstr "í´ë”를 ìžì‹ ì˜ 하위로 ì´ë™í•  수 없습니다."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "ì´ë™ ì—러:\n"
+msgid "Error moving:"
+msgstr "ì´ë™ ì—러:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "로드 중 ì—러:"
+msgid "Error duplicating:"
+msgstr "복제 중 ì—러:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "종ì†í•­ëª©ì„ ì—…ë°ì´íЏ í•  수 없습니다:\n"
+msgid "Unable to update dependencies:"
+msgstr "종ì†í•­ëª©ì„ ì—…ë°ì´íЏ í•  수 없습니다:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2676,14 +2664,12 @@ msgid "Renaming folder:"
msgstr "í´ë”명 변경:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "복제"
+msgstr "íŒŒì¼ ë³µì œ 중:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "í´ë”명 변경:"
+msgstr "복제 ì¤‘ì¸ í´ë”:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2702,9 +2688,8 @@ msgid "Move To.."
msgstr "ì´ë™.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "씬 열기"
+msgstr "씬(들) 열기"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2719,9 +2704,8 @@ msgid "View Owners.."
msgstr "ì†Œìœ ìž ë³´ê¸°.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "복제"
+msgstr "복제.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2818,14 +2802,12 @@ msgid "Importing Scene.."
msgstr "씬 가져오는 중.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ 전송:"
+msgstr "ë¼ì´íŠ¸ë§µ ìƒì„± 중"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "AABB ìƒì„± 중"
+msgstr "메시를 위해 ìƒì„± 중: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -2939,7 +2921,7 @@ msgstr "새 애니메ì´ì…˜ ì´ë¦„:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "New Anim"
-msgstr "New Anim"
+msgstr "새 애니메ì´ì…˜"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Animation Name:"
@@ -2956,7 +2938,7 @@ msgstr "애니메ì´ì…˜ 제거"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Invalid animation name!"
-msgstr "ì—러: 유요하지 ì•Šì€ ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„!"
+msgstr "ì—러: 유효하지 ì•Šì€ ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Animation name already exists!"
@@ -2974,11 +2956,11 @@ msgstr "애니메ì´ì…˜ 추가하기"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Blend Next Changed"
-msgstr "ë‹¤ìŒ ì—°ê²° 변경"
+msgstr "블렌드 다ìŒìœ¼ë¡œ 변경ë¨"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Blend Time"
-msgstr "연결 시간 변경"
+msgstr "블렌드 시간 변경"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
@@ -3014,7 +2996,7 @@ msgstr "ì„ íƒëœ 애니메ì´ì…˜ì„ 현재 위치ì—서 거꾸로 재ìƒ. (A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr "ì„ íƒëœ 애니메ì´ì…˜ì„ ëì—서 거꾸로 재ìƒ. (Shift+A)"
+msgstr "ì„ íƒëœ 애니메ì´ì…˜ì„ ëì—서 거꾸로 재ìƒ. (시프트+A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Stop animation playback. (S)"
@@ -3022,7 +3004,7 @@ msgstr "애니메ì´ì…˜ ìž¬ìƒ ì •ì§€. (S)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from start. (Shift+D)"
-msgstr "ì„ íƒëœ 애니메ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒ. (Shift+D)"
+msgstr "ì„ íƒëœ 애니메ì´ì…˜ì„ 처ìŒë¶€í„° 재ìƒ. (시프트+D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from current pos. (D)"
@@ -3114,7 +3096,7 @@ msgstr "변경사항만"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
-msgstr ""
+msgstr "ê°•ì œ í°ìƒ‰ ì¡°ì ˆ"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
@@ -3191,7 +3173,7 @@ msgstr "재시작 (초):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Random Restart (s):"
-msgstr "ëžœë¤ ìž¬ì‹œìž‘ (ì´ˆ):"
+msgstr "ìž„ì˜ ìž¬ì‹œìž‘ (ì´ˆ):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Start!"
@@ -3280,7 +3262,7 @@ msgstr "시간 íƒìƒ‰ 노드"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Transition Node"
-msgstr "전환 노드"
+msgstr "변화 노드"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
@@ -3294,6 +3276,10 @@ msgstr "노드 필터 편집"
msgid "Filters.."
msgstr "í•„í„°.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "애니메ì´ì…˜ 트리"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "무료"
@@ -3344,11 +3330,11 @@ msgstr "ë°›ìŒ:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Failed sha256 hash check"
-msgstr "sha256 해시 ì²´í¬ ì‹¤íŒ¨"
+msgstr "sha256 해시 í™•ì¸ ì‹¤íŒ¨"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr "ì–´ì…‹ 다운로드 ì—러:"
+msgstr "ì—ì…‹ 다운로드 ì—러:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Fetching:"
@@ -3376,7 +3362,7 @@ msgstr "다운로드 ì—러"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr "ì´ ì–´ì…‹ì˜ ë‹¤ìš´ë¡œë“œê°€ ì´ë¯¸ 진행중입니다!"
+msgstr "ì´ ì—ì…‹ì˜ ë‹¤ìš´ë¡œë“œê°€ ì´ë¯¸ 진행중입니다!"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "first"
@@ -3443,23 +3429,28 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ë“¤ì˜ 저장 경로를 파악할 수 없습니다.\n"
+"(해당 ê²½ë¡œì— ì´ë¯¸ì§€ë“¤ì´ 저장 ë  ìˆ˜ 있ë„ë¡) ì”¬ì„ ì €ìž¥í•˜ê±°ë‚˜ BakedLightmap 설정"
+"ì—서 저장 경로를 지정하세요."
#: 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' 항목"
+"ì´ ì²´í¬ë˜ì–´ 있는지 í™•ì¸ í•´ 주세요."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
+msgstr "ë¼ì´íŠ¸ë§µ ì´ë¯¸ì§€ ìƒì„±ì— 실패했습니다, 경로가 쓸 수 있는지 확ì¸í•˜ì„¸ìš”."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ 전송:"
+msgstr "ë¼ì´íŠ¸ë§µ 굽기"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "미리보기"
@@ -3559,11 +3550,11 @@ msgstr "알트+드래그: ì´ë™"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "'v'키는 피벗 ì´ë™, '쉬프트+v'키는 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)."
+msgstr "'v'키로 피벗 변경, '시프트+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+RMB: Depth list selection"
-msgstr "알트+ìš°í´ë¦­: 겹친 오브ì íЏ ì„ íƒ"
+msgstr "알트+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Mode"
@@ -3670,7 +3661,7 @@ msgstr "Bones 만들기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Bones"
-msgstr "Bones 없애기"
+msgstr "Bones 지우기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
@@ -3682,7 +3673,7 @@ msgstr "IK ì²´ì¸ ë§Œë“¤ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear IK Chain"
-msgstr "IK ì²´ì¸ ì—†ì• ê¸°"
+msgstr "IK ì²´ì¸ ì§€ìš°ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3708,11 +3699,11 @@ msgstr "ê°€ì´ë“œ 보기"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
-msgstr "ì„ íƒí•­ëª© 화면 ì¤‘ì•™ì— í‘œì‹œ"
+msgstr "ì„ íƒ í•­ëª© 화면 ì¤‘ì•™ì— í‘œì‹œ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Frame Selection"
-msgstr "ì„ íƒí•­ëª© 화면 꽉차게 표시"
+msgstr "ì„ íƒ í•­ëª© 화면 꽉차게 표시"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
@@ -3740,7 +3731,7 @@ msgstr "í¬ì¦ˆ 정리"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag pivot from mouse position"
-msgstr ""
+msgstr "마우스로 ì¤‘ì‹¬ì  ë“œëž˜ê·¸"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Set pivot at mouse position"
@@ -3762,6 +3753,14 @@ msgstr "%s 추가"
msgid "Adding %s..."
msgstr "%s 추가중..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "확ì¸"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "루트 ë…¸ë“œì—†ì´ ì—¬ëŸ¬ê°œì˜ ë…¸ë“œë¥¼ ìƒì„±í•  수 없습니다."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3773,11 +3772,6 @@ msgid "Error instancing scene from %s"
msgstr "'%s' 로부터 씬 ì¸ìŠ¤í„´ìŠ¤ 중 ì—러"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "ì´ ìž‘ì—…ì€ í•˜ë‚˜ì˜ ì„ íƒëœ 노드를 필요로 합니다."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "기본 타입 변경"
@@ -3786,7 +3780,7 @@ msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
-"드래그 & ë“œëž + 쉬프트 : 형제 노드로 추가\n"
+"드래그 & ë“œëž + 시프트 : 형제 노드로 추가\n"
"드래그 & ë“œëž + 알트 : 노드 타입 변경"
#: editor/plugins/collision_polygon_editor_plugin.cpp
@@ -3821,23 +3815,23 @@ msgstr "씬으로부터 갱신하기"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat0"
-msgstr ""
+msgstr "플랫0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat1"
-msgstr ""
+msgstr "플랫1"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease in"
-msgstr "Ease in"
+msgstr "완화 in"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease out"
-msgstr "Ease out"
+msgstr "완화 out"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Smoothstep"
-msgstr ""
+msgstr "스무스스í…"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
@@ -3877,15 +3871,15 @@ msgstr "커프 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "커브 선형 탄젠트 토글"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr "쉬프트키를 누르고 있으면 탄젠트를 개별ì ìœ¼ë¡œ 편집 가능"
+msgstr "시프트키를 누르고 있으면 탄젠트를 개별ì ìœ¼ë¡œ 편집 가능"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr "GI Probe 굽기"
+msgstr "GI 프로브 굽기"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -3906,7 +3900,7 @@ msgstr "항목"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item List Editor"
-msgstr "항목 ëª©ë¡ íŽ¸ì§‘ê¸°"
+msgstr "항목 ëª©ë¡ ì—디터"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid ""
@@ -3958,39 +3952,39 @@ msgstr "씬 루트ì—서는 í•  수 없습니다!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Shape"
-msgstr "Trimesh Shape 만들기"
+msgstr "Trimesh 모양 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Shape"
-msgstr "Convex Shape 만들기"
+msgstr "Convex 모양 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr "네비게ì´ì…˜ 메쉬 만들기"
+msgstr "네비게ì´ì…˜ 메시 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "í¬í•¨ëœ 메시는 ArrayMesh íƒ€ìž…ì— ì†í•˜ì§€ 않습니다."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "UV 펼치기를 실패했습니다, 메시가 다양하진 않나요?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "디버그할 메시가 없습니다."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "모ë¸ì´ ì´ ë ˆì´ì–´ì— UV를 지니고 있지 않습니다"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr "MeshInstanceì— ë©”ì‰¬ê°€ 없습니다!"
+msgstr "MeshInstanceì— ë©”ì‹œê°€ 없습니다!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr "ë©”ì‰¬ì— ì•„ì›ƒë¼ì¸ì„ 만들기 위한 서피스가 없습니다!"
+msgstr "ë©”ì‹œì— ì™¸ê³½ì„ ì„ ë§Œë“¤ê¸° 위한 서피스가 없습니다!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
@@ -4002,7 +3996,7 @@ msgstr "외곽선 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
-msgstr "메쉬"
+msgstr "메시"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
@@ -4014,33 +4008,31 @@ msgstr "Convex Static Body 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr "Trimesh Collision Sibling 만들기"
+msgstr "Trimesh ì¶©ëŒ í˜•ì œ 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Collision Sibling"
-msgstr "Convex Collision Sibling 만들기"
+msgstr "Convex ì¶©ëŒ í˜•ì œ 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr "외곽선 메쉬 만들기.."
+msgstr "외곽선 메시 만들기.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "보기"
+msgstr "UV1 보기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "보기"
+msgstr "UV2 보기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "ë¼ì´íŠ¸ë§µ/AO를 위한 UV2 언랩"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr "외곽선 메쉬 만들기"
+msgstr "외곽선 메시 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
@@ -4048,23 +4040,23 @@ msgstr "외곽선 í¬ê¸°:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr "소스 메쉬가 지정ë˜ì§€ 않았습니다 (그리고 ë…¸ë“œì— MultiMeshê°€ 없습니다)."
+msgstr "소스 메시가 지정ë˜ì§€ 않았습니다 (그리고 ë…¸ë“œì— MultiMeshê°€ 없습니다)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr "소스 메쉬가 지정ë˜ì§€ 않았습니다 (그리고 MultiMeshì— ë©”ì‰¬ê°€ 없습니다)."
+msgstr "소스 메시가 지정ë˜ì§€ 않았습니다 (그리고 MultiMeshì— ë©”ì‹œê°€ 없습니다)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
-msgstr "소스 메쉬가 유효하지 않습니다 (유효하지 ì•Šì€ ê²½ë¡œ)."
+msgstr "소스 메시가 유효하지 않습니다 (유효하지 ì•Šì€ ê²½ë¡œ)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr "소스 메쉬가 유효하지 않습니다 (MeshInstance가 아닙니다)."
+msgstr "소스 메시가 유효하지 않습니다 (MeshInstance가 아닙니다)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr "소스 메쉬가 유효하지 않습니다 (메쉬 리소스가 없습니다)."
+msgstr "소스 메시가 유효하지 않습니다 (메시 리소스가 없습니다)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
@@ -4076,7 +4068,7 @@ msgstr "서피스 소스가 유효하지 않습니다 (유효하지 ì•Šì€ ê²½ë¡
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no geometry)."
-msgstr "서피스 소스가 유효하지 않습니다 (지오미트리 ì—†ìŒ)."
+msgstr "서피스 소스가 유효하지 않습니다 (지오메트리 ì—†ìŒ)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no faces)."
@@ -4092,7 +4084,7 @@ msgstr "ì˜ì—­ì„ 매핑 í•  수 없습니다."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Source Mesh:"
-msgstr "소스 메쉬 ì„ íƒ:"
+msgstr "소스 메시 ì„ íƒ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Target Surface:"
@@ -4112,7 +4104,7 @@ msgstr "ëŒ€ìƒ ì„œí”¼ìŠ¤:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr "소스 메쉬:"
+msgstr "소스 메시:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
@@ -4128,7 +4120,7 @@ msgstr "Zì¶•"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr "ë©”ì‰¬ì˜ ìœ„ìª½ ì¶•:"
+msgstr "ë©”ì‹œì˜ ìœ„ìª½ ì¶•:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
@@ -4151,12 +4143,12 @@ msgid "Bake!"
msgstr "굽기!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "네비게ì´ì…˜ 메쉬 만들기.\n"
+msgid "Bake the navigation mesh."
+msgstr "네비게ì´ì…˜ 메시 만들기."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr "네비게ì´ì…˜ 메쉬 지우기."
+msgstr "네비게ì´ì…˜ 메시 지우기."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
@@ -4164,7 +4156,7 @@ msgstr "구성 설정 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Calculating grid size..."
-msgstr "그리드 사ì´ì¦ˆ 계산 중..."
+msgstr "그리드 í¬ê¸° 계산 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating heightfield..."
@@ -4176,7 +4168,7 @@ msgstr "걷기 가능한 트ë¼ì´ì•µê¸€ 표시 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Constructing compact heightfield..."
-msgstr ""
+msgstr "ì••ì¶•ëœ Heightfield를 구성 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Eroding walkable area..."
@@ -4192,11 +4184,11 @@ msgstr "윤곽선 ìƒì„± 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating polymesh..."
-msgstr "í´ë¦¬ 메쉬 ìƒì„± 중..."
+msgstr "í´ë¦¬ 메시 ìƒì„± 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr "네ì´í‹°ë¸Œ 네비게ì´ì…˜ 메쉬로 변환 중..."
+msgstr "네ì´í‹°ë¸Œ 네비게ì´ì…˜ 메시로 변환 중..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
@@ -4204,7 +4196,7 @@ msgstr "네비게ì´ì…˜ 메시 ìƒì„±ê¸° 설정:"
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
-msgstr "지오미트리 ë¶„ì„ ì¤‘..."
+msgstr "지오메트리 ë¶„ì„ ì¤‘..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Done!"
@@ -4221,7 +4213,7 @@ msgstr "AABB ìƒì„± 중"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
+msgstr "ì˜¤ì§ ParticlesMaterial 프로세스 메테리얼 ì•ˆì˜ í¬ì¸íŠ¸ë§Œ 설정 가능"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4233,7 +4225,7 @@ msgstr "ì´ë¯¸ì§€ì— 투명ë„ê°€ 128보다 í° í”½ì…€ì´ ì—†ìŠµë‹ˆë‹¤.."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Visibility Rect를 ìƒì„±"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
@@ -4295,7 +4287,7 @@ msgstr "AABB ìƒì„±"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Mesh"
-msgstr "메쉬로부터 ì—미션 í¬ì¸íЏ 만들기"
+msgstr "메시로부터 ì—미션 í¬ì¸íЏ 만들기"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Node"
@@ -4311,11 +4303,11 @@ msgstr "ì—미션 í¬ì¸íЏ:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points"
-msgstr "서페ì´ìФ í¬ì¸íЏ"
+msgstr "서피스 í¬ì¸íЏ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "서피스 í¬ì¸íЏ+ë…¸ë§ (지시ëœ)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
@@ -4366,7 +4358,7 @@ msgstr "í¬ì¸íЏ ì„ íƒ"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Shift+Drag: Select Control Points"
-msgstr "쉬푸트+드래그: 컨트롤 í¬ì¸íЏ ì„ íƒ"
+msgstr "시프트+드래그: 컨트롤 í¬ì¸íЏ ì„ íƒ"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4380,7 +4372,7 @@ msgstr "ìš°í´ë¦­: í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
-msgstr "컨트롤 í¬ì¸íЏ ì„ íƒ (쉬프트+드래그)"
+msgstr "컨트롤 í¬ì¸íЏ ì„ íƒ (시프트+드래그)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4444,7 +4436,7 @@ msgstr "UV 맵 변형"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
-msgstr "í´ë¦¬ê³¤ 2D UV 편집기"
+msgstr "í´ë¦¬ê³¤ 2D UV ì—디터"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Point"
@@ -4456,11 +4448,11 @@ msgstr "컨트롤: 회전"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift: Move All"
-msgstr "쉬프트: ì „ì²´ ì´ë™"
+msgstr "시프트: ì „ì²´ ì´ë™"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift+Ctrl: Scale"
-msgstr "쉬프트+컨트롤: í¬ê¸° ì¡°ì ˆ"
+msgstr "시프트+컨트롤: í¬ê¸° ì¡°ì ˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Polygon"
@@ -4540,17 +4532,17 @@ msgstr "리소스 로드"
msgid "Paste"
msgstr "붙여넣기"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "리소스 프리로ë”"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "최근 íŒŒì¼ ì§€ìš°ê¸°"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ê³  닫겠습니까?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ê³  닫겠습니까?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4621,9 +4613,12 @@ msgid "Soft Reload Script"
msgstr "스í¬ë¦½íЏ 다시 로드"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "경로 복사"
+msgstr "스í¬ë¦½íЏ 경로 복사"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—서 보기"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4635,7 +4630,7 @@ msgstr "ë‹¤ìŒ ížˆìŠ¤í† ë¦¬"
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
-msgstr "테마 재로드"
+msgstr "테마 다시 로드"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme"
@@ -4814,9 +4809,8 @@ msgid "Clone Down"
msgstr "아래로 복제"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "ë¼ì¸ 펼치기"
+msgstr "ë¼ì¸ 펼치기/접기"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -4953,7 +4947,7 @@ msgstr "기본값 변경"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
-msgstr "변환 uniform 변경"
+msgstr "XForm uniform 변경"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Texture Uniform"
@@ -5053,91 +5047,91 @@ msgstr "í¬ê¸°: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translating: "
-msgstr "위치 ì´ë™: "
+msgstr "ì´ë™ 중: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "%së„로 회전."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "아랫면 보기."
+msgid "Keying is disabled (no key inserted)."
+msgstr "키가 비활성화 ë˜ì–´ 있습니다 (키가 삽입ë˜ì§€ 않았습니다)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "아랫면"
+msgid "Animation Key Inserted."
+msgstr "애니메ì´ì…˜ 키가 삽입ë˜ì—ˆìŠµë‹ˆë‹¤."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "윗면 보기."
+msgid "Objects Drawn"
+msgstr "그려진 오브ì íЏ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "뒷면 보기."
+msgid "Material Changes"
+msgstr "머터리얼 변경"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "ë’·ë©´"
+msgid "Shader Changes"
+msgstr "ì…°ì´ë” 변경"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "정면 보기."
+msgid "Surface Changes"
+msgstr "서피스 변경"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "ì •ë©´"
+msgid "Draw Calls"
+msgstr "드로우 콜"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "왼쪽면 보기."
+msgid "Vertices"
+msgstr "버틱스"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "왼쪽면"
+msgid "FPS"
+msgstr "초당 프레임"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "오른쪽면 보기."
+msgid "Top View."
+msgstr "윗면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "오른쪽면"
+msgid "Bottom View."
+msgstr "아랫면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "키가 비활성화 ë˜ì–´ 있습니다 (키가 삽입ë˜ì§€ 않았습니다)."
+msgid "Bottom"
+msgstr "아랫면"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "애니메ì´ì…˜ 키가 삽입ë˜ì—ˆìŠµë‹ˆë‹¤."
+msgid "Left View."
+msgstr "왼쪽면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "그려진 오브ì íЏ"
+msgid "Left"
+msgstr "왼쪽면"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "머터리얼 변경"
+msgid "Right View."
+msgstr "오른쪽면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "ì…°ì´ë” 변경"
+msgid "Right"
+msgstr "오른쪽면"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "서피스 변경"
+msgid "Front View."
+msgstr "정면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "드로우 콜"
+msgid "Front"
+msgstr "ì •ë©´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "버틱스"
+msgid "Rear View."
+msgstr "뒷면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "초당 프레임"
+msgid "Rear"
+msgstr "ë’·ë©´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5151,6 +5145,10 @@ msgstr "넹 :("
msgid "No parent to instance a child at."
msgstr "ì„ íƒëœ 부모 노드가 없어서 ìžì‹ë…¸ë“œë¥¼ ì¸ìŠ¤í„´ìŠ¤í•  수 없습니다."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "ì´ ìž‘ì—…ì€ í•˜ë‚˜ì˜ ì„ íƒëœ 노드를 필요로 합니다."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Normal 표시"
@@ -5224,16 +5222,12 @@ msgid "Freelook Speed Modifier"
msgstr "ìžìœ ì‹œì  ì†ë„ 변화"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "미리보기"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
-msgstr "변환 다ì´ì–¼ë¡œê·¸"
+msgstr "XForm 다ì´ì–¼ë¡œê·¸"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "ì„ íƒ ëª¨ë“œ (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "ì„ íƒ ëª¨ë“œ (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5243,7 +5237,7 @@ msgid ""
msgstr ""
"드래그: 회전\n"
"알트+드래그: ì´ë™\n"
-"알트+ìš°í´ë¦­: 겹친 오브ì íЏ ì„ íƒ"
+"알트+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5255,21 +5249,19 @@ msgstr "회전 모드 (E)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Mode (R)"
-msgstr "í¬ê¸°ì¡°ì ˆ 모드 (R)"
+msgstr "í¬ê¸° ì¡°ì ˆ 모드 (R)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "로컬 좌표"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "í¬ê¸°ì¡°ì ˆ 모드 (R)"
+msgstr "로컬 스페ì´ìФ 모드 (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "스냅 모드:"
+msgstr "스냅 모드 (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5305,7 +5297,7 @@ msgstr "애니메ì´ì…˜ 키 삽입"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
-msgstr "ì›ì  보기"
+msgstr "ì›ì  í¬ì»¤ìФ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
@@ -5329,7 +5321,7 @@ msgstr "회전 툴"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Scale"
-msgstr "í¬ê¸°ì¡°ì ˆ 툴"
+msgstr "í¬ê¸° ì¡°ì ˆ 툴"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Freelook"
@@ -5337,7 +5329,7 @@ msgstr "ìžìœ ì‹œì  토글"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
-msgstr "변환"
+msgstr "변형"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Configure Snap.."
@@ -5345,7 +5337,7 @@ msgstr "스냅 설정.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog.."
-msgstr "변환 다ì´ì–¼ë¡œê·¸.."
+msgstr "변형 다ì´ì–¼ë¡œê·¸.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
@@ -5386,7 +5378,7 @@ msgstr "설정"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "스켈레톤 기즈모 가시성"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5422,7 +5414,7 @@ msgstr "Z-ì›ê²½ 보기:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
-msgstr "변환 변경"
+msgstr "변형 변경"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
@@ -5438,7 +5430,7 @@ msgstr "í¬ê¸° (비율):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr "변환 타입"
+msgstr "변형 타입"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -5512,13 +5504,21 @@ msgstr "ì´ë™ (ì´ì „)"
msgid "Move (After)"
msgstr "ì´ë™ (ì´í›„)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "스프ë¼ì´íЏ 프레임"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox 미리보기:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "ìŠ¤íƒ€ì¼ ë°•ìŠ¤"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
-msgstr "구역 설정"
+msgstr "ì˜ì—­ 설정"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5541,14 +5541,17 @@ msgid "Auto Slice"
msgstr "ìžë™ ìžë¥´ê¸°"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "오프셋:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "단계:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "간격:"
@@ -5558,7 +5561,7 @@ msgstr "í…ìŠ¤ì³ ì˜ì—­"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region Editor"
-msgstr "í…ìŠ¤ì³ êµ¬ì—­ 편집기"
+msgstr "í…ìŠ¤ì³ ì˜ì—­ ì—디터"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
@@ -5566,7 +5569,7 @@ msgstr "테마를 파ì¼ë¡œ 저장할 수 없습니다:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All Items"
-msgstr "모든 ì•„ì´í…œ 추가"
+msgstr "모든 항목 추가"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All"
@@ -5579,7 +5582,7 @@ msgstr "ì•„ì´í…œ ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Items"
-msgstr "모든 ì•„ì´í…œ ì‚­ì œ"
+msgstr "모든 항목 삭제"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All"
@@ -5595,11 +5598,11 @@ msgstr "테마 편집 메뉴."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
-msgstr "í´ëž˜ìФ ì•„ì´í…œ 추가"
+msgstr "í´ëž˜ìФ 항목 추가"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
-msgstr "í´ëž˜ìФ ì•„ì´í…œ ì‚­ì œ"
+msgstr "í´ëž˜ìФ 항목 ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Template"
@@ -5615,31 +5618,31 @@ msgstr "현재 ì—디터 테마로부터 만들기"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
-msgstr "CheckBox Radio1"
+msgstr "ì²´í¬ë°•스 ë¼ë””오1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio2"
-msgstr "CheckBox Radio2"
+msgstr "ì²´í¬ë°•스 ë¼ë””오2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Item"
-msgstr "Item"
+msgstr "항목"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Check Item"
-msgstr "Check Item"
+msgstr "항목 확ì¸"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Checked Item"
-msgstr "Checked Item"
+msgstr "항목 확ì¸ë¨"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Has"
-msgstr "Has"
+msgstr "가진다"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Many"
-msgstr "Many"
+msgstr "ë§Žì€"
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
@@ -5647,19 +5650,19 @@ msgstr "옵션"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Have,Many,Several,Options!"
-msgstr "Have,Many,Several,Options!"
+msgstr "가진다,ë§Žì€,여러,옵션들!"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 1"
-msgstr "Tab 1"
+msgstr "탭 1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 2"
-msgstr "Tab 2"
+msgstr "탭 2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 3"
-msgstr "Tab 3"
+msgstr "탭 3"
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
@@ -5686,6 +5689,10 @@ msgstr "í°íЏ"
msgid "Color"
msgstr "색깔"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "테마"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "ì„ íƒ ì§€ìš°ê¸°"
@@ -5712,7 +5719,7 @@ msgstr "타ì¼ë§µ 지우기"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase selection"
-msgstr "ì„ íƒë¶€ë¶„ 지우기"
+msgstr "ì„ íƒ ì§€ìš°ê¸°"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Find tile"
@@ -5771,9 +5778,8 @@ msgid "Merge from scene?"
msgstr "씬으로부터 병합하시겠습니까?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "íƒ€ì¼ ì…‹.."
+msgstr "íƒ€ì¼ ì…‹"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5787,6 +5793,34 @@ msgstr "씬으로부터 병합하기"
msgid "Error"
msgstr "ì—러"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "ìžë™ 타ì¼"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"사용할 서브 타ì¼ì„ ì•„ì´ì½˜ìœ¼ë¡œ 설정하세요, 효력없는 ìžë™íƒ€ì¼ ë°”ì¸ë”©ì—ë„ ì‚¬ìš©ë©"
+"니다."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"좌í´ë¦­: 비트 켜기를 설정합니다.\n"
+"ìš°í´ë¦­: 비트 ë„기를 설정합니다."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "현재 íŽ¸ì§‘ëœ ì„œë¸Œ íƒ€ì¼ ì„ íƒ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "서브 타ì¼ì„ ì„ íƒí•´ ìš°ì„  순위를 바꿉니다."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "취소"
@@ -5894,11 +5928,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "'project.godot' 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"비어있지 ì•Šì€ í´ë”ì— í”„ë¡œì íŠ¸ê°€ ìƒì„±ë©ë‹ˆë‹¤ (새 í´ë”를 만드는 ê²ƒì„ ê¶Œí•©ë‹ˆë‹¤)."
+msgid "Please choose an empty folder."
+msgstr "비어있는 í´ë”를 ì„ íƒí•˜ì„¸ìš”."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5909,6 +5940,14 @@ msgid "Imported Project"
msgstr "가져온 프로ì íЏ"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "í´ë”를 만들 수 없습니다."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "ì´ë¯¸ ì§€ì •ëœ ì´ë¦„ì˜ ê²½ë¡œë¥¼ 가진 í´ë”입니다."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "프로ì íЏ ì´ë¦„ì„ ì •í•˜ëŠ” ê²ƒì„ ê¶Œí•©ë‹ˆë‹¤."
@@ -5949,14 +5988,26 @@ msgid "Import Existing Project"
msgstr "기존 프로ì íЏ 가져오기"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "가져오기 & 편집"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "새 프로ì íЏ 만들기"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "ìƒì„± & 편집"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "프로ì íЏ 설치:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "설치 & 편집"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "프로ì íЏ 명:"
@@ -5973,10 +6024,6 @@ msgid "Browse"
msgstr "찾아보기"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "빙고!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "ì´ë¦„없는 프로ì íЏ"
@@ -5995,15 +6042,15 @@ msgid ""
"the \"Application\" category."
msgstr ""
"프로ì íŠ¸ë¥¼ 실행할 수 없습니다: ë©”ì¸ì”¬ì´ 지정ë˜ì§€ 않았습니다.\n"
-"프로ì íЏ ì„¤ì •ì„ ìˆ˜ì •í•˜ì—¬ \"Application\" ì¹´í…Œê³ ë¦¬ì— \"Project Settings\"ì—서 "
-"ë©”ì¸ì”¬ì„ 설정하세요."
+"프로ì íŠ¸ë¥¼ 편집하여 \"Application\" ì¹´í…Œê³ ë¦¬ì— \"Project Settings\"ì—서 ë©”ì¸ "
+"ì”¬ì„ ì„¤ì •í•˜ì„¸ìš”."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
-"프로ì íЏ 실행 불가: ì–´ì…‹ë“¤ì„ ê°€ì ¸ì™€ì•¼ 합니다.\n"
+"프로ì íЏ 실행 불가: ì—ì…‹ë“¤ì„ ê°€ì ¸ì™€ì•¼ 합니다.\n"
"프로ì íŠ¸ë¥¼ 편집하여 최초 가져오기가 실행ë˜ë„ë¡ í•˜ì„¸ìš”."
#: editor/project_manager.cpp
@@ -6030,6 +6077,10 @@ msgid ""
msgstr "%s ì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³  합니다. 진행하시겠습니까?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "프로ì íЏ 매니저"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "프로ì íЏ 목ë¡"
@@ -6067,7 +6118,7 @@ msgid ""
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
"프로ì íŠ¸ê°€ 현재 í•˜ë‚˜ë„ ì—†ìŠµë‹ˆë‹¤.\n"
-"어쎗 ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì íŠ¸ë¥¼ 찾아보시겠습니까?"
+"ì—ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì íŠ¸ë¥¼ 찾아보시겠습니까?"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6103,7 +6154,7 @@ msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ 추가"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Shift+"
-msgstr "쉬프트+"
+msgstr "시프트+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Alt+"
@@ -6158,11 +6209,6 @@ msgid "Button 9"
msgstr "버튼 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "변경"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "ì¡°ì´íŒ¨ë“œ ì¶• ì¸ë±ìФ:"
@@ -6175,9 +6221,8 @@ msgid "Joypad Button Index:"
msgstr "ì¡°ì´íŒ¨ë“œ 버튼 ì¸ë±ìФ:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ ì‚­ì œ"
+msgstr "입력 액션 지우기"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6257,7 +6302,7 @@ msgstr "설정 저장 완료."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "기능 재정ì˜"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6277,7 +6322,7 @@ msgstr "리소스 리맵핑 추가"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
-msgstr "언어 리소스 리맵핑 변경"
+msgstr "리소스 리맵핑 언어 변경"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
@@ -6309,7 +6354,7 @@ msgstr "ì†ì„±:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "재정ì˜.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6349,11 +6394,11 @@ msgstr "리소스:"
#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
-msgstr "ì§€ì—­ì— ë”°ë¥¸ 리맵핑:"
+msgstr "로케ì¼ì— 따른 리맵핑:"
#: editor/project_settings_editor.cpp
msgid "Locale"
-msgstr "지역"
+msgstr "로케ì¼"
#: editor/project_settings_editor.cpp
msgid "Locales Filter"
@@ -6425,7 +6470,7 @@ msgstr "새 스í¬ë¦½íЏ"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "새 %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6445,7 +6490,7 @@ msgstr "íŒŒì¼ ë¡œë“œ ì—러: 리소스가 아닙니다!"
#: editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
-msgstr "ì„ íƒëœ 노드는 Viewportê°€ 아닙니다!"
+msgstr "ì„ íƒëœ 노드는 ë·°í¬íŠ¸ê°€ 아닙니다!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6460,9 +6505,8 @@ msgid "On"
msgstr "사용"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "빈 프레임 추가"
+msgstr "[비어있ìŒ]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6478,11 +6522,11 @@ msgstr "ì†ì„± ì„ íƒ"
#: editor/property_selector.cpp
msgid "Select Virtual Method"
-msgstr "ê°€ìƒ ë©”ì†Œë“œ ì„ íƒ"
+msgstr "ê°€ìƒ ë©”ì„œë“œ ì„ íƒ"
#: editor/property_selector.cpp
msgid "Select Method"
-msgstr "메소드 ì„ íƒ"
+msgstr "메서드 ì„ íƒ"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
@@ -6502,7 +6546,7 @@ msgstr "부모노드 재지정 위치 (새 부모 노드를 ì„ íƒ):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
-msgstr "현재 모양새 유지"
+msgstr "글로벌 변형 유지"
#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
msgid "Reparent"
@@ -6542,10 +6586,6 @@ msgid "Error loading scene from %s"
msgstr "'%s' 로부터 씬 로딩 중 ì—러"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "확ì¸"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6577,7 +6617,7 @@ msgstr "노드를 삭제하시겠습니까?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "그 루트 노드로는 수행할 수 없습니다."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -6631,12 +6671,12 @@ msgid "Error duplicating scene to save it."
msgstr "저장하기 위해 ì”¬ì„ ë³µì œí•˜ëŠ” ì¤‘ì— ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "서브-리소스:"
+msgid "Sub-Resources"
+msgstr "서브-리소스"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
-msgstr "ìƒì† 없애기"
+msgstr "ìƒì† 지우기"
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
@@ -6715,11 +6755,11 @@ msgstr "로컬"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance? (No Undo!)"
-msgstr "ìƒì†ì„ 없애시겠습니까? (ë˜ëŒë¦¬ê¸° 불가!)"
+msgstr "ìƒì†ì„ 지우시겠습니까? (ë˜ëŒë¦¬ê¸° 불가!)"
#: editor/scene_tree_dock.cpp
msgid "Clear!"
-msgstr "없앴습니다!"
+msgstr "지웠습니다!"
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
@@ -6731,25 +6771,31 @@ msgstr "CanvasItem ë³´ì´ê¸° 토글"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "노드 배열 경고:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"노드가 커넥션과 ê·¸ë£¹ì„ ê°–ê³  있습니다.\n"
+"í´ë¦­í•´ì„œ ì‹œê·¸ë„ ë…ì„ ë³´ì‹­ì‹œì˜¤."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"노드가 ì»¤ë„¥ì…˜ë“¤ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤\n"
+"í´ë¦­í•´ì„œ ì‹œê·¸ë„ ë…ì„ ë³´ì‹­ì‹œì˜¤."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"노드가 그룹 ì•ˆì— ìžˆìŠµë‹ˆë‹¤.\n"
+"í´ë¦­í•´ì„œ 그룹 ë…ì„ ë³´ì‹­ì‹œì˜¤."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
@@ -6764,12 +6810,16 @@ msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"노드가 잠겨있습니다.\n"
+"í´ë¦­í•´ì„œ 잠금해제 하십시오"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"ìžì‹ë“¤ì„ ì„ íƒ í•  수 없습니다.\n"
+"í´ë¦­í•´ì„œ ì„ íƒ í•  수 있게 하십시오"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
@@ -6789,7 +6839,7 @@ msgstr "씬 트리 (노드):"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "노드 구성 경고!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6821,11 +6871,11 @@ msgstr "경로가 ë¡œì»¬ì´ ì•„ë‹˜"
#: editor/script_create_dialog.cpp
msgid "Invalid base path"
-msgstr "기본 경로가 유요하지 않ìŒ"
+msgstr "유효하지 ì•Šì€ ê¸°ë³¸ 경로"
#: editor/script_create_dialog.cpp
msgid "Directory of the same name exists"
-msgstr ""
+msgstr "ê°™ì€ ì´ë¦„ì˜ ë””ë ‰í† ë¦¬ê°€ 존재함"
#: editor/script_create_dialog.cpp
msgid "File exists, will be reused"
@@ -6833,11 +6883,11 @@ msgstr "파ì¼ì´ 존재하여, 재사용합니다"
#: editor/script_create_dialog.cpp
msgid "Invalid extension"
-msgstr "확장ìžê°€ 유요하지 않ìŒ"
+msgstr "유효하지 ì•Šì€ í™•ìž¥ìž"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "ìž˜ëª»ëœ í™•ìž¥ìž ì„ íƒ"
#: editor/script_create_dialog.cpp
msgid "Invalid Path"
@@ -6845,11 +6895,11 @@ msgstr "유효하지 ì•Šì€ ê²½ë¡œ"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
-msgstr "유요하지 ì•Šì€ í´ëž˜ìŠ¤ëª…"
+msgstr "유효하지 ì•Šì€ í´ëž˜ìŠ¤ëª…"
#: editor/script_create_dialog.cpp
msgid "Invalid inherited parent name or path"
-msgstr "유요하지 ì•Šì€ ìƒì†ëœ 부모 ì´ë¦„ ë˜ëŠ” 경로"
+msgstr "유효하지 ì•Šì€ ìƒì†ëœ 부모 ì´ë¦„ ë˜ëŠ” 경로"
#: editor/script_create_dialog.cpp
msgid "Script valid"
@@ -6857,11 +6907,11 @@ msgstr "유효한 스í¬ë¦½íЏ"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "허용ë¨:a-z, A-z, 0-9 그리고 _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "(씬 íŒŒì¼ ì•ˆì—) ë‚´ìž¥ëœ ìŠ¤í¬ë¦½íЏ"
#: editor/script_create_dialog.cpp
msgid "Create new script file"
@@ -6921,9 +6971,9 @@ msgstr "함수:"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
-msgstr ""
+msgstr "목ë¡ì—서 한 ê°œ í˜¹ì€ ì—¬ëŸ¬ ê°œì˜ í•­ëª©ì„ ì§‘ì–´ 그래프로 ë³´ì—¬ì¤ë‹ˆë‹¤."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "ì—러"
@@ -6932,6 +6982,10 @@ msgid "Child Process Connected"
msgstr "ìžì‹ 프로세스 ì—°ê²°ë¨"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "복사 ì—러"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "ì´ì „ ì¸ìŠ¤í„´ìŠ¤ 검사"
@@ -6993,7 +7047,7 @@ msgstr "타입"
#: editor/script_editor_debugger.cpp
msgid "Format"
-msgstr "í¬ë©§"
+msgstr "형ì‹"
#: editor/script_editor_debugger.cpp
msgid "Usage"
@@ -7025,7 +7079,7 @@ msgstr "단축키"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "ë°”ì¸ë”©"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7033,7 +7087,7 @@ msgstr "Light 반경 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "AudioStreamPlayer3D ì—미션 ê°ë„ 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7045,31 +7099,31 @@ msgstr "Camera í¬ê¸° 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Sphere Shape Radius"
-msgstr "Sphere Shape 반경 변경"
+msgstr "구체 모양 반경 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Box Shape Extents"
-msgstr "Box Shape 범위 변경"
+msgstr "박스 모양 범위 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Radius"
-msgstr "Capsule Shape 반경 변경"
+msgstr "ìº¡ìŠ ëª¨ì–‘ 반경 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Height"
-msgstr "Capsule Shape ë†’ì´ ë³€ê²½"
+msgstr "ìº¡ìŠ ëª¨ì–‘ ë†’ì´ ë³€ê²½"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
-msgstr "Ray Shape ê¸¸ì´ ë³€ê²½"
+msgstr "ê´‘ì„  모양 ê¸¸ì´ ë³€ê²½"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier Extents"
-msgstr "Notifier 범위 변경"
+msgstr "알림 범위 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "íŒŒí‹°í´ AABB 변경"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -7077,43 +7131,39 @@ msgstr "프로브 범위 변경"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "ì´ ì—”íŠ¸ë¦¬ì— ëŒ€í•œ 다ì´ë‚˜ë¯¹ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì„ íƒ"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "ì´ ì—”íŠ¸ë¦¬ì— ëŒ€í•œ ë¼ì´ë¸ŒëŸ¬ë¦¬ì˜ 종ì†ì„ ì„ íƒ"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "커프 í¬ì¸íЏ ì‚­ì œ"
+msgstr "현재 엔트리 제거"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "ë”블 í´ë¦­ìœ¼ë¡œ 새로운 엔트리를 ìƒì„±"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "플랫í¼:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "플랫í¼ìœ¼ë¡œ 복사.."
+msgstr "플랫í¼"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬"
+msgstr "다ì´ë‚˜ë¯¹ ë¼ì´ë¸ŒëŸ¬ë¦¬"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "구조 엔트리를 추가"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬"
+msgstr "GD네ì´í‹°ë¸Œ ë¼ì´ë¸ŒëŸ¬ë¦¬"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7125,11 +7175,11 @@ msgstr "ìƒíƒœ"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Libraries: "
-msgstr ""
+msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤: "
#: modules/gdnative/register_types.cpp
msgid "GDNative"
-msgstr ""
+msgstr "GD네ì´í‹°ë¸Œ"
#: modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -7178,7 +7228,7 @@ msgstr "유효하지 ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary (서브í´ëž˜ìŠ¤ê°€ 유효í•
#: modules/gdscript/gdscript_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "오브ì íŠ¸ëŠ” 길ì´ë¥¼ 제공할 수 없습니다."
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Delete Selection"
@@ -7190,7 +7240,7 @@ msgstr "그리드맵 ì„ íƒ ë³µì œ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Floor:"
-msgstr ""
+msgstr "층:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
@@ -7206,7 +7256,7 @@ msgstr "ì´ì „ 층"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
-msgstr ""
+msgstr "ë‹¤ìŒ ì¸µ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Disabled"
@@ -7214,23 +7264,23 @@ msgstr "í´ë¦½ 사용 안함"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "ìœ„ì— í´ë¦½"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "ì•„ëž˜ì— í´ë¦½"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "X 축 편집"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Y 축 편집"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Z 축 편집"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate X"
@@ -7246,23 +7296,23 @@ msgstr "커서 Z 회전"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "커서 X 역회전"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "커서 Y 역회전"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "커서 Z 역회전"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "커서 회전 지우기"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Create Area"
-msgstr "Area 만들기"
+msgstr "ì˜ì—­ 만들기"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Create Exterior Connector"
@@ -7270,11 +7320,11 @@ msgstr "외부 커넥터 만들기"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Erase Area"
-msgstr "Area 지우기"
+msgstr "ì˜ì—­ 지우기"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clear Selection"
-msgstr "ì„ íƒ ì—†ì• ê¸°"
+msgstr "ì„ íƒ ì§€ìš°ê¸°"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Settings"
@@ -7284,39 +7334,85 @@ msgstr "그리드맵 설정"
msgid "Pick Distance:"
msgstr "거리 ì„ íƒ:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "솔루션 ìƒì„± 중..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "C# 프로ì íЏ ìƒì„± 중..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "솔루션 ìƒì„± 실패."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "솔루션 저장 실패."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "완료"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "C# 프로ì íЏ ìƒì„± 실패."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "모노"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "C# 솔루션 만들기"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
-msgstr ""
+msgstr "빌드"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "프로ì íЏ 빌드"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "경고"
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
"properly!"
msgstr ""
+"작업 메모리 ì—†ì´ ì£¼ì–´ì§„ 노드입니다, 문서ì—서 노드ì—게 ì ì ˆížˆ 주는 ë°©ë²•ì„ ì½ì–´"
+"보세요!"
#: modules/visual_script/visual_script.cpp
msgid ""
"Node yielded, but did not return a function state in the first working "
"memory."
msgstr ""
+"작업 메모리가 주어진 노드지만, 첫번째 작업 ë©”ëª¨ë¦¬ì˜ í•¨ìˆ˜ ìƒíƒœë¥¼ 반환하지 않았"
+"습니다."
#: modules/visual_script/visual_script.cpp
msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
msgstr ""
+"ë°˜í™˜ëœ ê°’ì€ ë°˜ë“œì‹œ 노드 작업 ë©”ëª¨ë¦¬ì˜ ì²«ë²ˆì§¸ 요소로 할당해야 합니다! 노드를 "
+"ê³ ì³ì£¼ì„¸ìš”."
#: modules/visual_script/visual_script.cpp
msgid "Node returned an invalid sequence output: "
-msgstr ""
+msgstr "유효하지 ì•Šì€ ì‹œí€€ìŠ¤ ì¶œë ¥ì„ ë°˜í™˜í•œ 노드: "
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
+msgstr "시퀀스 비트를 발견했지만 스íƒì•ˆì˜ 노드ì—는 없습니다, 버그를 기ë¡!"
#: modules/visual_script/visual_script.cpp
msgid "Stack overflow with stack depth: "
-msgstr ""
+msgstr "ìŠ¤íƒ ê¹Šì´ë¡œ 오버플로우한 스íƒ: "
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
@@ -7324,11 +7420,11 @@ msgstr "ì‹œê·¸ë„ ì¸ìž 변경"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument Type"
-msgstr "ì¸ìˆ˜ 타입 변경"
+msgstr "ì¸ìž 타입 변경"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument name"
-msgstr "ì¸ìˆ˜ ì´ë¦„ 변경"
+msgstr "ì¸ìž ì´ë¦„ 변경"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Default Value"
@@ -7348,11 +7444,11 @@ msgstr "변수:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name is not a valid identifier:"
-msgstr ""
+msgstr "유효한 ì‹ë³„ìžê°€ 아닌 ì´ë¦„:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
-msgstr ""
+msgstr "ì´ë¯¸ 다른 함수/변수/시그ë„로 ì‚¬ìš©ëœ ì´ë¦„:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Function"
@@ -7397,26 +7493,30 @@ msgstr "비주얼 스í¬ë¦½íЏ 노드 복제"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"%s 를 누르고 있으면 게터를 드ëží•©ë‹ˆë‹¤. 시프트를 누르고 있으면 ì¼ë°˜ì ì¸ 시그니"
+"처를 드ëží•©ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"ì»¨íŠ¸ë¡¤ì„ ëˆ„ë¥´ê³  있으면 게터를 드ëží•©ë‹ˆë‹¤. 시프트를 누르고 있으면 ì¼ë°˜ì ì¸ 시"
+"그니처를 드ëží•©ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
+msgstr "%s 를 누르고 있으면 ë…¸ë“œì— ëŒ€í•œ 간단한 참고를 ì¤ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
+msgstr "ì»¨íŠ¸ë¡¤ì„ ëˆ„ë¥´ê³  있으면 ë…¸ë“œì— ëŒ€í•œ 간단한 참고를 ì¤ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Variable Setter."
-msgstr ""
+msgstr "%s를 누르고 있르면 변수 세터를 드ëží•©ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
+msgstr "ì»¨íŠ¸ë¡¤ì„ ëˆ„ë¥´ê³  있으면 변수 세터를 드ëží•©ë‹ˆë‹¤."
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Preload Node"
@@ -7428,11 +7528,11 @@ msgstr "트리ì—서 노드 추가"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Getter Property"
-msgstr ""
+msgstr "게터 ì†ì„± 추가"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Setter Property"
-msgstr ""
+msgstr "세터 ì†ì„± 추가"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Base Type"
@@ -7456,7 +7556,7 @@ msgstr "ì¡°ê±´"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
-msgstr ""
+msgstr "시퀀스"
#: modules/visual_script/visual_script_editor.cpp
msgid "Switch"
@@ -7464,11 +7564,11 @@ msgstr "스위치"
#: modules/visual_script/visual_script_editor.cpp
msgid "Iterator"
-msgstr ""
+msgstr "반복ìž"
#: modules/visual_script/visual_script_editor.cpp
msgid "While"
-msgstr ""
+msgstr "ë™ì•ˆì—"
#: modules/visual_script/visual_script_editor.cpp
msgid "Return"
@@ -7484,7 +7584,7 @@ msgstr "얻기"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
-msgstr ""
+msgstr "스í¬ë¦½íŠ¸ê°€ ì´ë¯¸ '%s' 함수를 ê°–ê³  있ìŒ"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
@@ -7540,7 +7640,7 @@ msgstr "가능한 노드:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Select or create a function to edit graph"
-msgstr ""
+msgstr "그래프를 편집하기 위한 함수를 ì„ íƒí•˜ê±°ë‚˜ ìƒì„±"
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit Signal Arguments:"
@@ -7572,23 +7672,23 @@ msgstr "노드 붙여넣기"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
-msgstr ""
+msgstr "반복할 수 없는 입력 타입: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
-msgstr ""
+msgstr "반복ìžê°€ 유효하지 않게 ë¨"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid: "
-msgstr ""
+msgstr "반복ìžê°€ 유효하지 않게 ë¨: "
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name."
-msgstr "유요하지 ì•Šì€ ì¸ë±ìФ ì†ì„±ëª…."
+msgstr "유효하지 ì•Šì€ ì¸ë±ìФ ì†ì„±ëª…."
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
-msgstr ""
+msgstr "기본 오브ì íŠ¸ëŠ” 노드가 아닙니다!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
@@ -7596,7 +7696,7 @@ msgstr "노드를 지칭하는 경로가 아닙니다!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr ""
+msgstr "노드 %s ì•ˆì— ì¸ë±ìФ ì†ì„± ì´ë¦„ '%s' 는 유효하지 않습니다."
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -7604,25 +7704,28 @@ msgstr ": 유효하지 ì•Šì€ ì¸ìž 타입: "
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid arguments: "
-msgstr ": 유효하지 ì¸ìž: "
+msgstr ": 유효하지 ì•Šì€ ì¸ìž: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
-msgstr ""
+msgstr "VariableGetì´ ìŠ¤í¬ë¦½íЏì—서 발견ë˜ì§€ 않ìŒ: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableSet not found in script: "
-msgstr ""
+msgstr "VariableSetì´ ìŠ¤í¬ë¦½íЏì—서 발견ë˜ì§€ 않ìŒ: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
msgstr ""
+"커스텀 노드가 _step() 메서드를 갖고 있지 않아서, 그래프를 처리할 수 없습니다."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
+"_step()ìœ¼ë¡œë¶€í„°ì˜ ìœ íš¨í•˜ì§€ ì•Šì€ ë°˜í™˜ 값으로, integer (seq out), í˜¹ì€ string "
+"(error)ê°€ 아니면 안ë©ë‹ˆë‹¤."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -7630,29 +7733,31 @@ msgstr "브ë¼ìš°ì €ì—서 실행"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "내보내기 한 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:\n"
+msgid "Could not write file:"
+msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 없습니다:\n"
+msgid "Could not open template for export:"
+msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 없습니다:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "유효하지 ì•Šì€ ë‚´ë³´ë‚´ê¸° 템플릿:\n"
+msgid "Invalid export template:"
+msgstr "유효하지 ì•Šì€ ë‚´ë³´ë‚´ê¸° 템플릿:"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not read custom HTML shell:\n"
-msgstr "타ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:"
+msgid "Could not read custom HTML shell:"
+msgstr "커스텀 HTML shellì„ ì½ì„ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not read boot splash image file:\n"
-msgstr "타ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:"
+msgid "Could not read boot splash image file:"
+msgstr "부트 스플래시 ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7670,6 +7775,17 @@ msgstr ""
"씬마다 ë³´ì´ëŠ” CanvasModulateê°€ 단 하나만 허용ë©ë‹ˆë‹¤. 첫번째로 ìƒì„±ëœ 것만 ë™"
"작하고, 나머지는 무시ë©ë‹ˆë‹¤."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"ì´ ë…¸ë“œëŠ” ëª¨ì–‘ì„ ê°–ëŠ” ìžì‹ 노드가 없어서, 공간ìƒì—서 ìƒí˜¸ìž‘용할 수 없습니"
+"다.\n"
+"CollisionShape2D ë˜ëŠ” CollisionPolygon2Dì„ ìžì‹ 노드로 추가하여 ëª¨ì–‘ì„ ì •ì˜í•˜"
+"세요."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7677,7 +7793,7 @@ msgid ""
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
"CollisionPolygon2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©"
-"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 ì¶”"
+"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì˜ ìžì‹ 노드로 ì¶”"
"가하여 사용합니다."
#: scene/2d/collision_polygon_2d.cpp
@@ -7691,7 +7807,7 @@ msgid ""
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
"CollisionShape2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©ë‹ˆ"
-"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 추가"
+"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì˜ ìžì‹ 노드로 추가"
"하여 사용합니다."
#: scene/2d/collision_shape_2d.cpp
@@ -7745,6 +7861,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"파티í´ì„ 처리할 ë©”í…Œë¦¬ì–¼ì´ í• ë‹¹ë˜ì§€ 않았기ì—, 아무런 í–‰ë™ë„ ì¸ì‡„ë˜ì§€ 않았습니"
+"다."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7752,10 +7870,13 @@ msgstr "PathFollow2D는 Path2D ë…¸ë“œì˜ ìžì‹ë…¸ë“œë¡œ ìžˆì„ ë•Œë§Œ ë™ìž‘í•©
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"(ìºë¦­í„°ë‚˜ 리지드 모드ì—서) RigidBody2Dì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™"
+"안 í° ë¶€ë‹´ì´ ë©ë‹ˆë‹¤.\n"
+"대신 ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7771,50 +7892,58 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera는 반드시 ARVROrigin 노드를 부모로 가지고 있어야 함"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController는 반드시 ARVROrigin 노드를 부모로 가지고 있어야 함"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
-msgstr ""
+msgstr "컨트롤러 idê°€ 0ì´ ë˜ë©´ 컨트롤러가 실제 ì»¨íŠ¸ë¡¤ëŸ¬ì— ë°”ì¸ë”©í•˜ì§€ 않게 ë¨"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor는 반드시 ARVROrigin 노드를 부모로 가지고 있어야 함"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The anchor id must not be 0 or this anchor will not be bound to an actual "
"anchor"
-msgstr ""
+msgstr "앵커 idê°€ 0ì´ ë˜ë©´ 앵커가 실제 ì•µì»¤ì— ë°”ì¸ë”©í•˜ì§€ 않게 ë¨"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROriginì€ ARVRCamera ìžì‹ 노드를 요구 함"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "ì´ë¯¸ì§€ 병합 중"
+msgstr "메시 구분 중: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "ì´ë¯¸ì§€ 병합 중"
+msgstr "ë¼ì´íЏ 구분 중:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
-msgstr ""
+msgstr "구분 ë남"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "ì´ë¯¸ì§€ 병합 중"
+msgstr "ë©”ì‹œì— ë¼ì´íŒ… 중: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"ì´ ë…¸ë“œëŠ” ëª¨ì–‘ì„ ê°–ëŠ” ìžì‹ 노드가 없어서, 공간ìƒì—서 ìƒí˜¸ìž‘용할 수 없습니"
+"다.\n"
+"CollisionShape ë˜ëŠ” CollisionPolygonì„ ìžì‹ 노드로 추가하여 ëª¨ì–‘ì„ ì •ì˜í•˜ì„¸"
+"ìš”."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7845,13 +7974,12 @@ msgid ""
"A shape must be provided for CollisionShape to function. Please create a "
"shape resource for it!"
msgstr ""
-"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스"
+"CollisionShapeê°€ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스"
"를 만드세요!"
#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Plotting Meshes"
-msgstr "ì´ë¯¸ì§€ 병합 중"
+msgstr "메시 구분중"
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
@@ -7870,14 +7998,17 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
+msgstr "ë©”ì‹œë“¤ì„ íŒ¨ìŠ¤ë¥¼ 그리ë„ë¡ í• ë‹¹í•˜ì§€ 않았으므로 ë³´ì´ì§€ 않습니다."
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"(ìºë¦­í„°ë‚˜ 리지드 모드ì—서) RigidBodyì˜ í¬ê¸° ë³€ê²½ì€ ë¬¼ë¦¬ ì—”ì§„ì´ ìž‘ë™í•˜ëŠ” ë™ì•ˆ "
+"í° ë¶€ë‹´ì´ ë©ë‹ˆë‹¤.\n"
+"대신 ìžì‹ ì¶©ëŒ í˜•íƒœì˜ í¬ê¸°ë¥¼ 변경해보세요."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7901,15 +8032,16 @@ msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
+"VehicleWheelì€ VehicleBody로 휠 ì‹œìŠ¤í…œì„ ì œê³µí•˜ëŠ” ê¸°ëŠ¥ì„ í•©ë‹ˆë‹¤. VehicleBody"
+"ì˜ ìžì‹ìœ¼ë¡œ 사용해주세요."
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "팬 모드"
+msgstr "Raw 모드"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "현재 색ìƒì„ 프리셋으로 추가"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7920,9 +8052,8 @@ msgid "Please Confirm..."
msgstr "확ì¸í•´ì£¼ì„¸ìš”..."
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select this Folder"
-msgstr "메소드 ì„ íƒ"
+msgstr "ì´ í´ë” ì„ íƒ"
#: scene/gui/popup.cpp
msgid ""
@@ -7939,16 +8070,21 @@ msgid ""
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"ScrollContainer는 ë‹¨ì¼ ìžì‹ ì»¨íŠ¸ë¡¤ì„ ìž‘ì—…í•˜ê¸° 위한 것입니다.\n"
+"컨테ì´ë„ˆë¥¼ ìžì‹(VBox,HBox,등)으로 사용하거나, Controlì„ ìˆ˜ë™ìœ¼ë¡œ 지정한 최소 "
+"수치로 설정해서 사용하세요."
#: scene/gui/tree.cpp
msgid "(Other)"
-msgstr ""
+msgstr "(기타)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
+"Project Setings(ë Œë”ë§ -> 환경 -> 기본 환경)ì— ì§€ì •ëœ ê¸°ë³¸ í™˜ê²½ì€ ë¡œë“œí•  수 "
+"없습니다."
#: scene/main/viewport.cpp
msgid ""
@@ -7957,10 +8093,10 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
-"Viewportê°€ Render Target으로 설정ë˜ì§€ 않았습니다. Viewportì˜ ë‚´ìš©ì„ í™”ë©´ìƒì— "
-"ì§ì ‘ í‘œì‹œí•˜ê³ ìž í•  경우, 사ì´ì¦ˆë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야"
-"합니다. 그렇지 ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 설정하"
-"ê³  ë‚´ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다."
+"ë·°í¬íŠ¸ê°€ ë Œë” ëŒ€ìƒìœ¼ë¡œ 설정ë˜ì§€ 않았습니다. ë·°í¬íŠ¸ì˜ ë‚´ìš©ì„ í™”ë©´ìƒì— ì§ì ‘ 표"
+"ì‹œí•˜ê³ ìž í•  경우, í¬ê¸°ë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야 합니다. "
+"그렇지 ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 RenderTarget으로 설정하고 ë‚´ë¶€ì "
+"ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다."
#: scene/resources/dynamic_font.cpp
msgid "Error initializing FreeType."
@@ -7968,7 +8104,7 @@ msgstr "FreeType 초기화 ì—러."
#: scene/resources/dynamic_font.cpp
msgid "Unknown font format."
-msgstr "알 수 없는 í°íЏ í¬ë©§."
+msgstr "알 수 없는 í°íЏ 형ì‹."
#: scene/resources/dynamic_font.cpp
msgid "Error loading font."
@@ -7976,7 +8112,41 @@ msgstr "í°íЏ 로딩 ì—러."
#: scene/resources/dynamic_font.cpp
msgid "Invalid font size."
-msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
+msgstr "유효하지 ì•Šì€ í°íЏ í¬ê¸°."
+
+#~ msgid "Next"
+#~ msgstr "다ìŒ"
+
+#~ msgid "Not found!"
+#~ msgstr "ì°¾ì„ ìˆ˜ ì—†ìŒ!"
+
+#~ msgid "Replace By"
+#~ msgstr "으로 바꿈"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„"
+
+#~ msgid "Backwards"
+#~ msgstr "뒤로"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "변경 시 알림"
+
+#~ msgid "Skip"
+#~ msgstr "건너뛰기"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "비어있지 ì•Šì€ í´ë”ì— í”„ë¡œì íŠ¸ê°€ ìƒì„±ë©ë‹ˆë‹¤ (새 í´ë”를 만드는 ê²ƒì„ ê¶Œí•©ë‹ˆ"
+#~ "다)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "빙고!"
+
+#~ msgid "preview"
+#~ msgstr "미리보기"
#~ msgid "Move Add Key"
#~ msgstr "키 ì´ë™"
@@ -8059,9 +8229,6 @@ msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
#~ msgid "Filter:"
#~ msgstr "í•„í„°:"
-#~ msgid "Theme"
-#~ msgstr "테마"
-
#~ msgid "Method List For '%s':"
#~ msgstr "'%s' 함수 목ë¡:"
@@ -8323,9 +8490,6 @@ msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
#~ msgid "Import Anyway"
#~ msgstr "무시하고 가져오기"
-#~ msgid "Import & Open"
-#~ msgstr "가져오기 후 열기"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr "íŽ¸ì§‘ëœ ì”¬ì´ ì €ìž¥ë˜ì§€ 않았습니다. 무시하고 가져온 ì”¬ì„ ì—¬ì‹œê² ìŠµë‹ˆê¹Œ?"
@@ -8579,9 +8743,6 @@ msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
#~ msgid "Stereo"
#~ msgstr "스테레오"
-#~ msgid "Mono"
-#~ msgstr "모노"
-
#~ msgid "Pitch"
#~ msgstr "피치"
@@ -8736,9 +8897,6 @@ msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "외부 리소스가 변경ë˜ì—ˆì„ 때 알림."
-#~ msgid "Tutorials"
-#~ msgstr "튜토리얼"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "https://godotengine.orgì˜ íŠœí† ë¦¬ì–¼ ë¶€ë¶„ì„ ì—½ë‹ˆë‹¤."
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 49858d179f..5e5400d1e7 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -200,8 +200,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Sukurti"
@@ -380,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -396,47 +387,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -557,6 +516,15 @@ msgid "Signals"
msgstr "Signalai"
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
#, fuzzy
msgid "Create New %s"
msgstr "Sukurti NaujÄ…"
@@ -663,7 +631,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -746,8 +714,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -832,7 +800,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1139,7 +1107,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1351,6 +1319,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1382,6 +1361,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1393,6 +1376,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1401,8 +1388,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1456,7 +1443,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2009,6 +1997,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2389,7 +2384,8 @@ msgid "No version.txt found inside templates."
msgstr "Å ablonuose nerasta version.txt failo."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Klaida kuriant kelią šablonams:\n"
#: editor/export_template_manager.cpp
@@ -2543,9 +2539,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2553,19 +2547,21 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Įvyko klaida kraunant šriftą."
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
-msgstr ""
+#, fuzzy
+msgid "Error duplicating:"
+msgstr "Duplikuoti"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3208,6 +3204,11 @@ msgstr "Redaguoti Nodų Filtrus"
msgid "Filters.."
msgstr "Filtrai.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animacija"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Nemokama"
@@ -3373,6 +3374,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3673,19 +3675,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4056,7 +4061,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4445,14 +4450,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4528,6 +4535,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4959,83 +4970,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5050,6 +5061,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5123,16 +5138,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5406,10 +5418,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5435,14 +5455,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5580,6 +5603,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5680,6 +5707,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Atšaukti"
@@ -5787,9 +5838,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5801,6 +5850,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5841,14 +5898,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Sukurti"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "(Įdiegta)"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5865,10 +5937,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5914,6 +5982,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6040,11 +6112,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6422,10 +6489,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6510,7 +6573,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6801,7 +6864,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6810,6 +6873,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7155,10 +7222,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7504,23 +7611,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7535,6 +7646,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7603,7 +7721,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7662,6 +7780,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7709,8 +7834,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7775,8 +7900,8 @@ msgstr "(Kita)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 5843a0797c..623898fcb5 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -7,22 +7,22 @@
# Anonymous <GentleSaucepan@protonmail.com>, 2017.
# flesk <eivindkn@gmail.com>, 2017.
# Jørgen Aarmo Lund <jorgen.aarmo@gmail.com>, 2016.
-# NicolaiF <nico-fre@hotmail.com>, 2017.
+# NicolaiF <nico-fre@hotmail.com>, 2017-2018.
# Norwegian Disaster <stian.furu.overbye@gmail.com>, 2017.
# passeride <lukas@passeride.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-05 23:48+0000\n"
-"Last-Translator: flesk <eivindkn@gmail.com>\n"
+"PO-Revision-Date: 2018-01-20 08:55+0000\n"
+"Last-Translator: NicolaiF <nico-fre@hotmail.com>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/godot-"
"engine/godot/nb/>\n"
"Language: nb\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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -205,8 +205,7 @@ msgstr "Lag %d NYE spor og sett inn nøkler?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Lag"
@@ -383,14 +382,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Erstattet %d forekomst(er)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Erstatt"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Erstatt Alle"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Match Tilfelle"
@@ -399,48 +390,16 @@ msgid "Whole Words"
msgstr "Hele Ord"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Kun Valgte"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Søk"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Finn"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Neste"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ikke funnet!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Erstatt Med"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Forskjell på små og store bokstaver"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Baklengs"
+msgid "Replace"
+msgstr "Erstatt"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Spør Ved Erstatning"
+msgid "Replace All"
+msgstr "Erstatt Alle"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Hopp Over"
+msgid "Selection Only"
+msgstr "Kun Valgte"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -561,6 +520,16 @@ msgstr "Signaler"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Endre standard type"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Forandre"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Lag Ny"
@@ -673,7 +642,8 @@ msgstr ""
"Fjern dem likevel? (kan ikke angres)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Kan ikke fjerne:\n"
#: editor/dependency_editor.cpp
@@ -758,8 +728,9 @@ msgstr "Prosjektgrunnleggere"
msgid "Lead Developer"
msgstr "Utviklingsleder"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Prosjektleder"
#: editor/editor_about.cpp
@@ -848,7 +819,7 @@ msgid "Success!"
msgstr "Suksess!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installer"
@@ -937,7 +908,7 @@ msgstr "Fjern Effekt"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Lyd"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1116,11 +1087,11 @@ msgstr "Oppdaterer scene.."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[tom]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[ulagret]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1160,7 +1131,8 @@ msgid "Packing"
msgstr "Pakking"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "Malfil ble ikke funnet:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1284,7 +1256,7 @@ msgstr ""
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr ""
+msgstr "(Re)Importerer Assets"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1372,6 +1344,21 @@ msgid "Description"
msgstr "Beskrivelse"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Online Dokumentasjon"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Det finnes i øyeblikket ingen beskrivelse av denne metoden. Hjelp til ved å "
+"[colour=$color][url=$url]bidra med en[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Egenskaper"
@@ -1407,6 +1394,10 @@ msgstr ""
msgid "Search Text"
msgstr "Søk Tekst"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Finn"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Output:"
@@ -1418,6 +1409,11 @@ msgstr "Output:"
msgid "Clear"
msgstr "Tøm"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Output"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Feil ved lagring av ressurs!"
@@ -1426,8 +1422,8 @@ msgstr "Feil ved lagring av ressurs!"
msgid "Save Resource As.."
msgstr "Lagre Ressurs Som.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "Jeg ser.."
@@ -1482,8 +1478,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Denne operasjonen kan ikke gjennomføres uten en trerot."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Kunne ikke lagre scene. Sannsynligvis avhengigheter (instanser) ikke kunne "
"oppfylles."
@@ -1784,6 +1782,7 @@ msgstr "Kan ikke laste addon-skript fra bane: '%s'."
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
+"Kan ikke laste addon skript fra bane: Basistype '%s' er ikke en EditorPlugin."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
@@ -2092,13 +2091,20 @@ msgstr "Hjelp"
msgid "Classes"
msgstr "Klasser"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Søk"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Online Dokumentasjon"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Spørsmål og Svar"
#: editor/editor_node.cpp
msgid "Issue Tracker"
@@ -2482,7 +2488,8 @@ 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:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Feil ved laging av sti for mal:\n"
#: editor/export_template_manager.cpp
@@ -2646,9 +2653,8 @@ msgid "View items as a list"
msgstr "Vis elementer som liste"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"Status: Import av fil feilet. Vennligst reparer filen eller reimporter "
@@ -2660,20 +2666,23 @@ msgid "Cannot move/rename resources root."
msgstr "Kan ikke flytte/endre navn ressursrot"
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+#, fuzzy
+msgid "Cannot move a folder into itself."
msgstr "Kan ikke flytte mappe inn i seg selv.\n"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+#, fuzzy
+msgid "Error moving:"
msgstr "Error ved flytting:\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Feil ved innlasting:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+#, fuzzy
+msgid "Unable to update dependencies:"
msgstr "Kan ikke oppdatere av avhengigheter:\n"
#: editor/filesystem_dock.cpp
@@ -3249,7 +3258,7 @@ msgstr "Blend 0:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend 1:"
-msgstr ""
+msgstr "Blend 1:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "X-Fade Time (s):"
@@ -3336,6 +3345,11 @@ msgstr "Rediger Node-Filtre"
msgid "Filters.."
msgstr "Filtre.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animasjon"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Frigjør"
@@ -3505,6 +3519,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Forhåndsvis"
@@ -3812,6 +3827,14 @@ msgstr "Legg til %s"
msgid "Adding %s..."
msgstr "Legger til %s.."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3823,11 +3846,6 @@ msgid "Error instancing scene from %s"
msgstr "Error ved instansiering av scene fra %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Denne operasjonen krever én valgt node."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Endre standard type"
@@ -4202,7 +4220,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4595,14 +4613,18 @@ msgstr ""
msgid "Paste"
msgstr "Lim inn"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Ressurs"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Fjern Nylige Filer"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"Lukk og lagre endringer?\n"
"\""
@@ -4681,6 +4703,11 @@ msgid "Copy Script Path"
msgstr "Kopier Sti"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Vis I Filutforsker"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5114,84 +5141,84 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Forandre"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Forandre"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5206,6 +5233,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Ingen foreldre å instansere et barn på."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Denne operasjonen krever én valgt node."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5279,16 +5310,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Velg Modus"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5565,10 +5593,18 @@ msgstr "Kopier Noder"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5594,14 +5630,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5740,6 +5779,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5842,6 +5885,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Velg Gjeldende Mappe"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5949,9 +6017,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5963,6 +6029,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Kunne ikke opprette mappe."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -6003,14 +6078,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importer"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Opprett skript"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installer"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -6027,10 +6117,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6076,6 +6162,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Prosjektleder"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6202,11 +6292,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Forandre"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6589,10 +6674,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6677,8 +6758,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "Ressurs"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6973,7 +7055,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6982,6 +7064,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Last Errors"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7332,10 +7419,57 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Lager konturer..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Kunne ikke lage omriss!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Kunne ikke laste ressurs."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "Ferdig!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Kunne ikke laste ressurs."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Lag Omriss"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Prosjekt"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7699,23 +7833,31 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not write file:"
+msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr ""
+#, fuzzy
+msgid "Invalid export template:"
+msgstr "HÃ¥ndter Eksportmaler"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+#, fuzzy
+msgid "Could not read boot splash image file:"
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7730,6 +7872,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7798,7 +7947,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7857,6 +8006,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7902,8 +8058,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7969,8 +8125,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7997,6 +8153,27 @@ msgstr ""
msgid "Invalid font size."
msgstr "Ugyldig fontstørrelse."
+#~ msgid "Next"
+#~ msgstr "Neste"
+
+#~ msgid "Not found!"
+#~ msgstr "Ikke funnet!"
+
+#~ msgid "Replace By"
+#~ msgstr "Erstatt Med"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Forskjell på små og store bokstaver"
+
+#~ msgid "Backwards"
+#~ msgstr "Baklengs"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Spør Ved Erstatning"
+
+#~ msgid "Skip"
+#~ msgstr "Hopp Over"
+
#~ msgid "Move Add Key"
#~ msgstr "Flytt Legg-Til-Nøkkel"
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 7d84e04306..c44ef3ebc8 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -10,26 +10,27 @@
# Cornee Traas <corneetraas@hotmail.com>, 2017.
# Daeran Wereld <daeran@gmail.com>, 2017.
# Dzejkop <jakubtrad@gmail.com>, 2017.
+# Ferdinand de Coninck <ferdinand.deconinck@gmail.com>, 2018.
# Maikel <maikel_martens_1@hotmail.com>, 2017.
-# Pieter-Jan Briers <pieterjan.briers@gmail.com>, 2017.
+# Pieter-Jan Briers <pieterjan.briers@gmail.com>, 2017-2018.
# Robin Arys <robinarys@hotmail.com>, 2017.
# Senno Kaasjager <senno.kaasjager@gmail.com>, 2017.
-# Uxilo <jmolendijk93@gmail.com>, 2017.
+# Uxilo <jmolendijk93@gmail.com>, 2017-2018.
# Wout Standaert <wout@blobkat.com>, 2017.
# Zatherz <zatherz@linux.pl>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
-"Last-Translator: Christophe Swolfs <swolfschristophe@gmail.com>\n"
+"PO-Revision-Date: 2018-01-22 08:07+0000\n"
+"Last-Translator: Pieter-Jan Briers <pieterjan.briers@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -40,9 +41,8 @@ msgid "All Selection"
msgstr "Alle Selectie"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Anim Wijzig Waarde"
+msgstr "Anim Wijzig Keyframe Waarde"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -53,9 +53,8 @@ msgid "Anim Change Transform"
msgstr "Anim Wijzig Transform"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Anim Wijzig Waarde"
+msgstr "Anim Wijzig Keyframe Waarde"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -211,8 +210,7 @@ msgstr "Maak %d NIEUWE tracks aan en keys invoeren?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Maken"
@@ -390,14 +388,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d voorgekomen waarde(s) vervangen."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Vervangen"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Alle Vervangen"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Hoofdlettergevoelig"
@@ -406,48 +396,16 @@ msgid "Whole Words"
msgstr "Hele Woorden"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Alleen Selectie"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Zoeken"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Zoeken"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Volgende"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Niet gevonden!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Vervangen Door"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Hoofdlettergevoelig"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Achterwaarts"
+msgid "Replace"
+msgstr "Vervangen"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Vragen Bij Vervangen"
+msgid "Replace All"
+msgstr "Alle Vervangen"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Overslaan"
+msgid "Selection Only"
+msgstr "Alleen Selectie"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -549,9 +507,8 @@ msgid "Connecting Signal:"
msgstr "Signaal aan het Verbinden:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Verbind '%s' met '%s'"
+msgstr "Ontkoppel '%s' van '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -567,9 +524,17 @@ msgid "Signals"
msgstr "Signalen"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Wijzig %s Type"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Wijzig"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Nieuwe Maken"
+msgstr "Maake Nieuwe %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -682,8 +647,8 @@ msgstr ""
"Toch verwijderen? (Kan niet ongedaan worden.)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Niet wisbaar:\n"
+msgid "Cannot remove:"
+msgstr "Niet te verwijderen:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -765,9 +730,9 @@ msgstr "Projectoprichters"
msgid "Lead Developer"
msgstr "Hoofdontwikkelaar"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Project Manager "
#: editor/editor_about.cpp
msgid "Developers"
@@ -855,7 +820,7 @@ msgid "Success!"
msgstr "Succes!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installeer"
@@ -876,9 +841,8 @@ msgid "Rename Audio Bus"
msgstr "Hernoem audiobus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Verander audiobus solo"
+msgstr "Verander Audio Bus Volume"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -893,9 +857,8 @@ msgid "Toggle Audio Bus Bypass Effects"
msgstr "Verander audiobusomleiding"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Select Audio Bus Send"
-msgstr "Selecteer audiobus verzend"
+msgstr "Selecteer Audiobus Verzend"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
@@ -944,7 +907,7 @@ msgstr "Effect Verwijderen"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Audio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1123,11 +1086,11 @@ msgstr "Scene aan het updaten.."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[leeg]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[niet opgeslagen]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1167,8 +1130,8 @@ msgid "Packing"
msgstr "Inpakken"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Template bestand niet gevonden:\n"
+msgid "Template file not found:"
+msgstr "Template bestand niet gevonden:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1379,6 +1342,20 @@ msgid "Description"
msgstr "Beschrijving"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Online Documentatie:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Er is momenteel geen handleiding voor deze methode. Help ons alsjeblieft "
+"door [color=$color][url=$url]een toe te voegen[/url][/color] of [color="
+"$color][url=$url2]een aan te vragen[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Eigenschappen"
@@ -1414,6 +1391,10 @@ msgstr ""
msgid "Search Text"
msgstr "Zoek Tekst"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Zoeken"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Uitvoer:"
@@ -1425,6 +1406,10 @@ msgstr "Uitvoer:"
msgid "Clear"
msgstr "Leegmaken"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Maak Uitvoer Leeg"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Error bij het opslaan van resource!"
@@ -1433,8 +1418,8 @@ msgstr "Error bij het opslaan van resource!"
msgid "Save Resource As.."
msgstr "Resource Opslaan Als.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ik snap het.."
@@ -1488,10 +1473,11 @@ msgstr "Deze operatie kan niet gedaan worden zonder boomwortel."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Kon scene niet opslaan. Waarschijnlijk konden afhankelijkheden (instanties) "
-"niet voldaan worden."
+"Kon de scene niet opslaan. Waarschijnlijk konden afhankelijkheden "
+"(instanties of erfelijkheden) niet voldaan worden."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1581,14 +1567,12 @@ msgstr ""
"begrijpen."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand all properties"
-msgstr "Klap alles uit"
+msgstr "Klap alle eigenschappen uit"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Collapse all properties"
-msgstr "Klap alles in"
+msgstr "Klap alle eigenschappen in"
#: editor/editor_node.cpp
msgid "Copy Params"
@@ -1709,6 +1693,7 @@ msgid "Export Mesh Library"
msgstr "Exporteer Mesh Library"
#: editor/editor_node.cpp
+#, fuzzy
msgid "This operation can't be done without a root node."
msgstr "Deze bewerking is niet mogelijk zonder een hoofdknoop."
@@ -2108,6 +2093,13 @@ msgstr "Help"
msgid "Classes"
msgstr "Klassen"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Zoeken"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Online Documentatie"
@@ -2282,25 +2274,22 @@ msgid "Select"
msgstr "Selecteer"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Open 2D Editor"
+msgstr "Open 2D Bewerker"
#: editor/editor_node.cpp
msgid "Open 3D Editor"
msgstr "Open 3D Editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Open Script Editor"
+msgstr "Open Script Bewerker"
#: editor/editor_node.cpp editor/project_manager.cpp
msgid "Open Asset Library"
msgstr "Open Asset Bibliotheek"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
msgstr "Open de volgende Editor"
@@ -2383,14 +2372,12 @@ msgid "Frame #:"
msgstr "Frame #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Tijd:"
+msgstr "Tijd"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Aanroep"
+msgstr "Aanroepen"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2497,8 +2484,8 @@ 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:\n"
-msgstr "Fout bij het maken van een pad voor sjablonen:\n"
+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"
@@ -2533,9 +2520,8 @@ msgstr "Geen antwoord."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Aanv. Mislukt."
+msgstr "Aanvraag Mislukt."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2581,7 +2567,6 @@ msgid "Connecting.."
msgstr "Verbinden.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Kan niet verbinden"
@@ -2659,34 +2644,30 @@ msgid "View items as a list"
msgstr "Bekijk objecten als een lijst"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Status: Importeren van bestand mislukt. Repareer het bestand en importeer "
-"handmatig opnieuw."
+"opnieuw handmatig."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "Kan de hoofdmap voor resources niet verplaatsen of hernoemen."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Het is niet mogelijk om een map in zichzelf te stoppen.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Het is niet mogelijk om een map in zichzelf te verplaatsen."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Fout bij het verplaatsen:\n"
+msgid "Error moving:"
+msgstr "Fout bij het verplaatsen:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Error bij het laden van:"
+msgid "Error duplicating:"
+msgstr "Fout bij het dupliceren:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Kon afhankelijkheden niet verversen:\n"
+msgid "Unable to update dependencies:"
+msgstr "Kon afhankelijkheden niet updaten:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2717,22 +2698,18 @@ msgid "Renaming folder:"
msgstr "Hernoemen folder:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Dupliceren"
+msgstr "Bestand dupliceren:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Hernoemen folder:"
+msgstr "Folder dupliceren:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Expand all"
msgstr "Klap alles uit"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Collapse all"
msgstr "Klap alles in"
@@ -2745,9 +2722,8 @@ msgid "Move To.."
msgstr "Verplaats Naar.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Scene Openen"
+msgstr "Scene(s) Openen"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2762,9 +2738,8 @@ msgid "View Owners.."
msgstr "Bekijk eigenaren.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Dupliceren"
+msgstr "Dupliceren.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2864,11 +2839,11 @@ msgstr "Scene Importeren.."
#: editor/import/resource_importer_scene.cpp
msgid "Generating Lightmaps"
-msgstr ""
+msgstr "Bouw Lightmappen"
#: editor/import/resource_importer_scene.cpp
msgid "Generating for Mesh: "
-msgstr ""
+msgstr "Bouw voor Mesh: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3097,7 +3072,6 @@ msgid "Save the current animation"
msgstr "Sla de huidige animatie op"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Display list of animations in player."
msgstr "Geef lijst van animaties weer in speler."
@@ -3107,7 +3081,7 @@ msgstr "Automatisch afspelen bij laden"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Target Blend Times"
-msgstr ""
+msgstr "Bewerk Doel Mengtijden"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Tools"
@@ -3119,7 +3093,7 @@ msgstr "Kopieer Animatie"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Onion Skinning"
-msgstr ""
+msgstr "Ui Schillen"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
@@ -3161,7 +3135,7 @@ msgstr "Alleen verschillen"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
-msgstr ""
+msgstr "Forceer Witte Modulatie"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
@@ -3233,14 +3207,12 @@ msgid "Auto Restart:"
msgstr "Automatische herstart:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Restart (s):"
-msgstr "Herstart (en):"
+msgstr "Herstarten (s):"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Random Restart (s):"
-msgstr "Willekeurige herstart (en):"
+msgstr "Willekeurige Herstart (s):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Start!"
@@ -3257,15 +3229,15 @@ msgstr "Mengen"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend 0:"
-msgstr ""
+msgstr "Meng 0:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend 1:"
-msgstr ""
+msgstr "Meng 1:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "X-Fade Time (s):"
-msgstr ""
+msgstr "X-Fade Tijd (en):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Current:"
@@ -3277,11 +3249,11 @@ msgstr "Voeg invoer toe"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Clear Auto-Advance"
-msgstr ""
+msgstr "Verwijder Automatische Voortgang."
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Set Auto-Advance"
-msgstr ""
+msgstr "Automatische voortgang instellen"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Delete Input"
@@ -3301,35 +3273,35 @@ msgstr "Animatie Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "OneShot Node"
-msgstr ""
+msgstr "OneShot Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Mix Node"
-msgstr ""
+msgstr "Mix Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend2 Node"
-msgstr ""
+msgstr "Blend2 Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend3 Node"
-msgstr ""
+msgstr "Blend3 Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend4 Node"
-msgstr ""
+msgstr "Blend4 Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeScale Node"
-msgstr ""
+msgstr "TimeScale Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeSeek Node"
-msgstr ""
+msgstr "TimeSeek Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Transition Node"
-msgstr ""
+msgstr "Transition Node"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
@@ -3341,7 +3313,11 @@ msgstr "Wijzig Node Filters"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Filters.."
-msgstr ""
+msgstr "Filters..."
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimatieBoom"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
@@ -3413,7 +3389,7 @@ msgstr "Fout bij opvragen"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Idle"
-msgstr ""
+msgstr "Inactief"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Retry"
@@ -3451,7 +3427,7 @@ msgstr "Alle"
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_settings_editor.cpp
msgid "Plugins"
-msgstr ""
+msgstr "Plugins"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Sort:"
@@ -3493,58 +3469,66 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Kan geen opslag pad voor de lichtmappen bepalen.\n"
+"Sla jouw scène op (om lichtmappen op te slaan in dezelfde map) of kies een "
+"opslag pad vanaf de BakedLightmap eigenschappen."
#: 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 ""
+"Geen meshes om te bakken. Zorg ervoor dat ze een UV2 kanaal bevatten en dat "
+"'Bake Light' vlag aan staat."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Creëren van lichtmap afbeeldingen mislukt, zorg ervoor dat het pad "
+"schrijfbaar is."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr ""
+msgstr "Bak Lichtmappen"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Voorbeeld"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap"
-msgstr ""
+msgstr "Configureer Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Offset:"
-msgstr ""
+msgstr "Raster Verplaatsing:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Step:"
-msgstr ""
+msgstr "Raster Stap:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Offset:"
-msgstr ""
+msgstr "Rotatie Verplaatsing:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Step:"
-msgstr ""
+msgstr "Rotatie Stap:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Pivot"
-msgstr ""
+msgstr "Verplaats Draaipunt"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Action"
-msgstr ""
+msgstr "Verplaats Actie"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move vertical guide"
-msgstr ""
+msgstr "Verplaats vertical gids"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Create new vertical guide"
@@ -3572,7 +3556,7 @@ msgstr "Maak nieuwe horizontale en verticale gidsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Edit IK Chain"
-msgstr ""
+msgstr "Bewerk IK Ketting"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Edit CanvasItem"
@@ -3592,7 +3576,7 @@ msgstr "Wijzig Ankers"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
-msgstr ""
+msgstr "Plak Houding"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Select Mode"
@@ -3600,7 +3584,7 @@ msgstr "Selecteer Modus"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
-msgstr ""
+msgstr "Sleep: Roteer"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+Drag: Move"
@@ -3609,6 +3593,8 @@ msgstr "Alt + Slepen : Verplaatsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
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)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+RMB: Depth list selection"
@@ -3633,11 +3619,11 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
-msgstr ""
+msgstr "Klik om het draaipunt van het object aan te passen."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan Mode"
-msgstr ""
+msgstr "Verschuif Modus"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -3646,11 +3632,11 @@ msgstr "Breekpunt Aan- of Uitschakelen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Snap"
-msgstr ""
+msgstr "Gebruik Uitlijnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snapping options"
-msgstr ""
+msgstr "Uitlijnen opties"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to grid"
@@ -3662,35 +3648,38 @@ msgstr "Gebruik Rotatie Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap..."
-msgstr ""
+msgstr "Configureer Uitlijnen..."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap Relative"
-msgstr ""
+msgstr "Uitlijn Relatief"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Pixel Snap"
-msgstr ""
+msgstr "Gebruik Pixel Uitlijnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Smart snapping"
msgstr "Slim Uitlijnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap to parent"
-msgstr ""
+msgstr "Uitlijnen naar ouder"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
msgid "Snap to node anchor"
-msgstr ""
+msgstr "Uitlijnen naar node anker"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node sides"
-msgstr ""
+msgstr "Uitlijnen naar node zijden"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to other nodes"
-msgstr ""
+msgstr "Uitlijnen naar andere nodes"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to guides"
@@ -3710,30 +3699,33 @@ msgstr "Ontgrendel het geselecteerde object (kan verplaatst worden)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Makes sure the object's children are not selectable."
msgstr ""
+"Zorgt ervoor dat de kinderen van dit object niet geselecteerd kunnen worden."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Restores the object's children's ability to be selected."
msgstr ""
+"Herstelt de mogelijkheid van selecteerbaarheid bij de kinderen van het "
+"object."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
-msgstr ""
+msgstr "Maak Botten"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Bones"
-msgstr ""
+msgstr "Maak Botten Leeg"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
-msgstr ""
+msgstr "Laat Botten Zien"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make IK Chain"
-msgstr ""
+msgstr "Maak IK Ketting"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear IK Chain"
-msgstr ""
+msgstr "Maak IK Ketting Leeg"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3759,39 +3751,39 @@ msgstr "Toon hulplijnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
-msgstr ""
+msgstr "Centreer Selectie"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Frame Selection"
-msgstr ""
+msgstr "Raam Selectie"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
-msgstr ""
+msgstr "Indeling"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
-msgstr ""
+msgstr "Voer Sleutels In"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr ""
+msgstr "Voer Sleutel in"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr ""
+msgstr "Voeg Sleutel in (Bestaande Banen)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
-msgstr ""
+msgstr "Kopieer Houding"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Pose"
-msgstr ""
+msgstr "Maak Houding Leeg"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag pivot from mouse position"
-msgstr ""
+msgstr "Versleep draaipunt vanaf muispositie"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -3800,19 +3792,27 @@ msgstr "Verwijder Signaal"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
-msgstr ""
+msgstr "Vermenigvuldig rasterstap met 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Divide grid step by 2"
-msgstr ""
+msgstr "Deel rasterstap door 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
-msgstr ""
+msgstr "Voeg %s Toe"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Adding %s..."
-msgstr ""
+msgstr "%s aan het toevoegen..."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Oké"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Kan niet meerdere knooppunten instantiëren zonder een wortel."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -3822,12 +3822,7 @@ msgstr "Creëer Node"
#: 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 ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr ""
+msgstr "Er is iets misgegaan bij het instantiëren van scene vanaf %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
@@ -3838,6 +3833,8 @@ msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
+"Sleep & laat los + Shift : voeg knooppunt toe als kind\n"
+"Sleep & laat los + Alt : Verander node type"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
@@ -3845,7 +3842,7 @@ msgstr "Maak Poly3D"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
-msgstr ""
+msgstr "Stel Handgreep In"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
@@ -3863,19 +3860,19 @@ msgstr "Verwijder Geselecteerde Item"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import from Scene"
-msgstr ""
+msgstr "Importeer vanaf de Scene"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Update from Scene"
-msgstr ""
+msgstr "Werk bij vanaf de Scene"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat0"
-msgstr ""
+msgstr "Plat0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat1"
-msgstr ""
+msgstr "Plat1"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
@@ -3884,23 +3881,23 @@ msgstr "Schaal Selectie"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease out"
-msgstr ""
+msgstr "Neem af naar buiten"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Smoothstep"
-msgstr ""
+msgstr "Gelijke stap"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr ""
+msgstr "Wijzig Curve Punt"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr ""
+msgstr "Wijzig Curve Raaklijn"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Curve Preset"
-msgstr ""
+msgstr "Laad Curve Preset"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -3917,11 +3914,11 @@ msgstr "Lineair"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Right linear"
-msgstr ""
+msgstr "Rechtslijnig"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr ""
+msgstr "Laad voorinstelling"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
@@ -3930,98 +3927,108 @@ msgstr "Verwijder Signaal"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Schakel Curve Lineaire Raaklijn"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Houd Shift ingedrukt om de raaklijnen individueel te bewerken"
#: editor/plugins/gi_probe_editor_plugin.cpp
+#, fuzzy
msgid "Bake GI Probe"
-msgstr ""
+msgstr "Bak GI Probe"
#: editor/plugins/gradient_editor_plugin.cpp
+#, fuzzy
msgid "Add/Remove Color Ramp Point"
-msgstr ""
+msgstr "Verwijder/Voeg Kleuren Hellings Punt Toe"
#: editor/plugins/gradient_editor_plugin.cpp
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Modify Color Ramp"
-msgstr ""
+msgstr "Wijzig Kleuren Helling"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
-msgstr ""
+msgstr "Item %d"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Items"
-msgstr ""
+msgstr "Items"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item List Editor"
-msgstr ""
+msgstr "Item Lijst Editor"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Geen OccluderPolygon2D resource op deze node.\n"
+"Creëer en wijs een toe?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
-msgstr ""
+msgstr "Creëer Occluder Polygon"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create a new polygon from scratch."
-msgstr ""
+msgstr "Creëer een compleet nieuwe polygon."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Edit existing polygon:"
-msgstr ""
+msgstr "Wijzig bestaande polygon:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "LMB: Move Point."
-msgstr ""
+msgstr "LMB: Verplaats Punt."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
-msgstr ""
+msgstr "Ctrl+LMB: Splits Segment."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "RMB: Erase Point."
-msgstr ""
+msgstr "RMB: Verwijder Punt."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
-msgstr ""
+msgstr "Mesh is leeg!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Static Trimesh Body"
-msgstr ""
+msgstr "Creëer Statisch Trimesh Lichaam"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Static Convex Body"
-msgstr ""
+msgstr "Creëer Statisch Convex Lichaam"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "This doesn't work on scene root!"
-msgstr ""
+msgstr "Dit werkt niet op scene root!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Trimesh Shape"
-msgstr ""
+msgstr "Creëer Trimesh Vorm"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Convex Shape"
-msgstr ""
+msgstr "Creëer Convexe Vorm"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr ""
+msgstr "Creëer Navigatie Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Bevatte Mesh is niet van type ArrayMesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
@@ -4032,110 +4039,117 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Model heeft geen UV in deze laag"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "MeshInstance ontbreekt een Mesh!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "Mesh heeft geen oppervlakte om omlijning van te maken!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
-msgstr ""
+msgstr "Kon omlijning niet maken!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline"
-msgstr ""
+msgstr "Creëer Omlijning"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
-msgstr ""
+msgstr "Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "Creëer Trimesh Statisch Lichaam"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "Creëer Convex Statisch Lichaam"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "Creëer Trimesh Botsings Broer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Convex Collision Sibling"
-msgstr ""
+msgstr "Creëer Convex Botsings Broer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Outline Mesh.."
-msgstr ""
+msgstr "Creëer Omlijning Mesh.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Weergeven"
+msgstr "Geef UV1 Weer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Weergeven"
+msgstr "Geef UV2 Weer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "Creëer Omlijning Mesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Outline Size:"
-msgstr ""
+msgstr "Omlijning Grootte:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
+msgstr "Geen mesh bron gespecificeerd (en geen MultiMesh ingesteld in node)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
+msgstr "Geen mesh bron gespecificeerd (en MultiMesh bevat geen Mesh)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
-msgstr ""
+msgstr "Mesh bron is ongeldig (ongeldig pad)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
+msgstr "Mesh bron is ongeldig (niet een MeshInstance)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
+msgstr "Mesh bron is ongeldig (bevat geen Mesh resource)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
-msgstr ""
+msgstr "Geen oppervlakte bron gespecificeerd."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (invalid path)."
-msgstr ""
+msgstr "Oppervlakte bron is ongeldig (ongeldig pad)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no geometry)."
-msgstr ""
+msgstr "Oppervlakte bron is ongeldig (geen geometrie)."
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Surface source is invalid (no faces)."
-msgstr ""
+msgstr "Oppervlakte bron is ongeldig (geen vlakken)."
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Parent has no solid faces to populate."
-msgstr ""
+msgstr "Ouder heeft geen vaste vlakken om te bevolken."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Couldn't map area."
@@ -4143,11 +4157,11 @@ msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Source Mesh:"
-msgstr ""
+msgstr "Selecteer een Bron Mesh:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Target Surface:"
-msgstr ""
+msgstr "Selecteer een Doel Oppervlakte:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate Surface"
@@ -4159,67 +4173,67 @@ msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
-msgstr ""
+msgstr "Doel Oppervlakte:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr ""
+msgstr "Bron Mesh:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
-msgstr ""
+msgstr "X-As"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Y-Axis"
-msgstr ""
+msgstr "Y-As"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Z-Axis"
-msgstr ""
+msgstr "Z-As"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr ""
+msgstr "Mesh Boven As:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
-msgstr ""
+msgstr "Willekeurige Rotatie:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Tilt:"
-msgstr ""
+msgstr "Willekeurige Tilt:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Scale:"
-msgstr ""
+msgstr "Willekeurige Schaal:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate"
-msgstr ""
+msgstr "Bevolken"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr ""
+msgstr "Bakken!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr ""
+msgid "Bake the navigation mesh."
+msgstr "Bak de navigatie mesh."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr ""
+msgstr "Leeg de navigatie mesh."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
-msgstr ""
+msgstr "Configuratie aan het instellen..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Calculating grid size..."
-msgstr ""
+msgstr "Raster groote uitrekenen..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating heightfield..."
-msgstr ""
+msgstr "Hoogteveld aan het creëeren..."
#: editor/plugins/navigation_mesh_generator.cpp
#, fuzzy
@@ -4227,8 +4241,9 @@ msgid "Marking walkable triangles..."
msgstr "Lokale wijziging aan het opslaan.."
#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
msgid "Constructing compact heightfield..."
-msgstr ""
+msgstr "Compact hoogteveld aan het bouwen..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Eroding walkable area..."
@@ -4236,15 +4251,15 @@ msgstr ""
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Partitioning..."
-msgstr ""
+msgstr "Partitioneren..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating contours..."
-msgstr ""
+msgstr "Contouren aan het creëeren..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating polymesh..."
-msgstr ""
+msgstr "Polymesh aan het creëeren..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
@@ -4260,16 +4275,16 @@ msgstr ""
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Done!"
-msgstr ""
+msgstr "Klaar!"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr ""
+msgstr "Creëer Navigatie Polygoon"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
-msgstr ""
+msgstr "AABB Genereren"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -4596,14 +4611,17 @@ msgstr ""
msgid "Paste"
msgstr "Plakken"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Resource"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4681,6 +4699,11 @@ msgid "Copy Script Path"
msgstr "Kopieer Pad"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Weergeven in Bestandsbeheer"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5119,85 +5142,85 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
+#, fuzzy
+msgid "Material Changes"
+msgstr "Lokale wijziging aan het opslaan.."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Wijzig"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "Lokale wijziging aan het opslaan.."
+msgid "Right View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Wijzig"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5212,6 +5235,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5291,17 +5318,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "Preview:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Selecteer Modus"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5579,10 +5602,18 @@ msgstr "Kopiëer Nodes"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5608,14 +5639,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5755,6 +5789,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5858,6 +5896,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "De bewerkte bron opslaan."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Annuleren"
@@ -5971,9 +6034,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5985,6 +6046,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Map kon niet gemaakt worden."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -6026,14 +6096,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Importeren"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Creëer Node"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "Installeer"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -6051,10 +6136,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6101,6 +6182,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Project Manager"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6229,11 +6314,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Wijzig"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6619,10 +6699,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6708,7 +6784,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "Resource"
#: editor/scene_tree_dock.cpp
@@ -7013,7 +7089,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -7022,6 +7098,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Laadfouten"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7375,10 +7456,55 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Mislukt om resource te laden."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Mislukt om resource te laden."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Mislukt om resource te laden."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Subscriptie Maken"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Project"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7758,27 +7884,32 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "Map kon niet gemaakt worden."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "Map kon niet gemaakt worden."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Ongeldige index eigenschap naam."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr "Map kon niet gemaakt worden."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Map kon niet gemaakt worden."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "Map kon niet gemaakt worden."
#: scene/2d/animated_sprite.cpp
@@ -7798,6 +7929,13 @@ msgstr ""
"geïnstantieerde scenes). De eerst gemaakte zal werken, terwijl de rest "
"genegeerd wordt."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7888,7 +8026,7 @@ msgstr "PathFollow2D werkt alleen wanneer het een kind van een Path2D node is."
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7950,6 +8088,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8007,8 +8152,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8081,9 +8226,10 @@ msgid "(Other)"
msgstr "(Andere)"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Standaard Omgeving gespecificeerd in Project Instellingen (Rendering -> "
"Viewport -> Standaard Omgeving) kan niet worden geladen."
@@ -8116,12 +8262,33 @@ msgstr "Fout bij het laden van lettertype."
msgid "Invalid font size."
msgstr "Ongeldige lettertype grootte."
-#~ msgid "Move Add Key"
-#~ msgstr "Verplaats Key Toevoegen"
+#~ msgid "Next"
+#~ msgstr "Volgende"
+
+#~ msgid "Not found!"
+#~ msgstr "Niet gevonden!"
+
+#~ msgid "Replace By"
+#~ msgstr "Vervangen Door"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Hoofdlettergevoelig"
+
+#~ msgid "Backwards"
+#~ msgstr "Achterwaarts"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Vragen Bij Vervangen"
+
+#~ msgid "Skip"
+#~ msgstr "Overslaan"
#, fuzzy
-#~ msgid "Create Subscription"
-#~ msgstr "Subscriptie Maken"
+#~ msgid "preview"
+#~ msgstr "Preview:"
+
+#~ msgid "Move Add Key"
+#~ msgstr "Verplaats Key Toevoegen"
#~ msgid "List:"
#~ msgstr "Lijst:"
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index cc543c97bb..f5b08d11c1 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -7,14 +7,15 @@
# Adam Wolanski <adam.wolanski94@gmail.com>, 2017.
# Adrian Węcławski <weclawskiadrian@gmail.com>, 2016.
# aelspire <aelspire@gmail.com>, 2017.
-# Daniel Lewan <vision360.daniel@gmail.com>, 2016-2017.
+# Daniel Lewan <vision360.daniel@gmail.com>, 2016-2018.
# heya10 <igor.gielzak@gmail.com>, 2017.
# holistyczny interlokutor <jakubowesmieci@gmail.com>, 2017.
# Kajetan Kuszczyński <kajetanek99@gmail.com>, 2016.
# Kamil Lewan <lewan.kamil@gmail.com>, 2016.
# Karol Walasek <coreconviction@gmail.com>, 2016.
-# Maksymilian Świąć <maksymilian.swiac@gmail.com>, 2017.
+# Maksymilian Świąć <maksymilian.swiac@gmail.com>, 2017-2018.
# Mietek Szcześniak <ravaging@go2.pl>, 2016.
+# NeverK <neverkoxu@gmail.com>, 2018.
# Rafal Brozio <rafal.brozio@gmail.com>, 2016.
# Rafał Ziemniak <synaptykq@gmail.com>, 2017.
# Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017.
@@ -25,8 +26,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
-"Last-Translator: Rafał Ziemniak <synaptykq@gmail.com>\n"
+"PO-Revision-Date: 2018-01-22 08:08+0000\n"
+"Last-Translator: Maksymilian Świąć <maksymilian.swiac@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
@@ -34,7 +35,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -45,9 +46,8 @@ msgid "All Selection"
msgstr "Wszystkie zaznaczenia"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Zmień wartość"
+msgstr "Zmień czas klatki kluczowej"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -58,9 +58,8 @@ msgid "Anim Change Transform"
msgstr "Animacja transformacji"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Zmień wartość"
+msgstr "Zmień wartość klatki kluczowej"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -103,6 +102,7 @@ msgid "Anim Track Change Value Mode"
msgstr "Zmień tryb wartości animacji"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Anim Track Change Wrap Mode"
msgstr "Ścieżka Animacji - Zmień Tryb Zawijania"
@@ -216,8 +216,7 @@ msgstr "Utworzyć NOWĄ ścieżkę i dodać klatkę kluczową?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Utwórz"
@@ -391,15 +390,7 @@ msgstr "Nie znaleziono"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
-msgstr "Zamieniono %d wystąpień."
-
-#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "ZastÄ…p"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "ZastÄ…p wszystkie"
+msgstr "Zastąpiono %d wystąpień."
#: editor/code_editor.cpp
msgid "Match Case"
@@ -410,48 +401,16 @@ msgid "Whole Words"
msgstr "Całe słowa"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Tylko zaznaczenie"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Szukaj"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Szukaj"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Następny"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Nie znaleziono!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "ZastÄ…p przez"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Z uwzględnieniem wielkości liter"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Wstecz"
+msgid "Replace"
+msgstr "ZastÄ…p"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Zaptytaj przy zastÄ…pieniu"
+msgid "Replace All"
+msgstr "ZastÄ…p wszystkie"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Pomiń"
+msgid "Selection Only"
+msgstr "Tylko zaznaczenie"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -553,9 +512,8 @@ msgid "Connecting Signal:"
msgstr "Połączony sygnał:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Połącz '%s' z '%s'"
+msgstr "Rozłącz '%s' z '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -571,9 +529,17 @@ msgid "Signals"
msgstr "Sygnały"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Zmień typ %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Zmień"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Utwórz nowy"
+msgstr "Utwórz nowy %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -683,8 +649,8 @@ msgstr ""
"Usunąć mimo to? (Nie można tego cofnąć)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Nie można usunąć:\n"
+msgid "Cannot remove:"
+msgstr "Nie można usunąć:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -739,14 +705,12 @@ msgid "Delete"
msgstr "Usuń"
#: editor/dictionary_property_edit.cpp
-#, fuzzy
msgid "Change Dictionary Key"
-msgstr "Zmień Klawisz Tablicy"
+msgstr "Zmień klucz tablicy"
#: editor/dictionary_property_edit.cpp
-#, fuzzy
msgid "Change Dictionary Value"
-msgstr "Zmień Wartość Tablicy"
+msgstr "Zmień wartość słownika"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
@@ -768,9 +732,9 @@ msgstr "Założyciele projektu"
msgid "Lead Developer"
msgstr "Deweloper naczelny"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Menedżer projektów"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Menedżer projektu "
#: editor/editor_about.cpp
msgid "Developers"
@@ -858,7 +822,7 @@ msgid "Success!"
msgstr "Sukces!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Zainstaluj"
@@ -879,9 +843,8 @@ msgid "Rename Audio Bus"
msgstr "Zmień nazwę magistrali audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Przełącz tryb solo magistrali audio"
+msgstr "Zmień głośność magistrali audio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -892,9 +855,8 @@ msgid "Toggle Audio Bus Mute"
msgstr "Przełącz wyciszenie magistrali audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Bypass Effects"
-msgstr "Przełącz pominięcie efektu magistrali audio"
+msgstr "Przełącz ominięcie efektów w magistrali audio"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
@@ -947,7 +909,7 @@ msgstr "Usuń efekt"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Dźwięk"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1073,9 +1035,8 @@ msgid "Rename Autoload"
msgstr "Zmień nazwę Autoload"
#: editor/editor_autoload_settings.cpp
-#, fuzzy
msgid "Toggle AutoLoad Globals"
-msgstr "Przełącz zmienne globalne w AutoLoad"
+msgstr "Przełącz automatycznie ładowane zmienne globalne"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
@@ -1124,13 +1085,12 @@ msgid "Updating scene.."
msgstr "Aktualizacja sceny .."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(pusty)"
+msgstr "[pusty]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[niezapisany]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1170,17 +1130,16 @@ msgid "Packing"
msgstr "Pakowanie"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Nie znaleziono pliku szablonu:\n"
+msgid "Template file not found:"
+msgstr "Nie znaleziono pliku szablonu:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Plik istnieje, nadpisać?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select Current Folder"
-msgstr "Utwórz katalog"
+msgstr "Wybierz bieżący katalog"
#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
msgid "Copy Path"
@@ -1304,7 +1263,7 @@ msgstr "Wyszukaj w Pomocy"
#: editor/editor_help.cpp
msgid "Class List:"
-msgstr "List klas:"
+msgstr "Lista klas:"
#: editor/editor_help.cpp
msgid "Search Classes"
@@ -1348,7 +1307,7 @@ msgstr "Metody publiczne:"
#: editor/editor_help.cpp
msgid "GUI Theme Items"
-msgstr "Elementy motywu interfejsu:"
+msgstr "Elementy motywu interfejsu"
#: editor/editor_help.cpp
msgid "GUI Theme Items:"
@@ -1383,6 +1342,21 @@ msgid "Description"
msgstr "Opis"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Poradniki"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Obecnie nie ma opisu dla tej metody. Pomóż nam, [color=$color][url="
+"$url]wysyłając ją[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Właściwości"
@@ -1418,6 +1392,10 @@ msgstr ""
msgid "Search Text"
msgstr "Wyszukaj w tekście"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Szukaj"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Wyjście:"
@@ -1429,6 +1407,10 @@ msgstr "Wyjście:"
msgid "Clear"
msgstr "Wyczyść"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Wyczyść dane wyjściowe"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Błąd podczas zapisu zasobu!"
@@ -1437,8 +1419,8 @@ msgstr "Błąd podczas zapisu zasobu!"
msgid "Save Resource As.."
msgstr "Zapisz zasób jako..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "WidzÄ™.."
@@ -1476,7 +1458,7 @@ msgstr "Błąd ładowania '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr "Zapisywanie Sceny"
+msgstr "Zapisywanie sceny"
#: editor/editor_node.cpp
msgid "Analyzing"
@@ -1484,7 +1466,7 @@ msgstr "Analizowanie"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr "Tworzenie Miniatury"
+msgstr "Tworzenie miniatury"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
@@ -1492,10 +1474,11 @@ msgstr "Ta operacja nie może zostać wykonana bez sceny."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Nie udało się zapisać sceny. Najprawdopodobniej pewne zależności nie są "
-"spełnione."
+"Nie udało się zapisać sceny. Najprawdopodobniej pewne zależności "
+"(instancjonowanie lub dziedziczenie) nie są spełnione."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1584,14 +1567,12 @@ msgstr ""
"pracy."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand all properties"
-msgstr "Rozwiń foldery"
+msgstr "Rozwiń wszystkie właściwości"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Collapse all properties"
-msgstr "Zwiń foldery"
+msgstr "Zwiń wszystkie właściwości"
#: editor/editor_node.cpp
msgid "Copy Params"
@@ -1610,7 +1591,6 @@ msgid "Copy Resource"
msgstr "Kopiuj zasób"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Make Built-In"
msgstr "Skrypt wbudowany"
@@ -1794,7 +1774,6 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "Nie można załadować skryptu dodatku z ścieżki: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
@@ -1900,9 +1879,8 @@ msgid "Previous tab"
msgstr "Poprzednia zakładka"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Filter Files.."
-msgstr "Szybkie filtry plików.."
+msgstr "Filtrowanie plików..."
#: editor/editor_node.cpp
msgid "Operations with scene files."
@@ -1963,9 +1941,8 @@ msgid "Revert Scene"
msgstr "Resetuj scenÄ™"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Miscellaneous project or scene-wide tools."
-msgstr "Różne projekty lub narzędzia dla scen."
+msgstr "Różne narzędzia dla scen lub projektu."
#: editor/editor_node.cpp
msgid "Project"
@@ -2107,6 +2084,13 @@ msgstr "Pomoc"
msgid "Classes"
msgstr "Klasy"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Szukaj"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Dokumentacja online"
@@ -2145,7 +2129,7 @@ msgstr "Zapauzuj scenÄ™"
#: editor/editor_node.cpp
msgid "Stop the scene."
-msgstr "Zatrzymaj scene."
+msgstr "Zatrzymaj scenÄ™."
#: editor/editor_node.cpp
msgid "Stop"
@@ -2157,7 +2141,7 @@ msgstr "Uruchom aktualnie edytowanÄ… scenÄ™."
#: editor/editor_node.cpp
msgid "Play Scene"
-msgstr "Odtwórz Scene"
+msgstr "Odtwórz scenę"
#: editor/editor_node.cpp
msgid "Play custom scene"
@@ -2355,12 +2339,11 @@ msgstr "Åšredni Czas (sek)"
#: editor/editor_profiler.cpp
msgid "Frame %"
-msgstr "% Ramek"
+msgstr "Klatka %"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Physics Frame %"
-msgstr "% Ramek Fixed"
+msgstr "Klatki Fizyki %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
msgid "Time:"
@@ -2379,27 +2362,25 @@ msgid "Frame #:"
msgstr "Klatka #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Czas:"
+msgstr "Czas"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Wywołanie"
+msgstr "Wywołania"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr "Wybierz urzÄ…dzenie z listy"
#: editor/editor_run_native.cpp
-#, fuzzy
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
-"Nie znaleziono uruchamianej konfiguracji eksportu dla tej platformy.\n"
-"Dodaj konfiguracjÄ™ z menu eksportu."
+"Nie znaleziono możliwej do uruchomienia konfiguracji eksportu dla tej "
+"platformy.\n"
+"Dodaj poprawnÄ… konfiguracjÄ™ z menu eksportu."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2494,8 +2475,8 @@ 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:\n"
-msgstr "Błąd tworzenia ścieżki dla szablonów:\n"
+msgid "Error creating path for templates:"
+msgstr "Błąd tworzenia ścieżki dla szablonów:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2530,7 +2511,6 @@ msgstr "Brak odpowiedzi."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Żądanie nie powiodło się."
@@ -2565,7 +2545,6 @@ msgid "Disconnected"
msgstr "Rozłączono"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Resolving"
msgstr "RozwiÄ…zywanie"
@@ -2579,7 +2558,6 @@ msgid "Connecting.."
msgstr "ÅÄ…czenie.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Nie można połączyć"
@@ -2655,11 +2633,8 @@ msgid "View items as a list"
msgstr "Wyświetlanie elementów jako listę"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Status: Importowanie pliku nie powiodło się. Proszę naprawić plik i ponownie "
"zaimportować ręcznie."
@@ -2668,21 +2643,20 @@ msgid "Cannot move/rename resources root."
msgstr "Nie można przenieść/zmienić nazwy źródłowego zasobu."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Nie można przenieść katalogu do siebie samego.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Nie można przenieść katalogu do siebie samego."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Błąd przenoszenia:\n"
+msgid "Error moving:"
+msgstr "Błąd przenoszenia:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Błąd ładowania:"
+msgid "Error duplicating:"
+msgstr "Błąd duplikacji:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Nie można zaktualizować zależności:\n"
+msgid "Unable to update dependencies:"
+msgstr "Nie można zaktualizować zależności:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2713,14 +2687,12 @@ msgid "Renaming folder:"
msgstr "Zmiana nazwy folderu:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplikuj"
+msgstr "Duplikowanie pliku:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Zmiana nazwy folderu:"
+msgstr "Duplikowanie Folderu:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2739,9 +2711,8 @@ msgid "Move To.."
msgstr "PrzenieÅ› Do..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Otwórz scenę"
+msgstr "Otwórz Scenę/y"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2756,9 +2727,8 @@ msgid "View Owners.."
msgstr "Pokaż właścicieli.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplikuj"
+msgstr "Duplikuj.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2826,9 +2796,8 @@ msgid "Import with Separate Objects+Materials"
msgstr "Zaimportuj osobno Obiekty+Materiały"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import with Separate Objects+Animations"
-msgstr "Import z oddzielnymi obiektami i animacjami"
+msgstr "Importuj oddzielnie obiekty i animacje"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials+Animations"
@@ -2856,14 +2825,12 @@ msgid "Importing Scene.."
msgstr "Importowanie Sceny.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Generowanie AABB"
+msgstr "Generowanie Lightmapy"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Generowanie AABB"
+msgstr "Generowanie dla siatki: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3129,18 +3096,16 @@ msgid "Directions"
msgstr "Kategorie:"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Past"
-msgstr "Wklej"
+msgstr "Poprzednie"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Future"
-msgstr "Funkcje"
+msgstr "Następne"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Depth"
-msgstr "Głębokość"
+msgstr "Głębia"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "1 step"
@@ -3164,7 +3129,6 @@ msgid "Force White Modulate"
msgstr "Wymuś Białe Cieniowanie"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Include Gizmos (3D)"
msgstr "Dołącz Gizmo (3D)"
@@ -3205,9 +3169,8 @@ msgid "New name:"
msgstr "Nowa nazwa:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Edytuj filtry węzłów"
+msgstr "Edytuj filtry"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3228,7 +3191,7 @@ msgstr "Mieszanie"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Mix"
-msgstr "Mix"
+msgstr "Miks"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Auto Restart:"
@@ -3345,6 +3308,10 @@ msgstr "Edytuj filtry węzłów"
msgid "Filters.."
msgstr "Filtry.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "Drzewo animacji"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Darmowy"
@@ -3358,7 +3325,6 @@ msgid "View Files"
msgstr "Pokaż pliki"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Can't resolve hostname:"
msgstr "Nie udało się odnaleźć hosta:"
@@ -3396,7 +3362,6 @@ msgid "Got:"
msgstr "Otrzymano:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Failed sha256 hash check"
msgstr "Nie udało się przeprowadzić testu integralności sha256"
@@ -3409,7 +3374,6 @@ msgid "Fetching:"
msgstr "Pobieranie:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Resolving.."
msgstr "RozwiÄ…zywanie..."
@@ -3499,23 +3463,31 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Nie można określić ścieżki zapisu dla lightmapy obrazu.\n"
+"Zapisz scenę (obrazy będą zapisane w tym samym katalogu), lub przepisz "
+"ścieżkę zapisu z właściwości BakedLightmap."
#: 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 ""
+"Brak siatek do cieniowania. Upewnij się, że zawierają kanał UV2 i że flaga "
+"'Bake Light' jest ustawiona."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Błąd przy tworzeniu ligtmapy, upewnij się że ścieżka nie jest ustawiona "
+"jedynie do odczytu."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Zmień promień światła"
+msgstr "Wypal Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "PodglÄ…d"
@@ -3682,7 +3654,6 @@ msgid "Use Pixel Snap"
msgstr "Użyj krokowania na poziomie pikseli"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Smart snapping"
msgstr "Inteligentne przyciÄ…ganie"
@@ -3692,11 +3663,11 @@ msgstr "PrzyciÄ…gaj do rodzica"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node anchor"
-msgstr ""
+msgstr "Przyciągaj do kotwicy węzła"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node sides"
-msgstr ""
+msgstr "Przyciągaj do boków węzła"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to other nodes"
@@ -3800,7 +3771,7 @@ msgstr "Wyczyść Pozę"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag pivot from mouse position"
-msgstr ""
+msgstr "PrzeciÄ…gnij oÅ› z pozycji myszy"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Set pivot at mouse position"
@@ -3822,6 +3793,14 @@ msgstr "Dodaj %s"
msgid "Adding %s..."
msgstr "Dodawanie %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3833,11 +3812,6 @@ msgid "Error instancing scene from %s"
msgstr "Błąd instancjacji sceny z %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Ta operacja wymaga pojedynczego wybranego węzła."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Zmienić domyślny typ"
@@ -3855,7 +3829,7 @@ msgstr "Stwórz Poly3D"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
-msgstr ""
+msgstr "Ustaw Uchwyt"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
@@ -3896,7 +3870,6 @@ msgid "Ease out"
msgstr "Ease out"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Smoothstep"
msgstr "Płynny Krok"
@@ -3977,6 +3950,8 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Brak zasobu OccluderPolygon2D w tym węźle.\n"
+"Stworzyć i przypisać nowy?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
@@ -4024,43 +3999,45 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Shape"
-msgstr ""
+msgstr "Utwórz kształt wypukły"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr ""
+msgstr "Utwórz siatkę nawigacyjną (Navigation Mesh)"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Zawarta siatka nie jest typu ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "Błąd mapowania UV, siatka modelu może nie być poprawnie wykonana?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Brak siatki do debugowania."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Model nie posiada UV w tej warstwie"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "MeshInstance nie posiada siatki!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "Siatka nie posiada powierzchni z której można utworzyć zarys!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
msgstr "Nie udało się utworzyć zarysu!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Outline"
-msgstr ""
+msgstr "Utwórz zarys"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
@@ -4072,7 +4049,7 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "Utwórz statyczne ciało wypukłe"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
@@ -4084,29 +4061,27 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr ""
+msgstr "Utwórz siatkę zarysu.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Widok"
+msgstr "Widok UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Widok"
+msgstr "Widok UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Rozwiń siatkę UV2 dla Lightmapy/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "Utwórz siatkę zarysu"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
-msgstr ""
+msgstr "Rozmiar zarysu:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -4117,9 +4092,8 @@ msgid "No mesh source specified (and MultiMesh contains no Mesh)."
msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
-#, fuzzy
msgid "Mesh source is invalid (invalid path)."
-msgstr "Źródło siatki jest niepoprawne(nieprawidłowa ścieżka)"
+msgstr "Źródło siatki jest niepoprawne (nieprawidłowa ścieżka)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
@@ -4130,9 +4104,8 @@ msgid "Mesh source is invalid (contains no Mesh resource)."
msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
-#, fuzzy
msgid "No surface source specified."
-msgstr "Nie ustawiono źródła płaszczyzny"
+msgstr "Nie ustawiono źródła płaszczyzny."
#: editor/plugins/multimesh_editor_plugin.cpp
#, fuzzy
@@ -4146,16 +4119,15 @@ msgstr "Płaszczyzna jest niepoprawna (brak geometrii)"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no faces)."
-msgstr ""
+msgstr "Płaszczyzna jest niepoprawna (brak ścian)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Parent has no solid faces to populate."
msgstr ""
#: editor/plugins/multimesh_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't map area."
-msgstr "Nie można zmapować powierzchni"
+msgstr "Nie można zmapować obszaru."
#: editor/plugins/multimesh_editor_plugin.cpp
#, fuzzy
@@ -4168,12 +4140,13 @@ msgid "Select a Target Surface:"
msgstr "Wybierz docelową przestrzeń"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Populate Surface"
-msgstr ""
+msgstr "Zapełnij powierzchnię"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr ""
+msgstr "Zapełnij MultiMesh"
#: editor/plugins/multimesh_editor_plugin.cpp
#, fuzzy
@@ -4197,8 +4170,9 @@ msgid "Z-Axis"
msgstr "OÅ›-Z"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Mesh Up Axis:"
-msgstr ""
+msgstr "Oś \"do góry\" siatki:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
@@ -4213,27 +4187,29 @@ msgid "Random Scale:"
msgstr "Losowa skala:"
#: editor/plugins/multimesh_editor_plugin.cpp
+#, fuzzy
msgid "Populate"
-msgstr ""
+msgstr "Zapełnij"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
msgid "Bake!"
-msgstr ""
+msgstr "NanieÅ›!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr ""
+#, fuzzy
+msgid "Bake the navigation mesh."
+msgstr "NanieÅ› siatkÄ™ nawigacji.\n"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr ""
+msgstr "Wyczyść siatkę nawigacji."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
-msgstr ""
+msgstr "Ustawianie konfiguracji..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Calculating grid size..."
msgstr "Obliczanie wielkości siatki..."
@@ -4242,7 +4218,6 @@ msgid "Creating heightfield..."
msgstr ""
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Marking walkable triangles..."
msgstr "Zaznaczanie możliwych do przejścia trójkątów ..."
@@ -4255,9 +4230,8 @@ msgid "Eroding walkable area..."
msgstr ""
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Partitioning..."
-msgstr "Rozdzielenie"
+msgstr "Rozdzielanie..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating contours..."
@@ -4269,11 +4243,11 @@ msgstr "Tworzenie polymesh'a..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr ""
+msgstr "Konwertowanie do natywnej siatki nawigacyjnej..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
-msgstr ""
+msgstr "Ustawienia generatora siatek nawigacyjnych:"
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
@@ -4285,7 +4259,7 @@ msgstr "Skończone!"
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
-msgstr ""
+msgstr "Utwórz wielokąt nawigacyjny"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -4301,7 +4275,6 @@ msgid "Error loading image:"
msgstr "Błąd wczytywania obrazu:"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "No pixels with transparency > 128 in image.."
msgstr "Brak pikseli z przeźroczystością > 128 w obrazie.."
@@ -4353,8 +4326,9 @@ msgid "Node does not contain geometry (faces)."
msgstr "Węzeł nie zawiera geometrii (ściany)."
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "Materiał przetwarzający typu 'ParticlesMaterial' jest wymagany."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Faces contain no area!"
@@ -4389,8 +4363,9 @@ msgid "Surface Points"
msgstr "Punkty powierzchni"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "Punkty powierzchni+Normalne (Skierowane)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
@@ -4621,17 +4596,18 @@ msgstr "Wczytaj Zasób"
msgid "Paste"
msgstr "Wklej"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Ścieżka zasobu"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Wyczyść ostatnie pliki"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Zamknąć i zapisać zmiany?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Zamknąć i zapisać zmiany?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4658,8 +4634,9 @@ msgid "Save Theme As.."
msgstr "Zapisz motyw jako.."
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid " Class Reference"
-msgstr ""
+msgstr " Referencja klas"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -4703,9 +4680,12 @@ msgid "Soft Reload Script"
msgstr "Miękkie przeładowania skryptu"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Skopiuj Ścieżkę"
+msgstr "Skopiuj ścieżkę skryptu"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Pokaż w systemie plików"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4758,17 +4738,14 @@ msgid "Find Next"
msgstr "Znajdź następny"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Step Over"
msgstr "Przekrocz"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Step Into"
msgstr "Krok w"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Break"
msgstr "Przerwa"
@@ -4782,14 +4759,12 @@ msgid "Keep Debugger Open"
msgstr "Pozostaw Debugger otwarty"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Otwórz w edytorze"
+msgstr "Debugowanie z zewnętrznego edytora"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Poszukaj w dokumentacji referencyjnej."
+msgstr "Otwórz dokumentację online"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4808,9 +4783,8 @@ msgid "Go to next edited document."
msgstr "Przejdź do następnego edytowanego dokumentu."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "Dyskretne"
+msgstr "Odrzucić"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -4844,18 +4818,16 @@ msgstr ""
"należą"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Only resources from filesystem can be dropped."
-msgstr "Jedynie zasoby z systemu plików mogą tu zostać opuszczone."
+msgstr "Jedynie zasoby z systemu plików mogą zostać tu upuszczone."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Wybierz Kolor"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Konwersja obrazków"
+msgstr "Zmień wielkość liter"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
@@ -4867,7 +4839,7 @@ msgstr "Małe Litery"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Wielkie litery na początku słów"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
@@ -4886,9 +4858,8 @@ msgid "Select All"
msgstr "Zaznacz wszystko"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Usuń Punkt"
+msgstr "Usuń wiersz"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -4907,17 +4878,16 @@ msgid "Clone Down"
msgstr "Duplikuj liniÄ™"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Idź do lini"
+msgstr "Zwiń/rozwiń wiersz"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
-msgstr ""
+msgstr "Zwiń wszystkie linie"
#: editor/plugins/script_text_editor.cpp
msgid "Unfold All Lines"
-msgstr ""
+msgstr "Rozwiń wszystkie linie"
#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
@@ -4928,14 +4898,12 @@ msgid "Trim Trailing Whitespace"
msgstr "Przytnij końcowe spacje"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent To Spaces"
-msgstr "Zamień akapity na spację"
+msgstr "Zamień wcięcia na spacje"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Indent To Tabs"
-msgstr "Zamień akapity na tabulatory"
+msgstr "Zamień wcięcia na tabulatory"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -4961,12 +4929,11 @@ msgstr "Przejdź do poprzedniej pułapki"
#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Konwertuje na.."
+msgstr "Wielkie litery"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Konwertuje na.."
+msgstr "Małe litery"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
@@ -4990,7 +4957,7 @@ msgstr "Pomoc kontekstowa"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -5083,14 +5050,12 @@ msgid "Change Input Name"
msgstr "Zmień nazwę wejścia"
#: editor/plugins/shader_graph_editor_plugin.cpp
-#, fuzzy
msgid "Connect Graph Nodes"
-msgstr "Połącz graficznie węzły"
+msgstr "Połącz węzły grafu"
#: editor/plugins/shader_graph_editor_plugin.cpp
-#, fuzzy
msgid "Disconnect Graph Nodes"
-msgstr "Odłącz graficznie węzły"
+msgstr "Odłącz węzły grafu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Remove Shader Graph Node"
@@ -5101,9 +5066,8 @@ msgid "Move Shader Graph Node"
msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
-#, fuzzy
msgid "Duplicate Graph Node(s)"
-msgstr "Duplikuj graficzne węzły/węzeł"
+msgstr "Duplikuj węzły grafu"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Delete Shader Graph Node(s)"
@@ -5114,7 +5078,6 @@ msgid "Error: Cyclic Connection Link"
msgstr ""
#: editor/plugins/shader_graph_editor_plugin.cpp
-#, fuzzy
msgid "Error: Missing Input Connections"
msgstr "Błąd: Brakujące połączenia wejścia"
@@ -5165,88 +5128,89 @@ msgid "Rotating %s degrees."
msgstr "Obracanie o %s stopni."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Widok z dołu."
+#, fuzzy
+msgid "Keying is disabled (no key inserted)."
+msgstr "Kluczowanie jest wyłączone (nie wstawiono klucza)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Dół"
+#, fuzzy
+msgid "Animation Key Inserted."
+msgstr "Wstawiono klucz animacji."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Widok z góry."
+#, fuzzy
+msgid "Objects Drawn"
+msgstr "Narysowane obiekty"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Widok z tyłu."
+#, fuzzy
+msgid "Material Changes"
+msgstr "Zmiany materiału"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Tył"
+msgid "Shader Changes"
+msgstr "Zmiany Shadera"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Widok z przodu."
+#, fuzzy
+msgid "Surface Changes"
+msgstr "Odśwież Zmiany"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Przód"
+msgid "Draw Calls"
+msgstr "Wywołania rysowania"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Widok z lewej."
+msgid "Vertices"
+msgstr "Wierzchołki"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Lewa"
+msgid "FPS"
+msgstr "Klatki na sekundÄ™"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Widok z prawej."
+msgid "Top View."
+msgstr "Widok z góry."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Prawa"
+msgid "Bottom View."
+msgstr "Widok z dołu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
+msgid "Bottom"
+msgstr "Dół"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
+msgid "Left View."
+msgstr "Widok z lewej."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
+msgid "Left"
+msgstr "Lewa"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "Odśwież Zmiany"
+msgid "Right View."
+msgstr "Widok z prawej."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Odśwież Zmiany"
+msgid "Right"
+msgstr "Prawa"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Surface Changes"
-msgstr "Odśwież Zmiany"
+msgid "Front View."
+msgstr "Widok z przodu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+msgid "Front"
+msgstr "Przód"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Vertices"
-msgstr "Wierzchołek"
+msgid "Rear View."
+msgstr "Widok z tyłu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "Klatki na sekundÄ™"
+msgid "Rear"
+msgstr "Tył"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5260,6 +5224,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Brak elementu nadrzędnego do stworzenia instancji."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Ta operacja wymaga pojedynczego wybranego węzła."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Widok normalny"
@@ -5269,39 +5237,33 @@ msgid "Display Wireframe"
msgstr "Widok siatki"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Overdraw"
-msgstr "Wyświetl Przerysowanie"
+msgstr "Widok rentgena"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
msgstr "Widok bezcieniowy"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Åšrodowisko"
+msgstr "Wyświetlaj środowisko"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "View Gizmos"
-msgstr "Uchwyty"
+msgstr "Wyświetlaj uchwyty"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Information"
-msgstr "Informacje"
+msgstr "Wyświetlaj informacje"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View FPS"
-msgstr "Pokaż Klatki na Sekundę"
+msgstr "Pokaż klatki na sekundę"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Half Resolution"
-msgstr "Skaluj zaznaczone"
+msgstr "Połowa rozdzielczości"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5309,9 +5271,8 @@ msgid "Audio Listener"
msgstr "Nasłuchiwacz dźwięku"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Włącz"
+msgstr "Efekt Dopplera"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5345,18 +5306,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "PodglÄ…d"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Okno dialogowe XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Select Mode (Q)\n"
-msgstr "Tryb zaznaczenia"
+msgid "Select Mode (Q)"
+msgstr "Tryb zaznaczenia (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5382,14 +5337,12 @@ msgid "Local Coords"
msgstr "Koordynaty lokalne"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Tryb skalowania (R)"
+msgstr "Tryb lokalny przestrzeni (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Tryb przyciÄ…gania:"
+msgstr "Tryb przyciÄ…gania (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5438,7 +5391,7 @@ msgstr "Dopasuj zaznaczenie do widoku"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Tool Select"
-msgstr "Zaznacz"
+msgstr "Wybierz narzędzie"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5448,17 +5401,16 @@ msgstr "PrzenieÅ›"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: Obróć"
+msgstr "Narzędzie Obracanie"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Tool Scale"
-msgstr "Skala:"
+msgstr "Narzędzia Skala"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Freelook"
-msgstr "Pełny ekran"
+msgstr "Przełącz swobodny widok"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5548,7 +5500,7 @@ msgstr "Widok Z-Daleko:"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Transform Change"
-msgstr "Zmiana Pozycji"
+msgstr "Zmiana przekształcenia"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
@@ -5565,7 +5517,7 @@ msgstr "Skala (proporcja):"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Transform Type"
-msgstr "Typ Przesunięcia"
+msgstr "Typ przekształcenia"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -5632,23 +5584,28 @@ msgid "Insert Empty (After)"
msgstr "Dodaj pusty (później)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Move (Before)"
-msgstr "Usuń węzeł(y)"
+msgstr "PrzenieÅ› (przed)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Move (After)"
-msgstr "Przesuń w lewo"
+msgstr "PrzenieÅ› (za)"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "PodglÄ…d StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "Edytor regionu tekstury"
+msgstr "Ustaw obszar tekstury"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5671,21 +5628,23 @@ msgid "Auto Slice"
msgstr "Tnij automatycznie"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Przesunięcie:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Krok:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separacja:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Texture Region"
-msgstr "Obszar Tekstury"
+msgstr "Obszar tekstury"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region Editor"
@@ -5709,19 +5668,16 @@ msgid "Remove Item"
msgstr "Usuń element"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Usuń klasę elementów"
+msgstr "Usuń wszystkie elementy"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Usuń"
+msgstr "Usuń wszystkie"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Edit theme.."
-msgstr "Zmień wygląd programu.."
+msgstr "Edytuj motyw interfejsu.."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -5745,18 +5701,16 @@ msgid "Create Empty Editor Template"
msgstr "Utworzyć pusty szablon edytora"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create From Current Editor Theme"
-msgstr "Utworzyć pusty szablon edytora"
+msgstr "Utwórz z aktualnego motywu edytora"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
msgstr "CheckBox Radio1"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "CheckBox Radio2"
-msgstr "Pole Jednokrotnego Wyboru2"
+msgstr "CheckBox Radio2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Item"
@@ -5791,17 +5745,16 @@ msgstr "Ma,Wiele,Różnych,Opcji!"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
msgid "Tab 1"
-msgstr "Tabulator 1"
+msgstr "Zakładka 1"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
msgid "Tab 2"
-msgstr "Tabulator 2"
+msgstr "Zakładka 2"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Tab 3"
-msgstr "Tabulator 3"
+msgstr "Zakładka 3"
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
@@ -5829,6 +5782,10 @@ msgstr "Font"
msgid "Color"
msgstr "Kolor"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Motyw"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Usuń zaznaczenie"
@@ -5930,6 +5887,31 @@ msgstr "Połącz ze sceny"
msgid "Error"
msgstr "Błąd"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "Autotiles"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Wybierz aktualnie edytowany sub-tile."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Anuluj"
@@ -6010,7 +5992,7 @@ msgstr "Funkcje"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Niestandardowe (oddzielone przecinkami):"
#: editor/project_export.cpp
msgid "Feature List:"
@@ -6041,12 +6023,9 @@ msgid "Please choose a 'project.godot' file."
msgstr "Proszę wybrać plik 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Twój projekt zostanie utworzony w niepustym folderze (możesz chcieć stworzyć "
-"nowy folder)."
+#, fuzzy
+msgid "Please choose an empty folder."
+msgstr "Proszę wybrać plik 'project.godot'."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6057,6 +6036,14 @@ msgid "Imported Project"
msgstr "Zaimportowano projekt"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Nie można utworzyć katalogu."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Dobrym pomysłem byłoby nazwanie swojego projektu."
@@ -6097,14 +6084,26 @@ msgid "Import Existing Project"
msgstr "Importuj istniejÄ…cy projekt"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importuj i edytuj"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Utwórz nowy projekt"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Utwórz i edytuj"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Zainstaluj projekt:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Zainstaluj i edytuj"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nazwa projektu:"
@@ -6121,10 +6120,6 @@ msgid "Browse"
msgstr "Szukaj"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projekt bez nazwy"
@@ -6146,13 +6141,12 @@ msgstr ""
"Można to później zmienić w \"Ustawienia projektu\" w kategorii \"aplikacja\"."
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
"Nie można uruchomić projektu: Zasoby muszą zostać zaimportowane\n"
-"Zmień projekt by był gotowy wstępny import."
+"Otwórz projekt w edytorze aby zaimportować zasoby."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6179,6 +6173,10 @@ msgstr ""
"Potwierdzasz?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Menedżer projektów"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista projektów"
@@ -6215,6 +6213,8 @@ msgid ""
"You don't currently have any projects.\n"
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
+"Nie posiadasz obecnie żadnych projektów.\n"
+"Czy chciałbyś zobaczyć oficjalne przykładowe projekty w bibliotece zasobów?"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6233,9 +6233,8 @@ msgid "Mouse Button"
msgstr "Przycisk myszy"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Invalid action (anything goes but '/' or ':')."
-msgstr "Nieprawidłowa akcja (wszystko oprócz '/' or ':')."
+msgstr "Nieprawidłowa akcja (wszystko oprócz '/' lub ':')."
#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
@@ -6306,11 +6305,6 @@ msgid "Button 9"
msgstr "Przycisk 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Zmień"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Indeks osi joysticka:"
@@ -6323,16 +6317,14 @@ msgid "Joypad Button Index:"
msgstr "Indeks przycisku joysticka:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Wyczyść zdarzenie akcji wejścia"
+msgstr "Wyczyść akcję wejścia"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
msgstr "Wyczyść zdarzenie akcji wejścia"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Event"
msgstr "Dodaj zdarzenie"
@@ -6369,9 +6361,8 @@ msgid "Add Global Property"
msgstr "Dodaj globalną właściwość"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Select a setting item first!"
-msgstr "Najpierw wybierz element ustawień!"
+msgstr "Najpierw wybierz ustawienie z listy!"
#: editor/project_settings_editor.cpp
msgid "No property '%s' exists."
@@ -6390,7 +6381,6 @@ msgid "Can't contain '/' or ':'"
msgstr "Nie może zawierać '/ 'lub':'"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Already existing"
msgstr "Już istnieje"
@@ -6444,7 +6434,7 @@ msgstr "Zmień filtr ustawień lokalizacji"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter Mode"
-msgstr ""
+msgstr "Zmień tryb filtrowania ustawień lokalizacji"
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
@@ -6460,7 +6450,7 @@ msgstr "Właściwość:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Nadpisz dla.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6516,10 +6506,9 @@ msgstr "Pokaż wszystkie lokalizacje"
#: editor/project_settings_editor.cpp
msgid "Show only selected locales"
-msgstr ""
+msgstr "Pokaż tylko wybrane lokalizacje"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Filter mode:"
msgstr "Tryb filtrowania:"
@@ -6577,7 +6566,7 @@ msgstr "Nowy skrypt"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Nowy %s"
#: editor/property_editor.cpp
#, fuzzy
@@ -6605,17 +6594,17 @@ msgid "Pick a Node"
msgstr "Wybierz węzeł"
#: editor/property_editor.cpp
+#, fuzzy
msgid "Bit %d, val %d."
-msgstr ""
+msgstr "Bit %d, wartość %d."
#: editor/property_editor.cpp
msgid "On"
msgstr "Włącz"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Dodaj pusty"
+msgstr "[Pusty]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6696,10 +6685,6 @@ msgid "Error loading scene from %s"
msgstr "Błąd przy ładowaniu sceny z %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6715,13 +6700,14 @@ msgid "This operation can't be done on the tree root."
msgstr "Nie można wykonać tej operacji na głównym węźle drzewa."
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Move Node In Parent"
-msgstr ""
+msgstr "Przenieś węzeł w nadrzędny"
#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Move Nodes In Parent"
-msgstr "Przenieść węzły do węzła nadrzędnego."
+msgstr "Przenieś węzły w nadrzędnym"
#: editor/scene_tree_dock.cpp
msgid "Duplicate Node(s)"
@@ -6788,9 +6774,8 @@ msgid "Error duplicating scene to save it."
msgstr "Błąd duplikowania sceny przy zapisywaniu."
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Sub-Resources:"
-msgstr "Zasoby:"
+msgid "Sub-Resources"
+msgstr "Zasoby"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6853,9 +6838,8 @@ msgstr ""
"główny nie istnieje."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filtry"
+msgstr "Filtruj węzły"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6866,12 +6850,10 @@ msgid "Clear a script for the selected node."
msgstr "Wyczyść skrypt dla zaznaczonego węzła."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Remote"
msgstr "Zdalny"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Local"
msgstr "Lokalny"
@@ -6893,25 +6875,31 @@ msgstr "Przełącz widoczność CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Ostrzeżenie konfiguracji węzła:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Węzeł posiada połączenia i grupy\n"
+"Kliknij, aby wyświetlić panel sygnałów."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Węzeł posiada połączenia.\n"
+"Kliknij, aby wyświetlić panel sygnałów."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"Węzeł jest w grupach.\n"
+"Kliknij, aby wyświetlić panel grup."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
@@ -6935,8 +6923,8 @@ msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
-"Pochodna nie jest możliwa do zaznaczenia.\n"
-"Kliknij by ją móc zaznaczyć"
+"Dziecko nie jest możliwe do zaznaczenia.\n"
+"Kliknij by móc zaznaczyć"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
@@ -6956,7 +6944,7 @@ msgstr "Drzewo sceny (węzły):"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "Ostrzeżenie konfiguracji węzła!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -7015,9 +7003,8 @@ msgid "Invalid class name"
msgstr "Niepoprawna nazwa klasy"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Nieprawidłowa nazwa klasy bazowej"
+msgstr "Nieprawidłowa nazwa lub ścieżka klasy bazowej"
#: editor/script_create_dialog.cpp
msgid "Script valid"
@@ -7091,7 +7078,7 @@ msgstr "Funkcja:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Wybierz jeden lub więcej elementów z listy by wyświetlić graf."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Błędy"
@@ -7100,6 +7087,10 @@ msgid "Child Process Connected"
msgstr "Połączono z procesem potomnym"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Błąd kopiowania"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Sprawdź poprzednią instancję"
@@ -7240,17 +7231,16 @@ msgid "Change Particles AABB"
msgstr ""
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Probe Extents"
-msgstr "Zmień rozmiar Box Shape"
+msgstr "Zmień rozmiar Probe"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Wybierz dynamicznÄ… bibliotekÄ™ do tego pola"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Zaznacz zależności biblioteki dla tego pola"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -7259,30 +7249,27 @@ msgstr "Usuń punkt krzywej"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Kliknij dwukrotnie by stworzyć nowy wpis"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Platforma:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Kopiuj na platformÄ™..."
+msgstr "Platforma"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Biblioteka"
+msgstr "Biblioteka dynamiczna"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Dodaj pole architektury"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7349,7 +7336,6 @@ msgid "Object can't provide a length."
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
msgstr "GridMap Usuń zaznaczenie"
@@ -7359,25 +7345,23 @@ msgstr "GridMap duplikuj zaznaczenie"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Floor:"
-msgstr ""
+msgstr "Poziom:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Grid Map"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Widok z góry"
+msgstr "PrzyciÄ…ganie widoku"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Previous Floor"
msgstr "Poprzedni poziom"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
-msgstr ""
+msgstr "Następny poziom"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7385,16 +7369,18 @@ msgid "Clip Disabled"
msgstr "Wyłączone przycinanie"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Clip Above"
-msgstr ""
+msgstr "Przytnij powyżej"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Clip Below"
-msgstr ""
+msgstr "Przytnij poniżej"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Edytuj oÅ› X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
@@ -7405,17 +7391,14 @@ msgid "Edit Z Axis"
msgstr "Edytuj oÅ› Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
msgstr "Kursor Obróć X"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
msgstr "Kursor Obróć Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
msgstr "Kursor Obróć Z"
@@ -7463,10 +7446,50 @@ msgstr "Ustawienia GridMap"
msgid "Pick Distance:"
msgstr "Wybierz odległość:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Generowanie solucji..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Nie udało się stworzyć solucji."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Nie udało się zapisać solucji."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Gotowe"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Nie udało się utworzyć projektu języka C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Utwórz solucję C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Zbuduj projekt"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Ostrzeżenia"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7617,12 +7640,10 @@ msgid "Add Setter Property"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Zmień typ"
+msgstr "Zmień typ podstawowy"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
msgstr "Przenieś węzły"
@@ -7640,7 +7661,7 @@ msgstr "Warunek"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
-msgstr ""
+msgstr "Sekwencja"
#: modules/visual_script/visual_script_editor.cpp
msgid "Switch"
@@ -7669,10 +7690,9 @@ msgstr "Pobierz"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
-msgstr ""
+msgstr "Skrypt posiada już funkcję '%s'"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Input Value"
msgstr "Zmień wartość wejściową"
@@ -7759,15 +7779,15 @@ msgstr "Wklej węzły"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Input type not iterable: "
-msgstr ""
+msgstr "Typ danych wejściowych nie jest iterowalny: "
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid"
-msgstr ""
+msgstr "Iterator stał się nieprawidłowy"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator became invalid: "
-msgstr ""
+msgstr "Iterator stał się nieprawidłowy: "
#: modules/visual_script/visual_script_func_nodes.cpp
#, fuzzy
@@ -7805,12 +7825,15 @@ msgstr "Nie znaleziono VariableSet w skrypcie: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
msgstr ""
+"Niestandardowy węzeł nie posiada metody _step(), nie można przetworzyć grafu."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
+"Nieprawidłowa wartość zwracana przez funkcję _step(), musi ona być liczbą "
+"całkowitą (seq out), lub tekstową (error)."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -7818,29 +7841,32 @@ msgstr "Uruchom w przeglÄ…darce"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "Uruchom wyeksportowany dokument HTML w domyślnej przeglądarce."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "Nie można zapisać pliku:\n"
+msgid "Could not write file:"
+msgstr "Nie można zapisać pliku:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Nie można otworzyć szablonu dla eksportu:\n"
+msgid "Could not open template for export:"
+msgstr "Nie można otworzyć szablonu dla eksportu:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Szablon eksportu nieprawidłowy:\n"
+msgid "Invalid export template:"
+msgstr "Szablon eksportu nieprawidłowy:"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not read custom HTML shell:\n"
-msgstr "Nie można odczytać niestandardowe powłoki HTML:\n"
+msgid "Could not read custom 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:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
-msgstr "Nie można odczytać pliku obrazu splash:\n"
+msgid "Using default boot splash image."
+msgstr "Domyślny obrazek splash"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7859,6 +7885,13 @@ msgstr ""
"zestawie zinstancjonowanych scen). Tylko pierwszy CanvasModulate zadziała, "
"przy czym pozostałe zostaną zignorowane."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7943,11 +7976,15 @@ msgid "PathFollow2D only works when set as a child of a Path2D node."
msgstr "PathFollow2D zadziała tylko wtedy, gdy będzie dzieckiem węzeł Path2D."
#: scene/2d/physics_body_2d.cpp
+#, fuzzy
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Zmiany rozmiaru w RigidBody2D (w trybach character i rigid) zostanÄ… "
+"nadpisane przez silnik fizyki podczas działania.\n"
+"Zamiast tego, zmień rozmiary kształtów kolizji w węzłach podrzędnych."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7963,11 +8000,12 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera musi dziedziczyć po ARVROrigin node"
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController musi posiadać węzeł ARVROrigin jako rodzica"
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -7976,8 +8014,9 @@ msgid ""
msgstr ""
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor musi posiadać węzeł ARVROrigin jako rodzica"
#: scene/3d/arvr_nodes.cpp
msgid ""
@@ -7987,7 +8026,7 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin wymaga by ARVRCamera dziedziczyła po node"
#: scene/3d/baked_lightmap.cpp
msgid "Plotting Meshes: "
@@ -8002,7 +8041,15 @@ msgid "Finishing Plot"
msgstr ""
#: scene/3d/baked_lightmap.cpp
+#, fuzzy
msgid "Lighting Meshes: "
+msgstr "Oświetlanie siatek: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
msgstr ""
#: scene/3d/collision_polygon.cpp
@@ -8061,11 +8108,15 @@ msgid ""
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Zmiany rozmiaru w RigidBody (w trybach character i rigid) zostanÄ… nadpisane "
+"przez silnik fizyki podczas działania.\n"
+"Zamiast tego, zmień rozmiary kształtów kolizji w węzłach podrzędnych."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -8091,6 +8142,8 @@ msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
+"VehicleWheel zapewnia system kół do VehicleBody. Proszę użyć go jako "
+"dziedziczÄ…cego po VehicleBody."
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
@@ -8098,7 +8151,7 @@ msgstr "Trybie RAW"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Dodaj bieżący kolor jako domyślne"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -8138,9 +8191,10 @@ msgid "(Other)"
msgstr "Inne"
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Domyślne Środowisko określone w Ustawieniach Projektu (Renderowanie -> "
"Viewport -> Domyślne Środowisko) nie mogło zostać załadowane."
@@ -8173,6 +8227,41 @@ msgstr "Błąd ładowania fonta."
msgid "Invalid font size."
msgstr "Niepoprawny rozmiar fonta."
+#~ msgid "Next"
+#~ msgstr "Następny"
+
+#~ msgid "Not found!"
+#~ msgstr "Nie znaleziono!"
+
+#~ msgid "Replace By"
+#~ msgstr "ZastÄ…p przez"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Z uwzględnieniem wielkości liter"
+
+#~ msgid "Backwards"
+#~ msgstr "Wstecz"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Zaptytaj przy zastÄ…pieniu"
+
+#~ msgid "Skip"
+#~ msgstr "Pomiń"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Twój projekt zostanie utworzony w niepustym folderze (możesz chcieć "
+#~ "stworzyć nowy folder)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "BINGO!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "PodglÄ…d"
+
#~ msgid "Move Add Key"
#~ msgstr "Przemieszczono/Dodano klucz"
@@ -8258,10 +8347,6 @@ msgstr "Niepoprawny rozmiar fonta."
#~ msgid "Filter:"
#~ msgstr "Filtr:"
-#, fuzzy
-#~ msgid "Theme"
-#~ msgstr "Zapisz motyw"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Lista metod '%s':"
@@ -8528,9 +8613,6 @@ msgstr "Niepoprawny rozmiar fonta."
#~ msgid "Import Anyway"
#~ msgstr "Zaimportuj Pomimo"
-#~ msgid "Import & Open"
-#~ msgstr "Importuj i Otwórz"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Edytowana sceny nie została zapisana. Otworzyć importowaną scenę mimo "
@@ -8761,9 +8843,6 @@ msgstr "Niepoprawny rozmiar fonta."
#~ msgid "Stereo"
#~ msgstr "Stereo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Wysokość"
@@ -8883,9 +8962,6 @@ msgstr "Niepoprawny rozmiar fonta."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Powiadomienie o zmianie stanu zasobu zewnętrznego."
-#~ msgid "Tutorials"
-#~ msgstr "Poradniki"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Otwórz https://godotengine.org na sekcji poradników."
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 8f649949e1..3fd24dd39f 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -202,8 +202,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -380,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -396,47 +387,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -554,6 +513,16 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+#, fuzzy
+msgid "Change %s Type"
+msgstr "th' Base Type:"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Change"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
msgstr ""
@@ -659,7 +628,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -742,8 +711,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -828,7 +797,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1139,7 +1108,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1355,6 +1324,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1386,6 +1366,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1397,6 +1381,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1405,8 +1393,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1462,7 +1450,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2016,6 +2005,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2397,7 +2393,7 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr "Blimey! I can't make th' signature object!"
#: editor/export_template_manager.cpp
@@ -2556,9 +2552,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2566,19 +2560,21 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Error loading yer Calligraphy Pen."
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
-msgstr ""
+#, fuzzy
+msgid "Error duplicating:"
+msgstr "Rename Variable"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3220,6 +3216,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3385,6 +3385,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3689,19 +3690,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4075,7 +4079,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4468,14 +4472,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4552,6 +4558,10 @@ msgid "Copy Script Path"
msgstr "Forge yer Node!"
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4985,84 +4995,84 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Change"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Change"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5077,6 +5087,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5150,16 +5164,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Slit th' Node"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5436,10 +5447,18 @@ msgstr "Forge yer Node!"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5465,14 +5484,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5612,6 +5634,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5712,6 +5738,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Slit th' Node"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5819,9 +5870,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5833,6 +5882,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5874,14 +5931,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5898,10 +5967,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5947,6 +6012,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6074,11 +6143,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Change"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6461,10 +6525,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6549,7 +6609,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6848,7 +6908,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6857,6 +6917,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Slit th' Node"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7210,10 +7275,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7587,24 +7692,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Yer index property name be thrown overboard!"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7619,6 +7728,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7687,7 +7803,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7746,6 +7862,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7791,8 +7914,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7858,8 +7981,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index a0f94fbb4f..6963d39352 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -11,11 +11,12 @@
# Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>, 2017.
# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016.
# jonathan railarem <railarem@gmail.com>, 2017.
+# Lucas Silva <lucasb.hpp@gmail.com>, 2018.
# Luiz G. Correia <luizgabriell2.0@gmail.com>, 2017.
# Mailson Silva Marins <mailsons335@gmail.com>, 2016.
# MalcomRF <malcomkbk@gmail.com>, 2017.
# Marcus Correia <marknokalt@live.com>, 2017.
-# Michael Alexsander Silva Dias <michaelalexsander@protonmail.com>, 2017.
+# Michael Alexsander Silva Dias <michaelalexsander@protonmail.com>, 2017-2018.
# Renato Rotenberg <renato.rotenberg@gmail.com>, 2017.
# Rodolfo R Gomes <rodolforg@gmail.com>, 2017.
# Tiago Almeida <thyagoeap@gmail.com>, 2017.
@@ -24,8 +25,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
-"Last-Translator: Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>\n"
+"PO-Revision-Date: 2018-01-22 08:08+0000\n"
+"Last-Translator: Michael Alexsander Silva Dias <michaelalexsander@protonmail."
+"com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -33,7 +35,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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -44,26 +46,24 @@ msgid "All Selection"
msgstr "Toda a Seleção"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Mudar Valor da Anim"
+msgstr "Alterar tempo de quadro-chave da animação"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr "Mudar Transição da Anim"
+msgstr "Alterar Transição da Anim"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr "Mudar Transformação da Anim"
+msgstr "Alterar Transformação da Anim"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Mudar Valor da Anim"
+msgstr "Alterar valor de quadro-chave da animação"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr "Mudar Chamada da Anim"
+msgstr "Alterar Chamada da Anim"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
@@ -99,11 +99,11 @@ msgstr "Alterar Interpolação da Trilha"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr "Mudar Modo de Valor da Trilha"
+msgstr "Alterar Modo de Valor da Trilha"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
-msgstr "Mudar Modo de Cobertura da Trilha de Animação"
+msgstr "Alterar Modo de Loop da Trilha de Animação"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -177,7 +177,7 @@ msgstr "Constante"
#: editor/animation_editor.cpp
msgid "In"
-msgstr "In"
+msgstr "Em"
#: editor/animation_editor.cpp
msgid "Out"
@@ -215,8 +215,7 @@ msgstr "Criar %d NOVAS trilhas e inserir chaves?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Criar"
@@ -234,11 +233,11 @@ msgstr "Inserir Chave na Anim"
#: editor/animation_editor.cpp
msgid "Change Anim Len"
-msgstr "Mudar Comprimento da Animação"
+msgstr "Alterar Comprimento da Animação"
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr "Mudar Loop da Animação"
+msgstr "Alterar Loop da Animação"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
@@ -370,7 +369,7 @@ msgstr "Redimensionar Vetor"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr "Alterar Tipo de Valor do Vetor"
+msgstr "Mudar Tipo de Valor do Vetor"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
@@ -393,14 +392,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "%d ocorrência(s) substituída(s)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Substituir"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Substituir Tudo"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Corresponder Caixa"
@@ -409,48 +400,16 @@ msgid "Whole Words"
msgstr "Palavras Inteiras"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Apenas na Seleção"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Pesquisar"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Localizar"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Próximo"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Não encontrado!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Substituir Por"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Diferenciar Caixa"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Para trás"
+msgid "Replace"
+msgstr "Substituir"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Perguntar ao Substituir"
+msgid "Replace All"
+msgstr "Substituir Tudo"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Pular"
+msgid "Selection Only"
+msgstr "Apenas na Seleção"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -552,9 +511,8 @@ msgid "Connecting Signal:"
msgstr "Conectando Sinal:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Conectar \"%s\" a \"%s\""
+msgstr "Desconectar '%s' do '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -570,9 +528,17 @@ msgid "Signals"
msgstr "Sinais"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Mudar Tipo de %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Alterar"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Criar Novo"
+msgstr "Criar Novo %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -616,7 +582,7 @@ msgid ""
"Changes will not take effect unless reloaded."
msgstr ""
"A cena \"%s\" está sendo editada atualmente.\n"
-"As mudanças não terão efeito a menos que seja recarregada."
+"As alterações não terão efeito a menos que seja recarregada."
#: editor/dependency_editor.cpp
msgid ""
@@ -624,7 +590,7 @@ msgid ""
"Changes will take effect when reloaded."
msgstr ""
"O recurso \"%s\" está em uso.\n"
-"As mudanças não terão efeito a menos que seja recarregado."
+"As alterações não terão efeito a menos que seja recarregado."
#: editor/dependency_editor.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -683,8 +649,8 @@ msgstr ""
"Removê-los mesmo assim? (irreversível)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Não foi possível remover:\n"
+msgid "Cannot remove:"
+msgstr "Impossível remover:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -766,9 +732,9 @@ msgstr "Fundadores do Projeto"
msgid "Lead Developer"
msgstr "Desenvolvedor-chefe"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gerenciador de Projetos"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Gerenciador de Projetos "
#: editor/editor_about.cpp
msgid "Developers"
@@ -856,7 +822,7 @@ msgid "Success!"
msgstr "Sucesso!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instalar"
@@ -877,9 +843,8 @@ msgid "Rename Audio Bus"
msgstr "Renomear Canal de Ãudio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Alternar Solo do Canal de Ãudio"
+msgstr "Alterar Volume do Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -944,7 +909,7 @@ msgstr "Excluir Efeito"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1115,20 +1080,19 @@ msgstr "Atualizando Cena"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr "Armazenando mudanças locais..."
+msgstr "Armazenando alterações locais..."
#: editor/editor_data.cpp
msgid "Updating scene.."
msgstr "Atualizando Cena..."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(vazio)"
+msgstr "[vazio]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[não salvo]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1168,8 +1132,8 @@ msgid "Packing"
msgstr "Empacotando"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Arquivo de modelo não encontrado:\n"
+msgid "Template file not found:"
+msgstr "Arquivo de modelo não encontrado:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1380,6 +1344,20 @@ msgid "Description"
msgstr "Descrição"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Tutoriais Online:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Atualmente não há tutoriais para essa classe. Você pode [color=$color][url="
+"$url]contribuir criando um[/url][/color] ou [color=$color][url="
+"$url2]solicitar[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propriedades"
@@ -1415,6 +1393,10 @@ msgstr ""
msgid "Search Text"
msgstr "Pesquisar Texto"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Localizar"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Saída:"
@@ -1426,6 +1408,10 @@ msgstr "Saída:"
msgid "Clear"
msgstr "Limpar"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Limpar Saída"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Erro ao salvar Recurso!"
@@ -1434,8 +1420,8 @@ msgstr "Erro ao salvar Recurso!"
msgid "Save Resource As.."
msgstr "Salvar Recuso como..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Entendo..."
@@ -1489,10 +1475,11 @@ msgstr "Essa operação não pode ser realizada sem uma raiz da cena."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Não se pôde salvar a cena. É provável que dependências (instâncias) não "
-"foram satisfeitas."
+"Não se pôde salvar a cena. É provável que dependências (instâncias ou "
+"herança) não foram satisfeitas."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1546,15 +1533,15 @@ msgid ""
"Changes to it will not be kept when saving the current scene."
msgstr ""
"Este recurso pertence a uma cena que foi instanciada ou herdada.\n"
-"Mudanças nele não serão mantidas ao salvar a cena atual."
+"Alterações nele não serão mantidas ao salvar a cena atual."
#: editor/editor_node.cpp
msgid ""
"This resource was imported, so it's not editable. Change its settings in the "
"import panel and then re-import."
msgstr ""
-"Este recurso foi importado, então não é editável. Mude suas configurações no "
-"painel de importação e então re-importe."
+"Este recurso foi importado, então não é editável. Altere suas configurações "
+"no painel de importação e então re-importe."
#: editor/editor_node.cpp
msgid ""
@@ -1563,8 +1550,8 @@ msgid ""
"Please read the documentation relevant to importing scenes to better "
"understand this workflow."
msgstr ""
-"Essa cena foi importada, então mudanças nela não irão ser mantidas.\n"
-"Instanciar ou herdar a cena permitirá fazer mudanças a ela.\n"
+"Essa cena foi importada, então alterações nela não irão ser mantidas.\n"
+"Instanciar ou herdar a cena permitirá fazer alterações a ela.\n"
"Por favor, leia a documentação referente a importação de cenas para entender "
"melhor esse procedimento."
@@ -1574,7 +1561,7 @@ msgid ""
"Please read the documentation relevant to debugging to better understand "
"this workflow."
msgstr ""
-"Este é um objeto remoto, mudanças não serão mantidas.\n"
+"Este é um objeto remoto, alterações não serão mantidas.\n"
"Por favor, leia a documentação referente a depuração para entender melhor "
"esse procedimento."
@@ -1678,7 +1665,7 @@ msgstr "Salvar e Fechar"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr "Salvar mudanças em '%s' antes de fechar?"
+msgstr "Salvar alterações em '%s' antes de fechar?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1702,7 +1689,7 @@ msgstr "Essa operação não pode ser realizada sem uma cena."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr "Exportar Biblioteca de Meshes"
+msgstr "Exportar Biblioteca de Malhas"
#: editor/editor_node.cpp
msgid "This operation can't be done without a root node."
@@ -1754,12 +1741,12 @@ msgstr "Salvar e Sair"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr "Salvar mudanças na(s) seguinte(s) cena(s) antes de sair?"
+msgstr "Salvar alterações na(s) seguinte(s) cena(s) antes de sair?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
-"Salvar mudanças na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de "
+"Salvar alterações na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de "
"Projetos?"
#: editor/editor_node.cpp
@@ -2014,7 +2001,7 @@ msgid ""
msgstr ""
"Quando esta opção está habilitada, a exportação ou instalação produzirá um "
"executável mínimo.\n"
-"O sistema de arquivos (FS) será fornecido ao projeto pelo editor via rede.\n"
+"O sistema de arquivos será fornecido ao projeto pelo editor via rede.\n"
"No Android, a instalação usará o cabo USB para melhor desempenho. Esta opção "
"acelera os testes de jogos com muito conteúdo."
@@ -2053,7 +2040,7 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
-"Quando essa opção está ativa, quaisquer modificações feitas à cena no editor "
+"Quando essa opção está ativa, quaisquer alterações feitas à cena no editor "
"serão replicadas no jogo em execução.\n"
"Quando usado remotamente em um dispositivo, isso é mais eficiente com o "
"sistema de arquivos via rede."
@@ -2102,13 +2089,20 @@ msgstr "Ajuda"
msgid "Classes"
msgstr "Classes"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Pesquisar"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentação Online"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr "Perguntas e Respostas"
+msgstr "P&R"
#: editor/editor_node.cpp
msgid "Issue Tracker"
@@ -2172,7 +2166,7 @@ msgstr "Atualizar Sempre"
#: editor/editor_node.cpp
msgid "Update Changes"
-msgstr "Atualizar nas Mudanças"
+msgstr "Atualizar Alterações"
#: editor/editor_node.cpp
msgid "Disable Update Spinner"
@@ -2216,7 +2210,7 @@ msgstr "Propriedades do objeto."
#: editor/editor_node.cpp
msgid "Changes may be lost!"
-msgstr "Mudanças podem ser perdidas!"
+msgstr "Alterações podem ser perdidas!"
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_manager.cpp
@@ -2301,7 +2295,7 @@ msgstr "Abrir o Editor anterior"
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "Criando Previsualizações da Mesh"
+msgstr "Criando Previsualizações das Malhas"
#: editor/editor_plugin.cpp
msgid "Thumbnail.."
@@ -2373,14 +2367,12 @@ msgid "Frame #:"
msgstr "Frame nº:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Tempo:"
+msgstr "Tempo"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Chamar"
+msgstr "Chamadas"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2488,8 +2480,8 @@ msgid "No version.txt found inside templates."
msgstr "Não foi encontrado um version.txt dentro dos modelos."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "Erro ao criar caminho para modelos:\n"
+msgid "Error creating path for templates:"
+msgstr "Erro ao criar caminho para modelos:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2524,9 +2516,8 @@ msgstr "Sem resposta."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Sol. Falhou."
+msgstr "Solicitação Falhou."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2572,9 +2563,8 @@ msgid "Connecting.."
msgstr "Conectando.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
-msgstr "Não foi possível conectar"
+msgstr "Não foi Possível Conectar"
#: editor/export_template_manager.cpp
msgid "Connected"
@@ -2637,7 +2627,7 @@ msgstr ""
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '%s' as it has not been found in the file system!"
-msgstr "Impossível encontrar '%s', não existe no diretório!"
+msgstr "Impossível navegar até '%s' pois não existe no sistema de arquivos!"
#: editor/filesystem_dock.cpp
msgid "View items as a grid of thumbnails"
@@ -2648,34 +2638,30 @@ msgid "View items as a list"
msgstr "Visualizar itens como uma lista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Estado: Falha na importação do arquivo. Por favor, conserte o arquivo e "
"reimporte manualmente."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
-msgstr "Não foi possível mover/renomear raiz dos recurso."
+msgstr "Impossível mover/renomear raiz dos recursos."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Não é possível mover uma pasta nela mesma.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Impossível mover uma pasta nela mesma."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Erro ao mover:\n"
+msgid "Error moving:"
+msgstr "Erro ao mover:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Erro ao carregar:"
+msgid "Error duplicating:"
+msgstr "Erro ao duplicar:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Não foi possível atualizar dependências:\n"
+msgid "Unable to update dependencies:"
+msgstr "Não foi possível atualizar dependências:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2706,14 +2692,12 @@ msgid "Renaming folder:"
msgstr "Renomear pasta:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplicar"
+msgstr "Duplicando arquivo:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Renomear pasta:"
+msgstr "Duplicando pasta:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2732,9 +2716,8 @@ msgid "Move To.."
msgstr "Mover Para..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Abrir Cena"
+msgstr "Abrir Cena(s)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2749,9 +2732,8 @@ msgid "View Owners.."
msgstr "Visualizar Proprietários..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplicar"
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2763,7 +2745,7 @@ msgstr "Próximo Diretório"
#: editor/filesystem_dock.cpp
msgid "Re-Scan Filesystem"
-msgstr "Re-escanear Arquivos de Sistema"
+msgstr "Re-escanear Sistema de Arquivos"
#: editor/filesystem_dock.cpp
msgid "Toggle folder status as Favorite"
@@ -2848,14 +2830,12 @@ msgid "Importing Scene.."
msgstr "Importando Cena..."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Transferir para Mapas de Luz:"
+msgstr "Generando Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Gerando AABB"
+msgstr "Generando para a Malha: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3007,7 +2987,7 @@ msgstr "Misturar com o Próximo Alterado"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Blend Time"
-msgstr "Mudar Tempo de Mistura"
+msgstr "Alterar Tempo de Mistura"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
@@ -3326,6 +3306,10 @@ msgstr "Editar Filtros de Nó"
msgid "Filters.."
msgstr "Filtros..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimationTree"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Livrar"
@@ -3475,23 +3459,30 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Não foi possível determinar um caminho para salvar as imagens do lightmap.\n"
+"Salve sua cena (para que as imagens sejam salvas no mesmo diretório), ou "
+"escolha um caminho nas propriedades do BakedLightmap."
#: 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 ""
+"Não há malhas para preparar. Certifique-se de que elas possuem um canal UV2 "
+"e que a propriedade \"Preparar Luz\" está habilitada."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Falha ao criar imagens do lightmap, certifique-se de que o caminho tem "
+"permissões de escrita."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Transferir para Mapas de Luz:"
+msgstr "Preparar Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Visualização"
@@ -3592,7 +3583,7 @@ msgstr "Alt+Arrastar: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
msgstr ""
-"Aperte \"v\" para Mudar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto "
+"Aperte \"v\" para Alterar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto "
"movendo)."
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3618,7 +3609,7 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
-msgstr "Clique para mudar o pivô de rotação do objeto."
+msgstr "Clique para alterar o pivô de rotação do objeto."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan Mode"
@@ -3626,7 +3617,7 @@ msgstr "Modo Panorâmico"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggles snapping"
-msgstr "Alternar Encaixar"
+msgstr "Alternar Encaixamento"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Snap"
@@ -3796,6 +3787,14 @@ msgstr "Adicionar %s"
msgid "Adding %s..."
msgstr "Adicionando %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Impossível instanciar múltiplos nós sem uma raiz."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3807,13 +3806,8 @@ msgid "Error instancing scene from %s"
msgstr "Erro ao instanciar cena de %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Essa operação requer um único nó selecionado."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
-msgstr "Alterar tipo padrão"
+msgstr "Mudar tipo padrão"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -4000,31 +3994,31 @@ msgstr "Criar Forma Convexa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr "Criar Mesh de Navegação"
+msgstr "Criar Malha de Navegação"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Malha contida não é do tipo ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "Falha ao desembrulhar UV. A malha pode não ter múltiplas faces?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Nenhuma malha para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Modelo não tem uma UV nesta camada"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr "Falta uma Mesh na MeshInstance!"
+msgstr "Falta uma Malha na MeshInstance!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr "Mesh não tem superfície para criar contornos dela!"
+msgstr "Malha não tem superfície para criar contornos dela!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
@@ -4056,25 +4050,23 @@ msgstr "Criar Colisão Convexa Irmã"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr "Criar Mesh de Contorno.."
+msgstr "Criar Malha de Contorno.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Visualizar"
+msgstr "Visualizar UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Visualizar"
+msgstr "Visualizar UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Desembrulhar UV2 para Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr "Criar Mesh de Contorno"
+msgstr "Criar Malha de Contorno"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
@@ -4083,23 +4075,24 @@ msgstr "Tamanho do Contorno:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
msgstr ""
-"Nenhuma mesh de origem especificada (e nenhuma MultiMesh definida no nó)."
+"Nenhuma malha de origem especificada (e nenhuma MultiMesh definida no nó)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr "Nenhuma mesh de origem especificada (e MultiMesh contém nenhuma Mesh)."
+msgstr ""
+"Nenhuma malha de origem especificada (e MultiMesh contém nenhuma Malha)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
-msgstr "Mesh de origem é inválida (Caminho inválido)."
+msgstr "Malha de origem é inválida (caminho inválido)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr "Mesh de origem é inválida (não é uma MeshInstance)."
+msgstr "Malha de origem é inválida (não é uma MeshInstance)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr "Mesh de origem é inválida (contém nenhum recurso de Mesh)."
+msgstr "Malha de origem é inválida (contém nenhum recurso de Mesh)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
@@ -4127,7 +4120,7 @@ msgstr "Não foi possível mapear área."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Source Mesh:"
-msgstr "Selecione uma Mesh de origem:"
+msgstr "Selecione uma Malha de origem:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Target Surface:"
@@ -4147,7 +4140,7 @@ msgstr "Superfície Destino:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr "Mesh de Origem:"
+msgstr "Malha de Origem:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
@@ -4163,7 +4156,7 @@ msgstr "Eixo-Z"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr "Mesh acima do Eixo:"
+msgstr "Malha acima do Eixo:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
@@ -4186,12 +4179,12 @@ msgid "Bake!"
msgstr "Precalcular!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Preparar a mesh de navegação.\n"
+msgid "Bake the navigation mesh."
+msgstr "Preparar a malha de navegação."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
-msgstr "Apagar a mesh de navegação."
+msgstr "Apagar a malha de navegação."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Setting up Configuration..."
@@ -4231,11 +4224,11 @@ msgstr "Criando polimalha..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr "Convertando para mesh de navegação nativa..."
+msgstr "Convertando para malha de navegação nativa..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
-msgstr "Configuração do Gerador de Mesh de Navegação:"
+msgstr "Configuração do Gerador de Malha de Navegação:"
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
@@ -4331,7 +4324,7 @@ msgstr "Gerar AABB"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Mesh"
-msgstr "Criar Pontos de Emissão a Partir do Mesh"
+msgstr "Criar Pontos de Emissão a Partir da Malha"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Node"
@@ -4576,17 +4569,17 @@ msgstr "Carregar Recurso"
msgid "Paste"
msgstr "Colar"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ResourcePreloader"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Limpar Arquivos Recentes"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Fechar e salvar mudanças?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Fechar e salvar alterações?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4657,9 +4650,12 @@ msgid "Soft Reload Script"
msgstr "Recarregar Script (suave)"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Copiar Caminho"
+msgstr "Copiar Caminho do Script"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Mostrar no Sistema de Arquivos"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4793,7 +4789,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr "Apenas recursos de Arquivos podem ser soltos."
+msgstr "Apenas recursos do sistema de arquivos podem ser soltos."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4852,9 +4848,8 @@ msgid "Clone Down"
msgstr "Clonar Abaixo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Mostrar Linha"
+msgstr "Dobrar/Desdobrar Linha"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5019,7 +5014,7 @@ msgstr "Modificar Curve Map"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Input Name"
-msgstr "Alterar Nome de Entrada"
+msgstr "Alterar Nome da Entrada"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Connect Graph Nodes"
@@ -5051,7 +5046,7 @@ msgstr "Erro: Vínculo de Conexão Cíclico"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Error: Missing Input Connections"
-msgstr "Erro: Faltando Conexões de Entrada"
+msgstr "Erro: Faltando as Conexões da Entrada"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add Shader Graph Node"
@@ -5098,84 +5093,84 @@ msgid "Rotating %s degrees."
msgstr "Rotacionando %s degraus."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Visão inferior."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Chaveamento está desativado (nenhuma chave inserida)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Baixo"
+msgid "Animation Key Inserted."
+msgstr "Chave de Animação Inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Visão Superior."
+msgid "Objects Drawn"
+msgstr "Objetos Desenhados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Visão Traseira."
+msgid "Material Changes"
+msgstr "Alterações de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Traseira"
+msgid "Shader Changes"
+msgstr "Alterações de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Visão Frontal."
+msgid "Surface Changes"
+msgstr "Alterações de Superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Frente"
+msgid "Draw Calls"
+msgstr "Chamadas de Desenho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Visão Esquerda."
+msgid "Vertices"
+msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Esquerda"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Visão Direita."
+msgid "Top View."
+msgstr "Visão Superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Direita"
+msgid "Bottom View."
+msgstr "Visão inferior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Chaveamento está desativado (nenhuma chave inserida)."
+msgid "Bottom"
+msgstr "Baixo"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Chave de Animação Inserida."
+msgid "Left View."
+msgstr "Visão Esquerda."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Objetos Desenhados"
+msgid "Left"
+msgstr "Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Mudanças de Material"
+msgid "Right View."
+msgstr "Visão Direita."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Mudanças de Shader"
+msgid "Right"
+msgstr "Direita"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Mudanças de Superfície"
+msgid "Front View."
+msgstr "Visão Frontal."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Chamadas de Desenho"
+msgid "Front"
+msgstr "Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vértices"
+msgid "Rear View."
+msgstr "Visão Traseira."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Traseira"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5189,6 +5184,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Sem pai onde instanciar um filho."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Essa operação requer um único nó selecionado."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Exibição Normal"
@@ -5262,16 +5261,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de velocidade da Visão Livre"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "previsualizar"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Modo de Seleção (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Modo de Seleção (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5300,14 +5295,12 @@ msgid "Local Coords"
msgstr "Coordenadas Locais"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Modo Escala (R)"
+msgstr "Modo Espaço Local (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Modo Snap:"
+msgstr "Modo Encaixe (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5424,7 +5417,7 @@ msgstr "Configurações"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Visibilidade do Gizmo de Esqueleto"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5460,7 +5453,7 @@ msgstr "Visão Z-Longe:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
-msgstr "Mudar Transformação"
+msgstr "Alteração de Transformação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
@@ -5508,11 +5501,11 @@ msgstr "Adicionar Vazio"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr "Mudar Repetição da Animação"
+msgstr "Alterar Repetição da Animação"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation FPS"
-msgstr "Mudar FPS da Animação"
+msgstr "Alterar FPS da Animação"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "(empty)"
@@ -5550,10 +5543,18 @@ msgstr "Mover (Antes)"
msgid "Move (After)"
msgstr "Mover (Depois)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Pré-Visualização do StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Definir Retângulo de Região"
@@ -5579,14 +5580,17 @@ msgid "Auto Slice"
msgstr "Auto Fatiar"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Deslocamento:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Passo:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separação:"
@@ -5724,6 +5728,10 @@ msgstr "Fonte"
msgid "Color"
msgstr "Cor"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Apagar Seleção"
@@ -5809,9 +5817,8 @@ msgid "Merge from scene?"
msgstr "Fundir a partir de cena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet..."
+msgstr "Tile Set"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5825,6 +5832,34 @@ msgstr "Fundir a partir de Cena"
msgid "Error"
msgstr "Erro"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Autotiles"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Selecione o sub-tile para usar como ícone, isso também vai ser usado em "
+"vinculamentos de autotiles inválidos."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"LMB: ligar bit.\n"
+"RMB: desligar bit."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Selecione o sub-tile editado atual."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Selecione o sub-tile para alterar sua prioridade."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Cancelar"
@@ -5940,12 +5975,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Por favor, escolha um arquivo 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Seu projeto será criado em uma pasta não vazia (você pode querer criar uma "
-"nova pasta)."
+msgid "Please choose an empty folder."
+msgstr "Por favor, escolha uma pasta vazia."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5957,6 +5988,14 @@ msgid "Imported Project"
msgstr "Projeto Importado"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Impossível criar a pasta."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "Já há uma pasta neste caminho com o nome especificado."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Seria uma boa ideia nomear o seu projeto."
@@ -5997,14 +6036,26 @@ msgid "Import Existing Project"
msgstr "Importar Projeto Existente"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importar e Editar"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Criar Novo Projeto"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Criar e Editar"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Instalar Projeto:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Instalar e Editar"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nome do Projeto:"
@@ -6021,10 +6072,6 @@ msgid "Browse"
msgstr "Navegar"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "É um BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projeto Sem Nome"
@@ -6080,6 +6127,10 @@ msgstr ""
"confirma?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gerenciador de Projetos"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de Projetos"
@@ -6145,11 +6196,11 @@ msgstr "A ação \"%s\" já existe!"
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
-msgstr "Renomear Evento Ação de Entrada"
+msgstr "Renomear Evento de Ação de Entrada"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
-msgstr "Adicionar Evento Ação de Entrada"
+msgstr "Adicionar Evento de Ação de Entrada"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Shift+"
@@ -6208,11 +6259,6 @@ msgid "Button 9"
msgstr "Botão 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Alterar"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ãndice de Eixo do Joypad:"
@@ -6225,13 +6271,12 @@ msgid "Joypad Button Index:"
msgstr "Ãndice de Botão do Joypad:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Apagar Evento Ação de Entrada"
+msgstr "Apagar Ação de Entrada"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
-msgstr "Apagar Evento Ação de Entrada"
+msgstr "Apagar Evento de Ação de Entrada"
#: editor/project_settings_editor.cpp
msgid "Add Event"
@@ -6475,7 +6520,7 @@ msgstr "Novo Script"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Novo %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6510,9 +6555,8 @@ msgid "On"
msgstr "Ativo"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Adicionar Vazio"
+msgstr "[Vazio]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6592,15 +6636,11 @@ msgid "Error loading scene from %s"
msgstr "Erro ao carregar cena de %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
msgstr ""
-"Não se pode instanciar a cena \"%s\" porque a cena atual existe dentro de um "
+"Impossível instanciar a cena \"%s\" porque a cena atual existe dentro de um "
"de seus nós."
#: editor/scene_tree_dock.cpp
@@ -6684,8 +6724,8 @@ msgid "Error duplicating scene to save it."
msgstr "Erro duplicando cena ao salvar."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Sub-Recursos:"
+msgid "Sub-Resources"
+msgstr "Sub-Recursos"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6709,7 +6749,7 @@ msgstr "Instânciar Cena Filha"
#: editor/scene_tree_dock.cpp
msgid "Change Type"
-msgstr "Alterar Tipo"
+msgstr "Mudar Tipo"
#: editor/scene_tree_dock.cpp
msgid "Attach Script"
@@ -6865,7 +6905,7 @@ msgstr "Erro ao carregar modelo '%s'"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr "Erro - Não foi possível criar o script no sistema de arquivos."
+msgstr "Erro - Não se pôde criar o script no sistema de arquivos."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
@@ -6987,7 +7027,7 @@ msgstr "Função:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Escolhe um ou mais itens da lista para mostrar o gráfico."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Erros"
@@ -6996,6 +7036,10 @@ msgid "Child Process Connected"
msgstr "Processo Filho Conectado"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Erro ao Copiar"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspecionar a Instância Anterior"
@@ -7089,51 +7133,51 @@ msgstr "Atalhos"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "VInculamento"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
-msgstr "Mudar Raio da Luz"
+msgstr "Alterar Raio da Luz"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr "Mudar o Ângulo de Emissão do AudioStreamPlayer3D"
+msgstr "Alterar o Ângulo de Emissão do AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
-msgstr "Mudar FOV da Câmera"
+msgstr "Alterar FOV da Câmera"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera Size"
-msgstr "Mudar Tamanho da Câmera"
+msgstr "Alterar Tamanho da Câmera"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Sphere Shape Radius"
-msgstr "Mudar Raio da Forma de Esfera"
+msgstr "Alterar Raio da Forma da Esfera"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Box Shape Extents"
-msgstr "Mudar Dimensões da Forma de Caixa"
+msgstr "Alterar Dimensões da Forma da Caixa"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Radius"
-msgstr "Alterar o raio do Shape Capsule"
+msgstr "Alterar o Raio da Forma da Cápsula"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Height"
-msgstr "Alterar a altura do Shape Capsule"
+msgstr "Alterar a Altura da Forma da Cápsula"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
-msgstr "Mudar o tamanho do Shape Ray"
+msgstr "Alterar o Comprimento da Forma do Raio"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier Extents"
-msgstr "Alterar a Extensão do Notificador"
+msgstr "Alterar a Dimensão do Notificador"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr "Mudar o AABB das Partículas"
+msgstr "Alterar o AABB das Partículas"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -7141,43 +7185,39 @@ msgstr "Alterar a Extensão da Sonda"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Selecione a biblioteca dinâmica para esta entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Selecione as dependências da biblioteca para esta entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Remover Ponto da Curva"
+msgstr "Remover a entrada atual"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Dê um clique duplo para criar uma nova entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Plataforma:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Copiar para a Plataforma..."
+msgstr "Plataforma"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Biblioteca"
+msgstr "Biblioteca Dinâmica"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Adicionar uma entrada de arquitetura"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7347,10 +7387,50 @@ msgstr "Configurações do GridMap"
msgid "Pick Distance:"
msgstr "Escolha uma Distância:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Gerando solução..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "Gerando projeto C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Falha ao criar solução."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Falha ao salvar solução."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Pronto"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Falha ao criar projeto C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Criar solução C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Compilações"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Compilar Projeto"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Avisos"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7389,11 +7469,11 @@ msgstr "Sobrecarga da pilha com profundidade: "
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
-msgstr "Editar Argumentos do Sinal"
+msgstr "Alterar Argumentos do Sinal"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument Type"
-msgstr "Alterar Tipo do Argumento"
+msgstr "Mudar Tipo do Argumento"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument name"
@@ -7561,7 +7641,7 @@ msgstr "Script já tem uma função '%s'"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Alterar Valor de Entrada"
+msgstr "Alterar Valor da Entrada"
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't copy the function node."
@@ -7710,24 +7790,28 @@ 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:\n"
-msgstr "Não foi possível escrever o arquivo:\n"
+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:\n"
-msgstr "Não foi possível abrir o modelo para exportar:\n"
+msgid "Could not open template for export:"
+msgstr "Não foi possível abrir o modelo para exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Template de Exportação Inválido:\n"
+msgid "Invalid export template:"
+msgstr "Template de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Não foi possível ler o shell HTML personalizado:\n"
+msgid "Could not read custom 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:\n"
-msgstr "Não foi possível ler o arquivo de imagem boot splash:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Não foi possível ler o arquivo de imagem boot splash:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "Usando imagem boot splash padrão."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7746,6 +7830,17 @@ msgstr ""
"instanciadas). O primeiro criado irá funcionar, enquanto os outros serão "
"ignorados."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Este nó não possui filhos com formas, então não pode interagir com o "
+"espaço.\n"
+"Considere adicionar os nós CollisionShape2D ou CollisionPolygon2D como filho "
+"para definir sua forma."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7835,13 +7930,13 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Mudanças de tamanho no RigidBody2D (nos modos Character ou Rigid) serão "
+"Alterações de tamanho no RigidBody2D (nos modos Character ou Rigid) serão "
"sobrescritas pelo motor de física ao executar.\n"
-"Ao invés disso, mude o tamanho nas formas de colisão filhas."
+"Ao invés disso, altere o tamanho nas formas de colisão filhas."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7890,23 +7985,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin necessita um nó ARVRCamera como filho"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Planejando Malhas"
+msgstr "Planejando Malhas: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Planejando Malhas"
+msgstr "Planejando Luzes:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Terminando de Plotar"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Planejando Malhas"
+msgstr "Iluminando Malhas: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Este nó não possui filhos com formas, então não pode interagir com o "
+"espaço.\n"
+"Considere adicionar os nós CollisionShape2D ou CollisionPolygon2D como filho "
+"para definir sua forma."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7962,17 +8065,17 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
-"Nada está visível porque as malhas não foram atribuídas a passes de desenho."
+"Nada está visível porque as meshes não foram atribuídas a passes de desenho."
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"Mudanças de tamanho no RigidBody (nos modos Character e Rigid) serão "
+"Alterações de tamanho no RigidBody (nos modos Character e Rigid) serão "
"sobrescritas pelo motor de física ao executar.\n"
-"Ao invés disso, mude o tamanho nas formas de colisão filhas."
+"Ao invés disso, altere o tamanho nas formas de colisão filhas."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -8047,11 +8150,11 @@ msgstr "(Outro)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
-"O Ambiente Padrão como especificado nas Configurações de Projeto "
-"(Renderização - Viewport -> Ambiente Padrão) não pôde ser carregado."
+"O Ambiente Padrão especificado nas Configurações de Projeto (Rendering -> "
+"Environment -> Default Environment) não pôde ser carregado."
#: scene/main/viewport.cpp
msgid ""
@@ -8081,6 +8184,40 @@ msgstr "Erro ao carregar fonte."
msgid "Invalid font size."
msgstr "Tamanho de fonte inválido."
+#~ msgid "Next"
+#~ msgstr "Próximo"
+
+#~ msgid "Not found!"
+#~ msgstr "Não encontrado!"
+
+#~ msgid "Replace By"
+#~ msgstr "Substituir Por"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Diferenciar Caixa"
+
+#~ msgid "Backwards"
+#~ msgstr "Para trás"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Perguntar ao Substituir"
+
+#~ msgid "Skip"
+#~ msgstr "Pular"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Seu projeto será criado em uma pasta não vazia (você pode querer criar "
+#~ "uma nova pasta)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "É um BINGO!"
+
+#~ msgid "preview"
+#~ msgstr "previsualizar"
+
#~ msgid "Move Add Key"
#~ msgstr "Mover Adicionar Chave"
@@ -8174,9 +8311,6 @@ msgstr "Tamanho de fonte inválido."
#~ msgid "' parsing of config failed."
#~ msgstr "' falha no processamento de configurações."
-#~ msgid "Theme"
-#~ msgstr "Tema"
-
#~ msgid "Method List For '%s':"
#~ msgstr "Lista de Métodos para \"%s\":"
@@ -8447,9 +8581,6 @@ msgstr "Tamanho de fonte inválido."
#~ msgid "Import Anyway"
#~ msgstr "Importar Mesmo Assim"
-#~ msgid "Import & Open"
-#~ msgstr "Importar e Abrir"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr "A cena editada não foi salva, abrir cena importada ainda assim?"
@@ -8703,9 +8834,6 @@ msgstr "Tamanho de fonte inválido."
#~ msgid "Stereo"
#~ msgstr "Estéreo"
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Pitch"
#~ msgstr "Pitch"
@@ -8839,9 +8967,6 @@ msgstr "Tamanho de fonte inválido."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Alerta quando um recurso externo foi alterado."
-#~ msgid "Tutorials"
-#~ msgstr "Tutoriais"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Abre https://godotengine.org na seção tutoriais."
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 3fdb664e07..7bddb64cd0 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -6,7 +6,7 @@
# António Sarmento <antonio.luis.sarmento@gmail.com>, 2016.
# Carlos Vieira <carlos.vieira@gmail.com>, 2017.
# João Graça <jgraca95@gmail.com>, 2017.
-# João Lopes <linux-man@hotmail.com>, 2017.
+# João Lopes <linux-man@hotmail.com>, 2017-2018.
# Miguel Gomes <miggas09@gmail.com>, 2017.
# Pedro Gomes <pedrogomes1698@gmail.com>, 2017.
# Rueben Stevens <supercell03@gmail.com>, 2017.
@@ -16,15 +16,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-05 04:49+0000\n"
+"PO-Revision-Date: 2018-01-22 08:08+0000\n"
"Last-Translator: João Lopes <linux-man@hotmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
"Language: pt_PT\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 2.18-dev\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -35,46 +35,44 @@ msgid "All Selection"
msgstr "Toda Selecção"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Mudar valor da Animação"
+msgstr "Anim Mudar Tempo do Keyframe"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr "Mudar transição da Animação"
+msgstr "Anim Mudar Transição"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr "Mudar transformação da Animação"
+msgstr "Anim Mudar Transformação"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Mudar valor da Animação"
+msgstr "Anim Mudar Valor do Keyframe"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr "Mudar chamada da Animação"
+msgstr "Anim Mudar Chamada"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr "Adicionar pista de Animação"
+msgstr "Anim Adicionar Pista"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Duplicar chaves da Animação"
+msgstr "Anim Duplicar Chaves"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr "Subir pista de Animação"
+msgstr "Subir Pista de Animação"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr "Descer pista de Animação"
+msgstr "Descer Pista de Animação"
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr "Remover pista de Animação"
+msgstr "Remover Pista de Animação"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
@@ -82,19 +80,19 @@ msgstr "Definir transições para:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr "Renomear pista de Animação"
+msgstr "Anim Renomear Pista"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr "Mudar interpolação da pista de Animação"
+msgstr "Pista Anim Mudar Interpolação"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr "Mudar modo do valor da pista de Animação"
+msgstr "Pista Anim Mudar Modo do Valor"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
-msgstr "Mudar modo de embrulho da pista de Animação"
+msgstr "Pista Anim Mudar Modo de Embrulho"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -106,7 +104,7 @@ msgstr "Editar Curva da Seleção"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr "Eliminar Pontos da Animação"
+msgstr "Anim Eliminar Chaves"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -135,11 +133,11 @@ msgstr "Gatilho"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr "Adicionar Pontos de Animação"
+msgstr "Anim Adicionar Chave"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
-msgstr "Mover Pontos de Animação"
+msgstr "Anim Mover Chaves"
#: editor/animation_editor.cpp
msgid "Scale Selection"
@@ -188,7 +186,7 @@ msgstr "Transições"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr "Optimizar Animação"
+msgstr "Otimizar Animação"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
@@ -196,56 +194,55 @@ msgstr "Limpar Animação"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr "Criar NOVA pista para %s e inserir chave?"
+msgstr "Criar NOVA Pista para %s e inserir Chave?"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "Criar %d NOVAS pistas e inserir chaves?"
+msgstr "Criar %d NOVAS Pistas e inserir Chaves?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Criar"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
-msgstr "Criar e inserir Animação"
+msgstr "Anim Criar & Inserir"
#: editor/animation_editor.cpp
msgid "Anim Insert Track & Key"
-msgstr "Inserir pista e Ponto na Animação"
+msgstr "Anim Inserir Pista & Chave"
#: editor/animation_editor.cpp
msgid "Anim Insert Key"
-msgstr "Inserir Ponto de Animação"
+msgstr "Anim Inserir Chave"
#: editor/animation_editor.cpp
msgid "Change Anim Len"
-msgstr "Mudar duração da Animação"
+msgstr "Mudar Duração da Animação"
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr "Mudar ciclo da Animação"
+msgstr "Mudar Ciclo da Animação"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
-msgstr "Criar Ponto de valor digitado na Animação"
+msgstr "Anim Criar Chave de Valor Digitado"
#: editor/animation_editor.cpp
msgid "Anim Insert"
-msgstr "Inserir Animação"
+msgstr "Anim Inserir"
#: editor/animation_editor.cpp
msgid "Anim Scale Keys"
-msgstr "Escalar Pontos da Animação"
+msgstr "Anim Escalar Chaves"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
-msgstr "Adicionar chamada de pista de Animação"
+msgstr "Anim Adicionar Pista de chamada"
#: editor/animation_editor.cpp
msgid "Animation zoom."
@@ -273,19 +270,19 @@ msgstr "Ativar/Desativar repetição na Animação."
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr "Adicionar novas pistas."
+msgstr "Adicionar novas Pistas."
#: editor/animation_editor.cpp
msgid "Move current track up."
-msgstr "Mover pista atual para cima."
+msgstr "Mover Pista atual para cima."
#: editor/animation_editor.cpp
msgid "Move current track down."
-msgstr "Mover pista atual para baixo."
+msgstr "Mover Pista atual para baixo."
#: editor/animation_editor.cpp
msgid "Remove selected track."
-msgstr "Remover pista selecionada."
+msgstr "Remover Pista selecionada."
#: editor/animation_editor.cpp
msgid "Track tools"
@@ -293,11 +290,11 @@ msgstr "Ferramentas da Pista"
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr "Ativar edição de chaves individuais ao clicar nelas."
+msgstr "Ativar edição de Chaves individuais ao clicar nelas."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr "Optimizador de Animações"
+msgstr "Otimizador de Anim."
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
@@ -337,11 +334,11 @@ msgstr "Chamar funções em que Nó?"
#: editor/animation_editor.cpp
msgid "Remove invalid keys"
-msgstr "Remover chaves invalidas"
+msgstr "Remover Chaves inválidas"
#: editor/animation_editor.cpp
msgid "Remove unresolved and empty tracks"
-msgstr "Remover pistas vazias ou não resolvidas"
+msgstr "Remover Pistas vazias ou não resolvidas"
#: editor/animation_editor.cpp
msgid "Clean-up all animations"
@@ -349,7 +346,7 @@ msgstr "Limpar todas as Animações"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr "Limpar Animação(ções) (DEFINITIVO!)"
+msgstr "Limpar Animação(ões) (DEFINITIVO!)"
#: editor/animation_editor.cpp
msgid "Clean-Up"
@@ -384,14 +381,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Substituído %d ocorrência(s)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Substituir"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Substituir todos"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Caso de Compatibilidade"
@@ -400,48 +389,16 @@ msgid "Whole Words"
msgstr "Palavras inteiras"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Apenas seleção"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Procurar"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Encontrar"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Proximo"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Não encontrado!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Substituir por"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Sensível a maiúsculas"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Para trás"
+msgid "Replace"
+msgstr "Substituir"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Perguntar ao substituir"
+msgid "Replace All"
+msgstr "Substituir todos"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Ignorar"
+msgid "Selection Only"
+msgstr "Apenas seleção"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -543,9 +500,8 @@ msgid "Connecting Signal:"
msgstr "Ligar sinal:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Ligar '%s' a '%s'"
+msgstr "Desligar '%s' de '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -561,9 +517,17 @@ msgid "Signals"
msgstr "Sinais"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Mudar tipo %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Mudar"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Criar Novo"
+msgstr "Criar Novo %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -653,7 +617,7 @@ msgstr "Procurar recurso de substituição:"
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp scene/gui/file_dialog.cpp
msgid "Open"
-msgstr "Aberto"
+msgstr "Abrir"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
@@ -674,8 +638,8 @@ msgstr ""
"Remover mesmo assim? (sem anular)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Não é possível remover:\n"
+msgid "Cannot remove:"
+msgstr "Impossível remover:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -731,7 +695,7 @@ msgstr "Apagar"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
-msgstr "Mudar chave de dicionário"
+msgstr "Mudar Chave de Dicionário"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Value"
@@ -757,9 +721,9 @@ msgstr "Fundadores do Projeto"
msgid "Lead Developer"
msgstr "Desenvolvedor-chefe"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Gestor de Projeto"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Gestor de Projeto "
#: editor/editor_about.cpp
msgid "Developers"
@@ -835,7 +799,7 @@ msgstr "Error ao abrir Ficheiro comprimido, não está no formato zip."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr "Descompactando Ativos"
+msgstr "A descompactar Ativos"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
@@ -847,7 +811,7 @@ msgid "Success!"
msgstr "Sucesso!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Instalar"
@@ -868,9 +832,8 @@ msgid "Rename Audio Bus"
msgstr "Mudar Barramento de Ãudio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Alternar solo do canal áudio"
+msgstr "Alterar Volume do canal áudio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -935,7 +898,7 @@ msgstr "Apagar Efeito"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1116,13 +1079,12 @@ msgid "Updating scene.."
msgstr "Atualizando a Cena.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(vazio)"
+msgstr "[vazio]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[não guardado]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1162,8 +1124,8 @@ msgid "Packing"
msgstr "Empacotamento"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Ficheiro Modelo não encontrado:\n"
+msgid "Template file not found:"
+msgstr "Ficheiro Modelo não encontrado:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1286,7 +1248,7 @@ msgstr "Analisar fontes"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr "Importar Ativos"
+msgstr "A (Re)Importar Ativos"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1374,6 +1336,20 @@ msgid "Description"
msgstr "Descrição"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Tutoriais Online:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Atualmente não existem tutoriais para esta classe, pode [color=$color][url="
+"$url]contribuir com um[/url][/color] ou [color=$color][url=$url2]solicitar "
+"um[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Propriedades"
@@ -1409,6 +1385,10 @@ msgstr ""
msgid "Search Text"
msgstr "Texto de Pesquisa"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Encontrar"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Saída:"
@@ -1420,6 +1400,10 @@ msgstr "Saída:"
msgid "Clear"
msgstr "Limpar"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Limpar Saída"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Erro ao guardar recurso!"
@@ -1428,8 +1412,8 @@ msgstr "Erro ao guardar recurso!"
msgid "Save Resource As.."
msgstr "Guardar Recurso Como.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Eu vejo.."
@@ -1467,7 +1451,7 @@ msgstr "Erro ao carregar '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr "Guardando Cena"
+msgstr "A guardar a Cena"
#: editor/editor_node.cpp
msgid "Analyzing"
@@ -1483,10 +1467,11 @@ msgstr "Esta operação não pode ser feita sem uma raiz da árvore."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Não foi possível guardar Cena. Provavelmente, as dependências (instâncias) "
-"não puderam ser satisfeitas."
+"Impossível guardar Cena. Provavelmente, as dependências (instâncias ou "
+"heranças) não puderam ser satisfeitas."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1680,7 +1665,7 @@ msgstr "Guardar alterações a '%s' antes de fechar?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr "Guardar Cena Como.."
+msgstr "Guardar Cena como.."
#: editor/editor_node.cpp
msgid "No"
@@ -2021,8 +2006,8 @@ msgid ""
"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
"running game if this option is turned on."
msgstr ""
-"Com esta opção ativada, formas de colisão e Nós raycast (para 2D e 3D) "
-"serão visíveis no jogo em execução."
+"Com esta opção ativa, formas de colisão e Nós raycast (para 2D e 3D) serão "
+"visíveis no jogo em execução."
#: editor/editor_node.cpp
msgid "Visible Navigation"
@@ -2033,7 +2018,7 @@ msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
msgstr ""
-"Com esta opção ativa, Meshes e Polígonos serão visíveis no jogo em execução."
+"Com esta opção ativa, Meshes e Polígonos serão visíveis no jogo em execução."
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
@@ -2046,7 +2031,7 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
-"Com esta opção ativa, alterações da Cena no Editor serão replicadas no jogo "
+"Com esta opção ativa, alterações da Cena no Editor serão replicadas no jogo "
"em execução.\n"
"Quando usada num dispositivo remoto, é mais eficiente com um Sistema de "
"Ficheiros em rede."
@@ -2062,7 +2047,7 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
-"Com esta opção ativa, qualquer Script guardado será recarregado no jogo em "
+"Com esta opção ativa, qualquer Script guardado será recarregado no jogo em "
"execução.\n"
"Quando usada num dispositivo remoto, é mais eficiente com um Sistema de "
"Ficheiros em rede."
@@ -2081,7 +2066,7 @@ msgstr "Apresentação do Editor"
#: editor/editor_node.cpp
msgid "Toggle Fullscreen"
-msgstr "Alternar ecrã completo"
+msgstr "Alternar Ecrã completo"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
@@ -2095,6 +2080,13 @@ msgstr "Ajuda"
msgid "Classes"
msgstr "Classes"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Procurar"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Documentação Online"
@@ -2117,7 +2109,7 @@ msgstr "Sobre"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr "Executar o projeto."
+msgstr "Executa o projeto."
#: editor/editor_node.cpp
msgid "Play"
@@ -2125,7 +2117,7 @@ msgstr "Executar"
#: editor/editor_node.cpp
msgid "Pause the scene"
-msgstr "Pausar a Cena"
+msgstr "Pausa a cena"
#: editor/editor_node.cpp
msgid "Pause Scene"
@@ -2141,7 +2133,7 @@ msgstr "Parar"
#: editor/editor_node.cpp
msgid "Play the edited scene."
-msgstr "Executar a Cena editada."
+msgstr "Executa a cena editada."
#: editor/editor_node.cpp
msgid "Play Scene"
@@ -2149,7 +2141,7 @@ msgstr "Executar a Cena"
#: editor/editor_node.cpp
msgid "Play custom scene"
-msgstr "Executar a Cena customizada"
+msgstr "Executa a cena customizada"
#: editor/editor_node.cpp
msgid "Play Custom Scene"
@@ -2366,14 +2358,12 @@ msgid "Frame #:"
msgstr "# quadro:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Tempo:"
+msgstr "Tempo"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Chamar"
+msgstr "Chamadas"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2480,8 +2470,8 @@ 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:\n"
-msgstr "Erro ao criar o Caminho para os Modelos:\n"
+msgid "Error creating path for templates:"
+msgstr "Erro ao criar o Caminho para os Modelos:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2489,7 +2479,7 @@ msgstr "A Extrair os Modelos de Exportação"
#: editor/export_template_manager.cpp
msgid "Importing:"
-msgstr "Importando:"
+msgstr "A Importar:"
#: editor/export_template_manager.cpp
msgid ""
@@ -2516,7 +2506,6 @@ msgstr "Sem resposta."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Pedido falhado."
@@ -2564,9 +2553,8 @@ msgid "Connecting.."
msgstr "A ligar.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
-msgstr "Impossível conectar"
+msgstr "Impossível conetar"
#: editor/export_template_manager.cpp
msgid "Connected"
@@ -2640,11 +2628,8 @@ msgid "View items as a list"
msgstr "Visualizar itens como uma lista"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Estado: A importação do Ficheiro falhou. Corrija o Ficheiro e importe "
"manualmente."
@@ -2653,21 +2638,20 @@ msgid "Cannot move/rename resources root."
msgstr "Não foi possível mover/renomear raíz dos recursos."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Não pode mover uma pasta para si mesma.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Não pode mover uma pasta para si mesma."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Erro ao mover:\n"
+msgid "Error moving:"
+msgstr "Erro ao mover:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Erro ao carregar:"
+msgid "Error duplicating:"
+msgstr "Erro ao duplicar:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Não foi possível atualizar as dependências:\n"
+msgid "Unable to update dependencies:"
+msgstr "Incapaz de atualizar dependências:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2698,14 +2682,12 @@ msgid "Renaming folder:"
msgstr "Renomear diretoria:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Duplicado"
+msgstr "A duplicar Ficheiro:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Renomear diretoria:"
+msgstr "A duplicar Diretoria:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2724,9 +2706,8 @@ msgid "Move To.."
msgstr "Mover para.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Abrir Cena"
+msgstr "Abrir Cena(s)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2741,9 +2722,8 @@ msgid "View Owners.."
msgstr "Ver proprietários..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Duplicado"
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2840,14 +2820,12 @@ msgid "Importing Scene.."
msgstr "A importar Cena.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "A gerar AABB"
+msgstr "A gerar Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "A gerar AABB"
+msgstr "A gerar para Mesh: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -2924,11 +2902,11 @@ msgstr "Inserir Ponto"
#: editor/plugins/collision_polygon_editor_plugin.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Edit Poly (Remove Point)"
-msgstr "Editar Polígono (Remover Ponto)"
+msgstr "Editar Poly (Remover Ponto)"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Remove Poly And Point"
-msgstr "Remover Polígono e Ponto"
+msgstr "Remover Poly e Ponto"
#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid "Create a new polygon from scratch"
@@ -2956,7 +2934,7 @@ msgstr "Alternar reprodução automática"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "New Animation Name:"
-msgstr "Novo nome da Animação:"
+msgstr "Novo Nome da Animação:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "New Anim"
@@ -2964,7 +2942,7 @@ msgstr "Nova Animação"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Animation Name:"
-msgstr "Mudar o nome da Animação:"
+msgstr "Mudar o Nome da Animação:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Delete Animation?"
@@ -3068,7 +3046,7 @@ msgstr "Abrir Animação do disco."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load an animation from disk."
-msgstr "Abrir uma Animação do disco."
+msgstr "Carregar uma Animação do disco."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
@@ -3144,7 +3122,7 @@ msgstr "Incluir ferramentas (3D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
-msgstr "Criar nova Animação"
+msgstr "Criar Nova Animação"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Name:"
@@ -3316,6 +3294,10 @@ msgstr "Editar filtros de Nó"
msgid "Filters.."
msgstr "Filtros..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimationTree"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Livre"
@@ -3457,7 +3439,7 @@ msgstr "A testar"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
-msgstr "Ficheiro de Ativos ZIP"
+msgstr "Ficheiro ZIP de Ativos"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
@@ -3465,23 +3447,28 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Impossível determinar um caminho para guardar imagens lightmap.\n"
+"Guarde a sua Cena (para as imagens serem guardadas na mesma diretoria), ou "
+"escolha um caminho nas propriedades BakedLightmap."
#: 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 ""
+"Não há Meshes para cozinhar. Assegure-se que contêm um canal UV2 e que a "
+"referência 'Bake Light' flag está on."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
+msgstr "Falha ao criar imagens lightmap, assegure-se que o caminho é gravável."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Mudar raio da luz"
+msgstr "Cozinhar Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Previsualização"
@@ -3743,15 +3730,15 @@ msgstr "Esquema"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
-msgstr "Inserir chaves"
+msgstr "Inserir Chaves"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr "Inserir chave"
+msgstr "Inserir Chave"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr "Inserir chave (faixas existentes)"
+msgstr "Inserir Chave (Pistas existentes)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
@@ -3785,6 +3772,14 @@ msgstr "Adicionar %s"
msgid "Adding %s..."
msgstr "A adicionar %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Impossível instanciar nós múltiplos sem raiz."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3796,11 +3791,6 @@ msgid "Error instancing scene from %s"
msgstr "Erro a instanciar Cena de %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Esta operação requer um único Nó selecionado."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Mudar tipo padrão"
@@ -3993,19 +3983,19 @@ msgstr "Criar Mesh de navegação"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Mesh incluída não é do tipo ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "Falhou o desempacotamento UV, a Mesh pode não ser múltipla?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Nenhuma Mesh para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "O Modelo não tem UV neste Layer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4048,18 +4038,16 @@ msgid "Create Outline Mesh.."
msgstr "Criar Mesh contorno..."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Ver"
+msgstr "Ver UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Ver"
+msgstr "Ver UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Desempacotar UV2 para Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4174,8 +4162,8 @@ msgid "Bake!"
msgstr "Cozinhar!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Cozinhar a Mesh de navegação.\n"
+msgid "Bake the navigation mesh."
+msgstr "Cozinhar a Mesh de navegação."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4394,12 +4382,12 @@ msgstr "Shift+Arrastar: Selecionar Pontos de controlo"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Click: Add Point"
-msgstr "Click: Adicionar Ponto"
+msgstr "Clique: Adicionar Ponto"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Right Click: Delete Point"
-msgstr "Click direito: Apagar Ponto"
+msgstr "Clique direito: Apagar Ponto"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
@@ -4427,7 +4415,7 @@ msgstr "Fechar curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Curve Point #"
-msgstr "Ponto #"
+msgstr "Ponto da curva #"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
@@ -4563,17 +4551,17 @@ msgstr "Carregar recurso"
msgid "Paste"
msgstr "Colar"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ResourcePreloader"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Limpar Ficheiros recentes"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Fechar e guardar alterações?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Fechar e guardar alterações?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4644,9 +4632,12 @@ msgid "Soft Reload Script"
msgstr "Script de Recarregamento"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Copiar Caminho"
+msgstr "Copiar Caminho do Script"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Mostrar no Sistema de Ficheiros"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4839,9 +4830,8 @@ msgid "Clone Down"
msgstr "Clonar abaixo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Mostrar linha"
+msgstr "Fechar/Abrir Linha"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -4874,19 +4864,19 @@ msgstr "Indentação automática"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Toggle Breakpoint"
-msgstr "Acionar Breakpoint"
+msgstr "Alternar Breakpoint"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr "Remover todos os Pontos de paragem"
+msgstr "Remover todos os Breakpoints"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Next Breakpoint"
-msgstr "Ir para próximo Ponto de paragem"
+msgstr "Ir para próximo Breakpoint"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Previous Breakpoint"
-msgstr "Ir para Ponto de paragem anterior"
+msgstr "Ir para Breakpoint anterior"
#: editor/plugins/script_text_editor.cpp
msgid "Convert To Uppercase"
@@ -5085,84 +5075,84 @@ msgid "Rotating %s degrees."
msgstr "A rodar %s graus."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Vista de fundo."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Edição desativada (nenhuma Chave inserida)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Fundo"
+msgid "Animation Key Inserted."
+msgstr "Chave de Animação inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Vista de topo."
+msgid "Objects Drawn"
+msgstr "Objetos desenhados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Vista de trás."
+msgid "Material Changes"
+msgstr "Mudanças de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Trás"
+msgid "Shader Changes"
+msgstr "Alterações do Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Vista de frente."
+msgid "Surface Changes"
+msgstr "Mudanças de superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Frente"
+msgid "Draw Calls"
+msgstr "Chamadas de desenho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Vista de esquerda."
+msgid "Vertices"
+msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Esquerda"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Vista de direita."
+msgid "Top View."
+msgstr "Vista de topo."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Direita"
+msgid "Bottom View."
+msgstr "Vista de fundo."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Edição desativada (nenhum Ponto inserido)."
+msgid "Bottom"
+msgstr "Fundo"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Ponto de Animação inserido."
+msgid "Left View."
+msgstr "Vista de esquerda."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Objetos desenhados"
+msgid "Left"
+msgstr "Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Mudanças de Material"
+msgid "Right View."
+msgstr "Vista de direita."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Alterações do Shader"
+msgid "Right"
+msgstr "Direita"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Mudanças de superfície"
+msgid "Front View."
+msgstr "Vista de frente."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Chamadas de desenho"
+msgid "Front"
+msgstr "Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Vértices"
+msgid "Rear View."
+msgstr "Vista de trás."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Trás"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5176,6 +5166,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Sem parente para criar instância de filho."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Esta operação requer um único Nó selecionado."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Vista normal"
@@ -5249,16 +5243,12 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de velocidade Freelook"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "Pré-visualização"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Modo seleção (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Modo seleção (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5287,14 +5277,12 @@ msgid "Local Coords"
msgstr "Coordenadas locais"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Modo escalar (R)"
+msgstr "Modo Espaço Local (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Modo Ajuste:"
+msgstr "Modo Ajuste (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5326,7 +5314,7 @@ msgstr "Alternar vista perspetiva/ortogonal"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
-msgstr "Inserir Ponto de Animação"
+msgstr "Inserir Chave de Animação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
@@ -5411,7 +5399,7 @@ msgstr "Configuração"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "Visibilidade do Skeleton Gizmo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5495,7 +5483,7 @@ msgstr "Adicionar vazio"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr "Mudar ciclo de Animação"
+msgstr "Mudar Ciclo da Animação"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation FPS"
@@ -5537,10 +5525,18 @@ msgstr "Mover (antes)"
msgid "Move (After)"
msgstr "Mover (depois)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Pré-visualização StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Definir região Rect"
@@ -5566,14 +5562,17 @@ msgid "Auto Slice"
msgstr "Corte automático"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Compensação:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Passo:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Separação:"
@@ -5711,6 +5710,10 @@ msgstr "Letra"
msgid "Color"
msgstr "Cor"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Apagar seleção"
@@ -5796,9 +5799,8 @@ msgid "Merge from scene?"
msgstr "Fundir a partir da Cena?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet.."
+msgstr "Conjunto de tiles"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5812,6 +5814,34 @@ msgstr "Fundir a partir da Cena"
msgid "Error"
msgstr "Erro"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Tiles automáticos"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Selecionar sub-tile para usar como ícone, também será usado em ligações "
+"inválidas autotile."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"LMB: definir bit on.\n"
+"RMB: definir bit off."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Selecionar o sub-tile editado."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Selecionar sub-tile para alterar a sua prioridade."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Cancelar"
@@ -5925,12 +5955,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Escolha um Ficheiro 'project.godot'."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"O Projeto será criado numa pasta não vazia (poderá preferir criar uma nova "
-"pasta)."
+msgid "Please choose an empty folder."
+msgstr "Por favor escolha uma pasta vazia."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5941,6 +5967,14 @@ msgid "Imported Project"
msgstr "Projeto importado"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Impossível criar pasta."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "Já existe uma pasta neste caminho com o nome indicado."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Seria uma boa ideia dar um nome ao Projeto."
@@ -5981,14 +6015,26 @@ msgid "Import Existing Project"
msgstr "Importar Projeto existente"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Importar & Editar"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Criar novo Projeto"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Criar & Editar"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Instalar Projeto:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Instalar & Editar"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nome do Projeto:"
@@ -6005,10 +6051,6 @@ msgid "Browse"
msgstr "Navegar"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "É um BINGO!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Projeto sem nome"
@@ -6063,6 +6105,10 @@ msgstr ""
"Está prestes a analisar %s pastas para Projetos Godot existentes. Confirma?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Gestor de Projeto"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de Projetos"
@@ -6191,11 +6237,6 @@ msgid "Button 9"
msgstr "Botão 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Mudar"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ãndice do Eixo do joystick:"
@@ -6208,9 +6249,8 @@ msgid "Joypad Button Index:"
msgstr "Ãndice do botão do joypad:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Apagar evento ação de entrada"
+msgstr "Apagar Ação de Entrada"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6458,7 +6498,7 @@ msgstr "Novo Script"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Novo %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6493,9 +6533,8 @@ msgid "On"
msgstr "On"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Adicionar vazio"
+msgstr "[Vazio]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6575,10 +6614,6 @@ msgid "Error loading scene from %s"
msgstr "Erro ao carregar a Cena de %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6667,8 +6702,8 @@ msgid "Error duplicating scene to save it."
msgstr "Erro ao duplicar Cena para guardar."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Sub-recursos:"
+msgid "Sub-Resources"
+msgstr "Sub-recursos"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6970,7 +7005,7 @@ msgstr "Função:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Escolha um ou mais itens da lista para exibir o gráfico."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Erros"
@@ -6979,6 +7014,10 @@ msgid "Child Process Connected"
msgstr "Processo filho conectado"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Copiar Erro"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Inspecionar instância anterior"
@@ -7072,7 +7111,7 @@ msgstr "Atalhos"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Ligação"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7124,42 +7163,39 @@ msgstr "Mudar extensões de sonda"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Selecionar a biblioteca dinâmica para esta entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Selecionar dependências da biblioteca para este entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Remover Ponto da curva"
+msgstr "Remover Entrada atual"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Duplo clique para criar nova entrada"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Plataforma:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform"
-msgstr ""
+msgstr "Plataforma"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Biblioteca"
+msgstr "Biblioteca Dinâmica"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Adicionar uma entrada arquitetura"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7330,10 +7366,50 @@ msgstr "Configurações do GridMap"
msgid "Pick Distance:"
msgstr "Distância de escolha:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "A gerar soluções..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "A gerar projeto C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Falha ao criar solução."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Falha ao guardar solução."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Feito"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Falha ao criar projeto C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Criar solução C#"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Builds"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Construir Projeto"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Avisos"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7692,24 +7768,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Executar HTML exportado no Navegador padrão do sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "Impossível escrever Ficheiro:\n"
+msgid "Could not write file:"
+msgstr "Impossível escrever Ficheiro:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Impossível abrir Modelo para exportar:\n"
+msgid "Could not open template for export:"
+msgstr "Impossível abrir Modelo para exportar:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Modelo de exportação inválido:\n"
+msgid "Invalid export template:"
+msgstr "Modelo de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Impossível ler Shell HTML personalizado:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Impossível ler Shell HTML personalizado:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Impossível ler Ficheiro do ecrã de inicialização:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Impossível ler Ficheiro de imagem do ecrã de inicialização:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "A usar imagem de inicialização por defeito."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7728,6 +7808,17 @@ msgstr ""
"instanciadas). O primeiro a ser criado funcionará, enquanto o resto será "
"ignorado."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Este nó não tem formas filhos, não conseguindo assim interagir com o "
+"espaço.\n"
+"Considere adicionar nós filhos CollisionShape2D ou CollisionPolygon2D para "
+"definir a sua forma."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7817,7 +7908,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7872,23 +7963,31 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin exige um Nó filho ARVRCamera"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "A desenhar Meshes"
+msgstr "A traçar Meshes: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "A desenhar Meshes"
+msgstr "A traçar Luzes:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "A concluir desenho"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "A desenhar Meshes"
+msgstr "A iluminar Meshes: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Este nó não tem formas filhos, não conseguindo assim interagir com o "
+"espaço.\n"
+"Considere adicionar nós filhos CollisionShape ou CollisionPolygon para "
+"definir a sua forma."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7948,8 +8047,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Mudanças no tamanho do RigidBody (em modos caráter ou rígido) serão "
@@ -8031,11 +8130,11 @@ msgstr "(Outro)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Ambiente padrão especificado em Configuração do Projeto (Rendering -> "
-"Viewport -> Default Environment) não pode ser carregado."
+"Environment -> Default Environment) não pode ser carregado."
#: scene/main/viewport.cpp
msgid ""
@@ -8065,6 +8164,40 @@ msgstr "Erro ao carregar letra."
msgid "Invalid font size."
msgstr "Tamanho de letra inválido."
+#~ msgid "Next"
+#~ msgstr "Proximo"
+
+#~ msgid "Not found!"
+#~ msgstr "Não encontrado!"
+
+#~ msgid "Replace By"
+#~ msgstr "Substituir por"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Sensível a maiúsculas"
+
+#~ msgid "Backwards"
+#~ msgstr "Para trás"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Perguntar ao substituir"
+
+#~ msgid "Skip"
+#~ msgstr "Ignorar"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "O Projeto será criado numa pasta não vazia (poderá preferir criar uma "
+#~ "nova pasta)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "É um BINGO!"
+
+#~ msgid "preview"
+#~ msgstr "Pré-visualização"
+
#~ msgid "Move Add Key"
#~ msgstr "Mover Adicionar Chave"
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
new file mode 100644
index 0000000000..9aa5fbeeff
--- /dev/null
+++ b/editor/translations/ro.po
@@ -0,0 +1,7903 @@
+# Romanian translation of the Godot Engine editor
+# Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.
+# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
+# This file is distributed under the same license as the Godot source code.
+#
+# TigerxWood <TigerxWood@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Godot Engine editor\n"
+"PO-Revision-Date: 2018-01-20 08:55+0000\n"
+"Last-Translator: TigerxWood <TigerxWood@gmail.com>\n"
+"Language-Team: Romanian <https://hosted.weblate.org/projects/godot-engine/"
+"godot/ro/>\n"
+"Language: ro\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2;\n"
+"X-Generator: Weblate 2.19-dev\n"
+
+#: editor/animation_editor.cpp
+msgid "Disabled"
+msgstr "Dezactivat"
+
+#: editor/animation_editor.cpp
+msgid "All Selection"
+msgstr "Toate selecțiile"
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Keyframe Time"
+msgstr "Anim Schimbare timp cadre cheie"
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Transition"
+msgstr "Anim Schimbare tranziție"
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Transform"
+msgstr "Anim Schimbare transformare"
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Keyframe Value"
+msgstr "Anim Schimbare valoare cadre cheie"
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Call"
+msgstr "Anim Schimbare apelare"
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Track"
+msgstr "Anim Adăugare pistă"
+
+#: editor/animation_editor.cpp
+msgid "Anim Duplicate Keys"
+msgstr "Anim Clonare chei"
+
+#: editor/animation_editor.cpp
+msgid "Move Anim Track Up"
+msgstr "Mutare sus pistă anim"
+
+#: editor/animation_editor.cpp
+msgid "Move Anim Track Down"
+msgstr "Mutare jos pistă anim"
+
+#: editor/animation_editor.cpp
+msgid "Remove Anim Track"
+msgstr "Eliminare pistă anim"
+
+#: editor/animation_editor.cpp
+msgid "Set Transitions to:"
+msgstr "Setare tranziții la:"
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Rename"
+msgstr "Redenumire pistă anim"
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Interpolation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Value Mode"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Wrap Mode"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Edit Node Curve"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Edit Selection Curve"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Delete Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Duplicate Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Duplicate Transposed"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Continuous"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Discrete"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Trigger"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Move Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale From Cursor"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Goto Next Step"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Goto Prev Step"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
+msgid "Linear"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Constant"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "In"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Out"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "In-Out"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Out-In"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Transitions"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Optimize Animation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up Animation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Create NEW track for %s and insert key?"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Create %d NEW tracks and insert keys?"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
+msgid "Create"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Create & Insert"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert Track & Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Change Anim Len"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Change Anim Loop"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Create Typed Value Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Scale Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Call Track"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Animation zoom."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Length (s):"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Animation length (in seconds)."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Step (s):"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Cursor step snap (in seconds)."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Enable/Disable looping in animation."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Add new tracks."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move current track up."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move current track down."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove selected track."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Track tools"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Enable editing of individual keys by clicking them."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim. Optimizer"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max. Linear Error:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max. Angular Error:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max Optimizable Angle:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Optimize"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Transition"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale Ratio:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Call Functions in Which Node?"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove invalid keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove unresolved and empty tracks"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-up all animations"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up Animation(s) (NO UNDO!)"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Resize Array"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Change Array Value Type"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Change Array Value"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Go to Line"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Line Number:"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "No Matches"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replaced %d occurrence(s)."
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Match Case"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Whole Words"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replace"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replace All"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Selection Only"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Zoom In"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Zoom Out"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Reset Zoom"
+msgstr ""
+
+#: editor/code_editor.cpp editor/script_editor_debugger.cpp
+msgid "Line:"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Col:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Method in target Node must be specified!"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid ""
+"Target method not found! Specify a valid method or attach a script to target "
+"Node."
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect To Node:"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
+#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Add"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
+msgid "Remove"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Add Extra Call Argument:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Extra Call Arguments:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Path to Node:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Make Function"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Deferred"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Oneshot"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_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
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect '%s' to '%s'"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connecting Signal:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Disconnect '%s' from '%s'"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect.."
+msgstr ""
+
+#: editor/connections_dialog.cpp
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Disconnect"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
+msgid "Signals"
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "Create New %s"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp
+msgid "Favorites:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
+msgid "Recent:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp
+msgid "Search:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp
+msgid "Matches:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Search Replacement For:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependencies For:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid ""
+"Scene '%s' is currently being edited.\n"
+"Changes will not take effect unless reloaded."
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid ""
+"Resource '%s' is in use.\n"
+"Changes will take effect when reloaded."
+msgstr ""
+
+#: editor/dependency_editor.cpp
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Dependencies"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Resource"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Path"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependencies:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Fix Broken"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependency Editor"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Search Replacement Resource:"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_file_dialog.cpp
+#: editor/editor_help.cpp editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp scene/gui/file_dialog.cpp
+msgid "Open"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Owners Of:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+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)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Cannot remove:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Error loading:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Scene failed to load due to missing dependencies:"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_node.cpp
+msgid "Open Anyway"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Which action should be taken?"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Fix Dependencies"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Errors loading!"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Permanently delete %d item(s)? (No undo!)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Owns"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Resources Without Explicit Ownership:"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_node.cpp
+msgid "Orphan Resource Explorer"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Delete selected files?"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_file_dialog.cpp editor/editor_node.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
+#: editor/project_export.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Delete"
+msgstr ""
+
+#: editor/dictionary_property_edit.cpp
+msgid "Change Dictionary Key"
+msgstr ""
+
+#: editor/dictionary_property_edit.cpp
+msgid "Change Dictionary Value"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Change Audio Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Save Audio Bus Layout As.."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Location for New Layout.."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Open Audio Bus Layout"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Load"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save As"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Valid characters:"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing engine class name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing buit-in type name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing global constant name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid Path."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Not in resource path."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Add AutoLoad"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Autoload '%s' already exists!"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Rename Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Toggle AutoLoad Globals"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Move Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Remove Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Enable"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Rearrange Autoloads"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
+#: scene/gui/file_dialog.cpp
+msgid "Path:"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Node Name:"
+msgstr ""
+
+#: editor/editor_autoload_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 ""
+
+#: editor/editor_data.cpp
+msgid "Updating Scene"
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "Storing local changes.."
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "Updating scene.."
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "[empty]"
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "[unsaved]"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Choose a Directory"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
+msgid "Create Folder"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
+msgid "Name:"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
+msgid "Could not create folder."
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Choose"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Storing File:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Packing"
+msgstr ""
+
+#: editor/editor_export.cpp platform/javascript/export/export.cpp
+msgid "Template file not found:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "File Exists, Overwrite?"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Select Current Folder"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
+msgid "Copy Path"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
+msgid "Show In File Manager"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/filesystem_dock.cpp
+msgid "New Folder.."
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Refresh"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "All Recognized"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "All Files (*)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+msgid "Save"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Save a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Back"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Forward"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Up"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Hidden Files"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Favorite"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Mode"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Focus Path"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Move Favorite Up"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Move Favorite Down"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Directories & Files:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Preview:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
+#: scene/gui/file_dialog.cpp
+msgid "File:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Must use a valid extension."
+msgstr ""
+
+#: editor/editor_file_system.cpp
+msgid "ScanSources"
+msgstr ""
+
+#: editor/editor_file_system.cpp
+msgid "(Re)Importing Assets"
+msgstr ""
+
+#: editor/editor_help.cpp editor/editor_node.cpp
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search Help"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Class List:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Search Classes"
+msgstr ""
+
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
+#: editor/editor_help.cpp editor/property_editor.cpp
+msgid "Class:"
+msgstr ""
+
+#: editor/editor_help.cpp editor/scene_tree_editor.cpp
+msgid "Inherits:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Inherited by:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Brief Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
+#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Members:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Public Methods:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "GUI Theme Items:"
+msgstr ""
+
+#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Signals:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Constants:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Property Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Method Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Search Text"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
+#: editor/editor_log.cpp
+msgid "Output:"
+msgstr ""
+
+#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: modules/gdnative/gdnative_library_editor_plugin.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Clear"
+msgstr ""
+
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
+msgid "Error saving resource!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save Resource As.."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "I see.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't open file for writing:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Requested file format unknown:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while saving."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Saving Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Analyzing"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Creating Thumbnail"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Failed to load resource."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't load MeshLibrary for merging!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error saving MeshLibrary!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't load TileSet for merging!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error saving TileSet!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error trying to save layout!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Default editor layout overridden."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Layout name not found!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Restored default layout to base settings."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This is a remote object so changes to it will not be kept.\n"
+"Please read the documentation relevant to debugging to better understand "
+"this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Expand all properties"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Collapse all properties"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Copy Params"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Paste Params"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Paste Resource"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Copy Resource"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Make Built-In"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Make Sub-Resources Unique"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open in Help"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "There is no defined scene to run."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"No main scene has ever been defined, select one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Selected scene '%s' does not exist, select a valid one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Selected scene '%s' is not a scene file, select a valid one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Current scene was never saved, please save it prior to running."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Could not start subprocess!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Base Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Open Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Open Script.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Close"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before closing?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Scene As.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "No"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Mesh Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a root node."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Tile Set"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a selected node."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Current scene not saved. Open anyway?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't reload a scene that was never saved."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Revert"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This action cannot be undone. Revert anyway?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Run Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pick a Main Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Scene '%s' was automatically imported, so it can't be modified.\n"
+"To make changes to it, a new inherited scene can be created."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ugh"
+msgstr ""
+
+#: editor/editor_node.cpp
+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 ""
+
+#: editor/editor_node.cpp
+msgid "Scene '%s' has broken dependencies:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Layout"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Delete Layout"
+msgstr ""
+
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Switch Scene Tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "%d more files or folders"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "%d more folders"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "%d more files"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Dock Position"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Distraction Free Mode"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Add a new scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to previously opened scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Next tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Previous tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Filter Files.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Operations with scene files."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Inherited Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save all Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Close Scene"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Open Recent"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Convert To.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "MeshLibrary.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "TileSet.."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Undo"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
+#: scene/gui/line_edit.cpp
+msgid "Redo"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Revert Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Miscellaneous project or scene-wide tools."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Project"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Project Settings"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Run Script"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Export"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Tools"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quit to Project List"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Debug"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Deploy with Remote Debug"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When exporting or deploying, the resulting executable will attempt to "
+"connect to the IP of this computer in order to be debugged."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Small Deploy with Network FS"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is enabled, export or deploy will produce a minimal "
+"executable.\n"
+"The filesystem will be provided from the project by the editor over the "
+"network.\n"
+"On Android, deploy will use the USB cable for faster performance. This "
+"option speeds up testing for games with a large footprint."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Visible Collision Shapes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
+"running game if this option is turned on."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Visible Navigation"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Navigation meshes and polygons will be visible on the running game if this "
+"option is turned on."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Sync Scene Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is turned on, any changes made to the scene in the editor "
+"will be replicated in the running game.\n"
+"When used remotely on a device, this is more efficient with network "
+"filesystem."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Sync Script Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is turned on, any script that is saved will be reloaded on "
+"the running game.\n"
+"When used remotely on a device, this is more efficient with network "
+"filesystem."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Editor"
+msgstr ""
+
+#: editor/editor_node.cpp editor/settings_config_dialog.cpp
+msgid "Editor Settings"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Editor Layout"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Toggle Fullscreen"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Manage Export Templates"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Help"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Classes"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Q&A"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Issue Tracker"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "About"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play the project."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pause the scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pause Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Stop the scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Stop"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play the edited scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play custom scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play Custom Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Spins when the editor window repaints!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Update Always"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Update Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Disable Update Spinner"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Inspector"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save the currently edited resource."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Save As.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to the previous edited object in history."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to the next edited object in history."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "History of recently edited objects."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Object properties."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Node"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "FileSystem"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Output"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Import Templates From ZIP File"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Export Project"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Merge With Existing"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Password:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open & Run a Script"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Load Errors"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open 2D Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open 3D Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Script Editor"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_manager.cpp
+msgid "Open Asset Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open the next Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open the previous Editor"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Installed Plugins:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Status:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Stop Profiling"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Start Profiling"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Measure:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame Time (sec)"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Average Time (sec)"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame %"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Physics Frame %"
+msgstr ""
+
+#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
+msgid "Time:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Inclusive"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Self"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame #:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Time"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Calls"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Write your logic in the _run() method."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "There is an edited scene already."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Couldn't instance script:"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Did you forget the 'tool' keyword?"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Couldn't run script:"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Did you forget the '_run' method?"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Default (Same as Editor)"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Select Node(s) to Import"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Scene Path:"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Import From Node:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Re-Download"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Installed)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Missing)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Current)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Retrieving mirrors, please wait.."
+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."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Invalid version.txt format inside templates. Revision is not a valid "
+"identifier."
+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 ""
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+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
+#: 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
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request Failed."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.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 "Can't write file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Download Complete."
+msgstr ""
+
+#: 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 ""
+
+#: 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 "Connecting.."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+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 "Requesting.."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Downloading"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Connection Error"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "SSL Handshake Error"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Current Version:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install From File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Remove Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select template file"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Download Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select mirror from list: "
+msgstr ""
+
+#: editor/file_type_cache.cpp
+msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot navigate to '%s' as it has not been found in the file system!"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot move/rename resources root."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot move a folder into itself."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error duplicating:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Unable to update dependencies:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Provided name contains invalid characters"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Name contains invalid characters."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "A file or folder with this name already exists."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming file:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicating file:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicating folder:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Expand all"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Collapse all"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Rename.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Move To.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Open Scene(s)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Instance"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Edit Dependencies.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View Owners.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Previous Directory"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Next Directory"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Re-Scan Filesystem"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Toggle folder status as Favorite"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Instance the selected scene(s) as child of the selected node."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Move"
+msgstr ""
+
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
+#: editor/groups_editor.cpp
+msgid "Add to Group"
+msgstr ""
+
+#: editor/groups_editor.cpp
+msgid "Remove from Group"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Import Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Importing Scene.."
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Generating Lightmaps"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Generating for Mesh: "
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Running Custom Script.."
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Couldn't load post-import script:"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Invalid/broken script for post-import (check console):"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Error running post-import script:"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Saving.."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid " Files"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp editor/property_editor.cpp
+msgid "Preset.."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr ""
+
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr ""
+
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr ""
+
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Create a new polygon from scratch"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Delete points"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Toggle Autoplay"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "New Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "New Anim"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Change Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Delete Animation?"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Remove Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: Invalid animation name!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: Animation name already exists!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Rename Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Blend Next Changed"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Change Blend Time"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Duplicate Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation to copy!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation resource on clipboard!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Pasted Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Paste Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation to edit!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation backwards from current pos. (A)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation backwards from end. (Shift+A)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Stop animation playback. (S)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation from start. (Shift+D)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation from current pos. (D)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation position (in seconds)."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Scale animation playback globally for the node."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Create new animation in player."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load animation from disk."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load an animation from disk."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save the current animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Display list of animations in player."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Autoplay on Load"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Edit Target Blend Times"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation Tools"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Copy Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Onion Skinning"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Enable Onion Skinning"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Directions"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Past"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Future"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Depth"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "1 step"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "2 steps"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "3 steps"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Differences Only"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Force White Modulate"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Include Gizmos (3D)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Create New Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Error!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Blend Times:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Next (Auto Queue):"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Cross-Animation Blend Times"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Animation"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "New name:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Fade In (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Fade Out (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Mix"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Auto Restart:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Restart (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Random Restart (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Start!"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Amount:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend 0:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend 1:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "X-Fade Time (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Current:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Add Input"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Clear Auto-Advance"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Set Auto-Advance"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Delete Input"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation tree is valid."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation tree is invalid."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "OneShot Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Mix Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend2 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend3 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend4 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "TimeScale Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "TimeSeek Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Transition Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Import Animations.."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Node Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Filters.."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+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 to host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr ""
+
+#: editor/plugins/baked_lightmap_editor_plugin.cpp
+msgid ""
+"Can't determine a save path for lightmap images.\n"
+"Save your scene (for images to be saved in the same dir), or pick a save "
+"path from the BakedLightmap properties."
+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 ""
+
+#: editor/plugins/baked_lightmap_editor_plugin.cpp
+msgid "Failed creating lightmap images, make sure path is writable."
+msgstr ""
+
+#: editor/plugins/baked_lightmap_editor_plugin.cpp
+msgid "Bake Lightmaps"
+msgstr ""
+
+#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Preview"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Configure Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid Offset:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid Step:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotation Offset:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotation Step:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Pivot"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Action"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move vertical guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Create new vertical guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Remove vertical guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move horizontal guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Create new horizontal guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Remove horizontal guide"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Create new horizontal and vertical guides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Edit IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Edit CanvasItem"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Paste Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Select Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Drag: Rotate"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotate Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Show a list of all objects at the position clicked\n"
+"(same as Alt+RMB in select mode)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Click to change object's rotation pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Pan Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Toggles snapping"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Use Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snapping options"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Use Rotation Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Configure Snap..."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap Relative"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Use Pixel Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Smart snapping"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to parent"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to guides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Make Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Make IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show guides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Center Selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Frame Selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Keys"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Key"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Key (Existing Tracks)"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Copy Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add %s"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Adding %s..."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Create Node"
+msgstr ""
+
+#: 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 ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change default type"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid ""
+"Drag & drop + Shift : Add node as sibling\n"
+"Drag & drop + Alt : Change node type"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Create Poly3D"
+msgstr ""
+
+#: editor/plugins/collision_shape_2d_editor_plugin.cpp
+msgid "Set Handle"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Remove item %d?"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Add Item"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Remove Selected Item"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Import from Scene"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Update from Scene"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Remove point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Remove Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
+
+#: editor/plugins/gi_probe_editor_plugin.cpp
+msgid "Bake GI Probe"
+msgstr ""
+
+#: editor/plugins/gradient_editor_plugin.cpp
+msgid "Add/Remove Color Ramp Point"
+msgstr ""
+
+#: editor/plugins/gradient_editor_plugin.cpp
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Modify Color Ramp"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Item %d"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Items"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Item List Editor"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid ""
+"No OccluderPolygon2D resource on this node.\n"
+"Create and assign one?"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Occluder Polygon"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit existing polygon:"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "LMB: Move Point."
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Ctrl+LMB: Split Segment."
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "RMB: Erase Point."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh is empty!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Static Trimesh Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Static Convex Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "This doesn't work on scene root!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Navigation Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Contained Mesh is not of type ArrayMesh."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "UV Unwrap failed, mesh may not be manifold?"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "No mesh to debug."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Model has no UV in this layer"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "MeshInstance lacks a Mesh!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh has not surface to create outlines from!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Could not create outline!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Static Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Static Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline Mesh.."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "View UV1"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "View UV2"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Unwrap UV2 for Lightmap/AO"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Outline Size:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No mesh source specified (and no MultiMesh set in node)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No mesh source specified (and MultiMesh contains no Mesh)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (invalid path)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (not a MeshInstance)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (contains no Mesh resource)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No surface source specified."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (invalid path)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (no geometry)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (no faces)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Parent has no solid faces to populate."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Couldn't map area."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Select a Source Mesh:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Select a Target Surface:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate Surface"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate MultiMesh"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Target Surface:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Source Mesh:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "X-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Y-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Z-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh Up Axis:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Rotation:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Tilt:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Scale:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
+#: editor/plugins/navigation_polygon_editor_plugin.cpp
+msgid "Create Navigation Polygon"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generating AABB"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Can only set point into a ParticlesMaterial process material"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Error loading image:"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "No pixels with transparency > 128 in image.."
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Generate Visibility Rect"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Load Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Clear Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Generated Point Count:"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generation Time (sec):"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Capture from Pixel"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Emission Colors"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Node does not contain geometry."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Node does not contain geometry (faces)."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "A processor material of type 'ParticlesMaterial' is required."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Faces contain no area!"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "No faces!"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generate AABB"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emission Points From Mesh"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emission Points From Node"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emitter"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Emission Points:"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Surface Points"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Surface Points+Normal (Directed)"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Volume"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Emission Source: "
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generate Visibility AABB"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove Point from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove Out-Control from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove In-Control from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Add Point to Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move Point in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move In-Control in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move Out-Control in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Select Points"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Shift+Drag: Select Control Points"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Click: Add Point"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Right Click: Delete Point"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Select Control Points (Shift+Drag)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Add Point (in empty space)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Delete Point"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Close Curve"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Curve Point #"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve Point Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve In Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve Out Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Path"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove Path Point"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove Out-Control Point"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove In-Control Point"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create UV Map"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Transform UV Map"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Polygon 2D UV Editor"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Move Point"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Ctrl: Rotate"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Shift: Move All"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Shift+Ctrl: Scale"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Move Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Rotate Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Scale Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Polygon->UV"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "UV->Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Clear UV"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Snap"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Enable Snap"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ERROR: Couldn't load resource!"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Add Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Rename Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Delete Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Resource clipboard is empty!"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Load Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Clear Recent Files"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close and save changes?"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error importing theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error importing"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Import Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme As.."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Sort"
+msgstr ""
+
+#: 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 Up"
+msgstr ""
+
+#: 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 ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Next script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Previous script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "File"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save All"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Soft Reload Script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Copy Script Path"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "History Prev"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "History Next"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Reload Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme As"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close All"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close Other Tabs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+msgid "Find.."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+msgid "Find Next"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Step Over"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Step Into"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Break"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Continue"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Keep Debugger Open"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Open Godot online documentation"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search the class hierarchy."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search the reference documentation."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Go to previous edited document."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Go to next edited document."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Discard"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Create Script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"The following files are newer on disk.\n"
+"What action should be taken?:"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Reload"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Resave"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Debugger"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Built-in scripts can only be edited when the scene they belong to is loaded"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Pick Color"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Case"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Uppercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Lowercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Capitalize"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Cut"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Copy"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Select All"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Indent Left"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Indent Right"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Toggle Comment"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Clone Down"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Fold/Unfold Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Fold All Lines"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Unfold All Lines"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Complete Symbol"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Trim Trailing Whitespace"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Indent To Spaces"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Indent To Tabs"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Auto Indent"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Toggle Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Remove All Breakpoints"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Next Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Previous Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert To Uppercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert To Lowercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Find Previous"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Replace.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Function.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Line.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Contextual Help"
+msgstr ""
+
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Shader"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Scalar Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Toggle Rot Only"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Function"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Function"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Default Value"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change XForm Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Texture Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Cubemap Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Comment"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add/Remove to Color Ramp"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add/Remove to Curve Map"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Modify Curve Map"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Input Name"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Connect Graph Nodes"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Disconnect Graph Nodes"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Remove Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Move Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Duplicate Graph Node(s)"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Delete Shader Graph Node(s)"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Error: Cyclic Connection Link"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Error: Missing Input Connections"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orthogonal"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Aborted."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "X-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Y-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Z-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Plane Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scaling: "
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translating: "
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotating %s degrees."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Animation Key Inserted."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Objects Drawn"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Material Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Shader Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Vertices"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Align with view"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "OK :("
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "No parent to instance a child at."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Normal"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Wireframe"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Overdraw"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Unshaded"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Environment"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Gizmos"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Information"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View FPS"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Half Resolution"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Audio Listener"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Doppler Enable"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "XForm Dialog"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)"
+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 "Move Mode (W)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate Mode (E)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale Mode (R)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Local Coords"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Local Space Mode (%s)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Snap Mode (%s)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Switch Perspective/Orthogonal view"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Insert Animation Key"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Focus Origin"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Focus Selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Align Selection With View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Select"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Move"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Rotate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Freelook"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Dialog.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "1 Viewport"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "2 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "2 Viewports (Alt)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "3 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "3 Viewports (Alt)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "4 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Origin"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Grid"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Skeleton Gizmo visibility"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Snap Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate Snap:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate Snap (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale Snap (%):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Viewport Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Perspective FOV (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Z-Near:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Z-Far:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Change"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale (ratio):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Type"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Pre"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Post"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "ERROR: Couldn't load frame resource!"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Frame"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Resource clipboard is empty or not a texture!"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Paste Frame"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Empty"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Change Animation Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Change Animation FPS"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "(empty)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Animations"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Speed (FPS):"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Animation Frames"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Insert Empty (Before)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Insert Empty (After)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Move (Before)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Move (After)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox Preview:"
+msgstr ""
+
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Snap Mode:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "<None>"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Pixel Snap"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Grid Snap"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Auto Slice"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Offset:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Step:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Separation:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Texture Region"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Texture Region Editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Can't save theme to file:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Create Empty Template"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Create Empty Editor Template"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Create From Current Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "CheckBox Radio1"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "CheckBox Radio2"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+msgid "Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Have,Many,Several,Options!"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Data Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Color"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Paint TileMap"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase TileMap"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Find tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Transpose"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Mirror X"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Mirror Y"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Paint Tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Pick Tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 0 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 90 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 180 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 270 degrees"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Could not find tile:"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Item name or ID:"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create from scene?"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Merge from scene?"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Tile Set"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create from Scene"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Merge from Scene"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Error"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Runnable"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Delete patch '%s' from list?"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Delete preset '%s'?"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Presets"
+msgstr ""
+
+#: editor/project_export.cpp editor/project_settings_editor.cpp
+msgid "Add.."
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Resources"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export all resources in the project"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export selected scenes (and dependencies)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export selected resources (and dependencies)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export Mode:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Resources to export:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid ""
+"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid ""
+"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Patches"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Make Patch"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export With Debug"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose an empty folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Imported Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Invalid project path (changed anything?)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't create project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Import Existing Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Create New Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Name:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Create folder"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Unnamed Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Are you sure to open more than one project?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Are you sure to run more than one project?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove project from the list? (Folder contents will not be modified)"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project List"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Scan"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Select a Folder to Scan"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "New Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Templates"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Exit"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"You don't currently have any projects.\n"
+"Would you like to explore the official example projects in the Asset Library?"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Key "
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joy Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joy Axis"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Mouse Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Invalid action (anything goes but '/' or ':')."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Action '%s' already exists!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Rename Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Shift+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Alt+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Control+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Press a Key.."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Mouse Button Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Left Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Right Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Up Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Down Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 6"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 7"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 8"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 9"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joypad Axis Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Axis"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joypad Button Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Erase Input Action"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Erase Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Device"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Left Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Right Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Middle Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Up."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Down."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select a setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '%s' exists."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '%s' is internal, and it can't be deleted."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Input Action"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Error saving settings."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Settings saved OK."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Translation"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Translation"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Remapped Path"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Resource Remap Add Remap"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Change Resource Remap Language"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Resource Remap"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Resource Remap Option"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Project Settings (project.godot)"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "General"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+msgid "Property:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Input Map"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Action:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Device:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Localization"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Translations"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Translations:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remaps"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Resources:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remaps by Locale:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locale"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "AutoLoad"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Pick a Viewport"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Ease In"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Ease Out"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Zero"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Easing In-Out"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Easing Out-In"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "File.."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Dir.."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Assign"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Show in File System"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Error loading file: Not a resource!"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Pick a Node"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Bit %d, val %d."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "On"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "[Empty]"
+msgstr ""
+
+#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Set"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Properties:"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Property"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Method"
+msgstr ""
+
+#: editor/pvrtc_compress.cpp
+msgid "Could not execute PVRTC tool:"
+msgstr ""
+
+#: editor/pvrtc_compress.cpp
+msgid "Can't load back converted image using PVRTC tool:"
+msgstr ""
+
+#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
+msgid "Reparent Node"
+msgstr ""
+
+#: editor/reparent_dialog.cpp
+msgid "Reparent Location (Select new Parent):"
+msgstr ""
+
+#: editor/reparent_dialog.cpp
+msgid "Keep Global Transform"
+msgstr ""
+
+#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
+msgid "Reparent"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Run Mode:"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Current Scene"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Main Scene"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Main Scene Arguments:"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Scene Run Settings"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "No parent to instance the scenes at."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error loading scene from %s"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Cannot instance the scene '%s' because the current scene exists within one "
+"of its nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Instance Scene(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on the tree root."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Move Node In Parent"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Move Nodes In Parent"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete Node(s)?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can not perform with the root node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Save New Scene As.."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Makes Sense!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can't operate on nodes from a foreign scene!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can't operate on nodes the current scene inherits from!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Remove Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Couldn't save new scene. Likely dependencies (instances) couldn't be "
+"satisfied."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error saving scene."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error duplicating scene to save it."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Sub-Resources"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Add Child Node"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Instance Child Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Change Type"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Attach Script"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Script"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Merge From Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Save Branch as Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Copy Node Path"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete (No Confirm)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Add/Create a New Node"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Instance a scene file as a Node. Creates an inherited scene if no root node "
+"exists."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Attach a new or existing script for the selected node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear a script for the selected node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Remote"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Local"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle Spatial Visible"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle CanvasItem Visible"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Node configuration warning:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node has connection(s) and group(s)\n"
+"Click to show signals dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node has connections.\n"
+"Click to show signals dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node is in group(s).\n"
+"Click to show groups dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Instance:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Open script"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node is locked.\n"
+"Click to unlock"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Children are not selectable.\n"
+"Click to make selectable"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle Visibility"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Invalid node name, the following characters are not allowed:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Rename Node"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Scene Tree (Nodes):"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Node Configuration Warning!"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Select a Node"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error - Could not create script in filesystem."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error loading script from %s"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Path is empty"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Path is not local"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid base path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid extension"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Wrong extension chosen"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid Path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid class name"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid inherited parent name or path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Script valid"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Allowed: a-z, A-Z, 0-9 and _"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Built-in script (into scene file)"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Create new script file"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Load existing script file"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Inherits"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Class Name"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Template"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Built-in Script"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Attach Node Script"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Remote "
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Bytes:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Warning"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Error:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Source:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Function:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
+msgid "Errors"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Child Process Connected"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Inspect Previous Instance"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Inspect Next Instance"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Stack Frames"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Variable"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Errors:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Stack Trace (if applicable):"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Profiler"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Monitor"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Value"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Monitors"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "List of Video Memory Usage by Resource:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Total:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Video Mem"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Resource Path"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Type"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Usage"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Misc"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Clicked Control:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Clicked Control Type:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Live Edit Root:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Set From Tree"
+msgstr ""
+
+#: editor/settings_config_dialog.cpp
+msgid "Shortcuts"
+msgstr ""
+
+#: editor/settings_config_dialog.cpp
+msgid "Binding"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Light Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Camera FOV"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Camera Size"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Sphere Shape Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Box Shape Extents"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Capsule Shape Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Capsule Shape Height"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Ray Shape Length"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Notifier Extents"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Particles AABB"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Probe Extents"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Select the dynamic library for this entry"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Select dependencies of the library for this entry"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Remove current entry"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Double click to create a new entry"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Platform:"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Platform"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Dynamic Library"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "Add an architecture entry"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_editor_plugin.cpp
+msgid "GDNativeLibrary"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+#: modules/visual_script/visual_script_builtin_funcs.cpp
+msgid "Invalid type argument to convert(), use TYPE_* constants."
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp modules/mono/glue/glue_header.h
+#: modules/visual_script/visual_script_builtin_funcs.cpp
+msgid "Not enough bytes for decoding bytes, or invalid format."
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "step argument is zero!"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Not a script with an instance"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Not based on a script"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Not based on a resource file"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Invalid instance dictionary format (missing @path)"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Invalid instance dictionary format (can't load script at @path)"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Invalid instance dictionary format (invalid script at @path)"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Invalid instance dictionary (invalid subclasses)"
+msgstr ""
+
+#: modules/gdscript/gdscript_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Floor:"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Grid Map"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Previous Floor"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Floor"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clear Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"A node yielded without working memory, please read the docs on how to yield "
+"properly!"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"Node yielded, but did not return a function state in the first working "
+"memory."
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"Return value must be assigned to first element of node working memory! Fix "
+"your node please."
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Node returned an invalid sequence output: "
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Found sequence bit but not the node in the stack, report bug!"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Stack overflow with stack depth: "
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Functions:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Variables:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Name is not a valid identifier:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Name already in use by another func/var/signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Expression"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold %s to drop a simple reference to the node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a simple reference to the node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold %s to drop a Variable Setter."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a Variable Setter."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Preload Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s) From Tree"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Getter Property"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Setter Property"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Condition"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Sequence"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Switch"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Iterator"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "While"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Return"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Get"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Base Type:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Available Nodes:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Select or create a function to edit graph"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal Arguments:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Delete Selected"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Find Node Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Copy Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Cut Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Input type not iterable: "
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Iterator became invalid"
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Iterator became invalid: "
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Invalid index property name."
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Base object is not a Node!"
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Path does not lead Node!"
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Invalid index property name '%s' in node %s."
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ": Invalid argument of type: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ": Invalid arguments: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "VariableGet not found in script: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "VariableSet not found in script: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "Custom node has no _step() method, can't process graph."
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ""
+"Invalid return value from _step(), must be integer (seq out), or string "
+"(error)."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Run in Browser"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+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 ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read custom HTML shell:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read boot splash image file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr ""
+
+#: scene/2d/animated_sprite.cpp
+msgid ""
+"A SpriteFrames resource must be created or set in the 'Frames' property in "
+"order for AnimatedSprite to display frames."
+msgstr ""
+
+#: scene/2d/canvas_modulate.cpp
+msgid ""
+"Only one visible CanvasModulate is allowed per scene (or set of instanced "
+"scenes). The first created one will work, while the rest will be ignored."
+msgstr ""
+
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
+#: scene/2d/collision_polygon_2d.cpp
+msgid ""
+"CollisionPolygon2D 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 ""
+
+#: scene/2d/collision_polygon_2d.cpp
+msgid "An empty CollisionPolygon2D has no effect on collision."
+msgstr ""
+
+#: scene/2d/collision_shape_2d.cpp
+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 ""
+
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"A shape must be provided for CollisionShape2D to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
+#: scene/2d/light_2d.cpp
+msgid ""
+"A texture with the shape of the light must be supplied to the 'texture' "
+"property."
+msgstr ""
+
+#: scene/2d/light_occluder_2d.cpp
+msgid ""
+"An occluder polygon must be set (or drawn) for this occluder to take effect."
+msgstr ""
+
+#: scene/2d/light_occluder_2d.cpp
+msgid "The occluder polygon for this occluder is empty. Please draw a polygon!"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp
+msgid ""
+"A NavigationPolygon resource must be set or created for this node to work. "
+"Please set a property or draw a polygon."
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp
+msgid ""
+"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
+"node. It only provides navigation data."
+msgstr ""
+
+#: scene/2d/parallax_layer.cpp
+msgid ""
+"ParallaxLayer node only works when set as child of a ParallaxBackground node."
+msgstr ""
+
+#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
+msgid ""
+"A material to process the particles is not assigned, so no behavior is "
+"imprinted."
+msgstr ""
+
+#: scene/2d/path_2d.cpp
+msgid "PathFollow2D only works when set as a child of a Path2D node."
+msgstr ""
+
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
+#: scene/2d/remote_transform_2d.cpp
+msgid "Path property must point to a valid Node2D node to work."
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid ""
+"VisibilityEnable2D works best when used with the edited scene root directly "
+"as parent."
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid ""
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid ""
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
+msgstr ""
+
+#: scene/3d/baked_lightmap.cpp
+msgid "Plotting Meshes: "
+msgstr ""
+
+#: scene/3d/baked_lightmap.cpp
+msgid "Plotting Lights:"
+msgstr ""
+
+#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+msgid "Finishing Plot"
+msgstr ""
+
+#: scene/3d/baked_lightmap.cpp
+msgid "Lighting Meshes: "
+msgstr ""
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
+#: scene/3d/collision_polygon.cpp
+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 ""
+
+#: scene/3d/collision_polygon.cpp
+msgid "An empty CollisionPolygon has no effect on collision."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+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 ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
+#: scene/3d/gi_probe.cpp
+msgid "Plotting Meshes"
+msgstr ""
+
+#: scene/3d/navigation_mesh.cpp
+msgid "A NavigationMesh resource must be set or created for this node to work."
+msgstr ""
+
+#: scene/3d/navigation_mesh.cpp
+msgid ""
+"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
+"It only provides navigation data."
+msgstr ""
+
+#: scene/3d/particles.cpp
+msgid ""
+"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
+#: scene/3d/remote_transform.cpp
+msgid "Path property must point to a valid Spatial node to work."
+msgstr ""
+
+#: scene/3d/scenario_fx.cpp
+msgid ""
+"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid ""
+"A SpriteFrames resource must be created or set in the 'Frames' property in "
+"order for AnimatedSprite3D to display frames."
+msgstr ""
+
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
+#: scene/gui/color_picker.cpp
+msgid "Raw Mode"
+msgstr ""
+
+#: scene/gui/color_picker.cpp
+msgid "Add current color as a preset"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
+msgid "Alert!"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
+msgstr ""
+
+#: scene/gui/file_dialog.cpp
+msgid "Select this Folder"
+msgstr ""
+
+#: scene/gui/popup.cpp
+msgid ""
+"Popups will hide by default unless you call popup() or any of the popup*() "
+"functions. Making them visible for editing is fine though, but they will "
+"hide upon running."
+msgstr ""
+
+#: scene/gui/scroll_container.cpp
+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 ""
+
+#: scene/gui/tree.cpp
+msgid "(Other)"
+msgstr ""
+
+#: scene/main/scene_tree.cpp
+msgid ""
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid ""
+"This viewport is not set as render target. If you intend for it to display "
+"its contents directly to the screen, make it a child of a Control so it can "
+"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
+"texture to some node for display."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 0dd2003fd3..cf82142c80 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -3,10 +3,11 @@
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
+# Artem Varaksa <aymfst@gmail.com>, 2018.
# B10nicMachine <shumik1337@gmail.com>, 2017.
# DimOkGamer <dimokgamer@gmail.com>, 2016-2017.
# Igor S <scorched@bk.ru>, 2017.
-# ijet <my-ijet@mail.ru>, 2017.
+# ijet <my-ijet@mail.ru>, 2017-2018.
# Maxim Kim <habamax@gmail.com>, 2016.
# Maxim toby3d Lebedev <mail@toby3d.ru>, 2016.
# outbools <drag4e@yandex.ru>, 2017.
@@ -17,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-11-29 10:40+0000\n"
+"PO-Revision-Date: 2018-01-24 12:27+0000\n"
"Last-Translator: ijet <my-ijet@mail.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -27,7 +28,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -38,9 +39,8 @@ msgid "All Selection"
msgstr "Ð’Ñе выбранные Ñлементы"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Изменить значение"
+msgstr "Изменить Ð²Ñ€ÐµÐ¼Ñ ÐºÐ»ÑŽÑ‡ÐµÐ²Ð¾Ð³Ð¾ кадра"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -51,9 +51,8 @@ msgid "Anim Change Transform"
msgstr "Изменить положение"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Изменить значение"
+msgstr "Измененить значение ключевого кадра"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -209,8 +208,7 @@ msgstr "Создать %d новые дорожки и вÑтавить ключ
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Создать"
@@ -387,14 +385,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Заменено %d Ñовпадений."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Заменить"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Заменить вÑÑ‘"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Учитывать региÑтр"
@@ -403,48 +393,16 @@ msgid "Whole Words"
msgstr "Целые Ñлова"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Только выделÑть"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ПоиÑк"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Ðайти"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Следующий"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ðе найдено!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Заменить на"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "ЧувÑтвительноÑть региÑтра"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "В обратном направлении"
+msgid "Replace"
+msgstr "Заменить"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Подтверждение замены"
+msgid "Replace All"
+msgstr "Заменить вÑÑ‘"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "ПропуÑтить"
+msgid "Selection Only"
+msgstr "Только выделÑть"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -460,7 +418,7 @@ msgstr "СброÑить приближение"
#: editor/code_editor.cpp editor/script_editor_debugger.cpp
msgid "Line:"
-msgstr "Стр:"
+msgstr "Строка:"
#: editor/code_editor.cpp
msgid "Col:"
@@ -546,9 +504,8 @@ msgid "Connecting Signal:"
msgstr "Подключение Ñигнала:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "ПриÑоединить '%s' к '%s'"
+msgstr "Отключить '%s' от '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -564,9 +521,17 @@ msgid "Signals"
msgstr "Сигналы"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Изменить тип %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Изменить"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Создать новый"
+msgstr "Создать %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -676,8 +641,8 @@ msgstr ""
"Ð’ÑÑ‘ равно удалить его? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ:\n"
+msgid "Cannot remove:"
+msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -759,9 +724,9 @@ msgstr "ОÑнователи Проекта"
msgid "Lead Developer"
msgstr "Ведущий Разработчик"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Менеджер проектов"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Менеджер проектов "
#: editor/editor_about.cpp
msgid "Developers"
@@ -849,7 +814,7 @@ msgid "Success!"
msgstr "УÑпех!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "УÑтановить"
@@ -870,9 +835,8 @@ msgid "Rename Audio Bus"
msgstr "Переименовать аудио шину"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Переключить аудио шину - Ñоло"
+msgstr "Изменить громкоÑть звуковой шины"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -937,7 +901,7 @@ msgstr "Удалить Ñффект"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Ðудио"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1015,7 +979,7 @@ msgstr "Загрузить по умолчанию"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr "Загрузить Ñтандартную раÑкладку шины."
+msgstr "Загрузить раÑкладку шины по умолчанию."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1118,13 +1082,12 @@ msgid "Updating scene.."
msgstr "Обновление Ñцены.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(пуÑто)"
+msgstr "[пуÑто]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[не Ñохранено]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1164,8 +1127,8 @@ msgid "Packing"
msgstr "Упаковывание"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Файл шаблона не найден:\n"
+msgid "Template file not found:"
+msgstr "Файл шаблона не найден:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1376,6 +1339,20 @@ msgid "Description"
msgstr "ОпиÑание"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Онлайн уроки:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ÑутÑтвуют учебники Ð´Ð»Ñ Ñтого клаÑÑа, вы можете его "
+"[color=$color][url=$url]добавить[/url][/color] или [color=$color][url="
+"$url2]запроÑить[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "СвойÑтва"
@@ -1411,6 +1388,10 @@ msgstr ""
msgid "Search Text"
msgstr "ИÑкать текÑÑ‚"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Ðайти"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Вывод:"
@@ -1422,6 +1403,10 @@ msgstr "Вывод:"
msgid "Clear"
msgstr "ОчиÑтить"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "ОчиÑтить вывод"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Ошибка при Ñохранении реÑурÑа!"
@@ -1430,8 +1415,8 @@ msgstr "Ошибка при Ñохранении реÑурÑа!"
msgid "Save Resource As.."
msgstr "Сохранить реÑÑƒÑ€Ñ ÐºÐ°Ðº.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "ЯÑно.."
@@ -1485,10 +1470,11 @@ msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена бе
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры) не могли "
-"быть удовлетворены."
+"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры или "
+"унаÑледованные) не могли быть удовлетворены."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -2095,6 +2081,13 @@ msgstr "Справка"
msgid "Classes"
msgstr "КлаÑÑÑ‹"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ПоиÑк"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Онлайн Документы"
@@ -2366,14 +2359,12 @@ msgid "Frame #:"
msgstr "Кадр #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "ВремÑ:"
+msgstr "ВремÑ"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Вызов"
+msgstr "Вызовы"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2480,8 +2471,8 @@ msgid "No version.txt found inside templates."
msgstr "Ðе найден version.txt файл в шаблонах."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:\n"
+msgid "Error creating path for templates:"
+msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2516,9 +2507,8 @@ msgstr "Ðет ответа."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошёл."
+msgstr "Ðе удалоÑÑŒ выполнить запроÑ."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2564,7 +2554,6 @@ msgid "Connecting.."
msgstr "Подключение.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ"
@@ -2641,11 +2630,8 @@ msgid "View items as a list"
msgstr "ПроÑмотр Ñлементов в виде ÑпиÑка"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"СтатуÑ: Импорт файла не удалÑÑ. ПожалуйÑта, иÑправьте файл и "
"переимпортируйте вручную."
@@ -2654,21 +2640,20 @@ msgid "Cannot move/rename resources root."
msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить/переименовать корень."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Ðевозможно перемеÑтить папку в ÑебÑ.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Ðевозможно перемеÑтить папку в ÑебÑ."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Ошибка перемещениÑ:\n"
+msgid "Error moving:"
+msgstr "Ошибка перемещениÑ:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Ошибка при загрузке:"
+msgid "Error duplicating:"
+msgstr "Ошибка дублированиÑ:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ завиÑимоÑти:\n"
+msgid "Unable to update dependencies:"
+msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ завиÑимоÑти:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2699,14 +2684,12 @@ msgid "Renaming folder:"
msgstr "Переименование папки:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Дублировать"
+msgstr "Дублирование файла:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Переименование папки:"
+msgstr "Дублирование папки:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2725,9 +2708,8 @@ msgid "Move To.."
msgstr "ПеремеÑтить в.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Открыть Ñцену"
+msgstr "Открыть Ñцену(ны)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2742,9 +2724,8 @@ msgid "View Owners.."
msgstr "ПроÑмотреть владельцев.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Дублировать"
+msgstr "Дублировать.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2841,14 +2822,12 @@ msgid "Importing Scene.."
msgstr "Импортирование Ñцены.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Передача в карты оÑвещениÑ:"
+msgstr "Создание карт оÑвещениÑ"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Генерировать AABB"
+msgstr "Создание Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¸Ñетки: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3319,6 +3298,10 @@ msgstr "Редактировать фильтры узла"
msgid "Filters.."
msgstr "Фильтры.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "Дерево анимации"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "ОÑвободить"
@@ -3468,23 +3451,29 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Ðе удаетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ путь Ð´Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ lightmap.\n"
+"Сохраните ваши Ñцены (чтобы Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены в том же разделе), "
+"или выберите путь ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² ÑвойÑтвах BakedLightmap."
#: 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 и что "
+"флаг 'Запекание Ñвета' включен."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Сбой ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ оÑвещенноÑти, убедитеÑÑŒ, что путь доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Передача в карты оÑвещениÑ:"
+msgstr "Запекать карты оÑвещениÑ"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "ПредпроÑмотр"
@@ -3631,7 +3620,7 @@ msgstr "Параметры прилипаниÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to grid"
-msgstr "Прилипание к Ñетке"
+msgstr "ПривÑзка к Ñетке"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Rotation Snap"
@@ -3639,7 +3628,7 @@ msgstr "ИÑпользовать привÑзку вращениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Configure Snap..."
-msgstr "ÐаÑтроить прилипание.."
+msgstr "ÐаÑтроить привÑзку..."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap Relative"
@@ -3655,7 +3644,7 @@ msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to parent"
-msgstr "ПривÑзать к родителю"
+msgstr "ПривÑзка к родителю"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node anchor"
@@ -3671,7 +3660,7 @@ msgstr "ПривÑзка к другим узлам"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to guides"
-msgstr "Прилипание к Ñетке"
+msgstr "ПривÑзка к направлÑющим"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3789,6 +3778,14 @@ msgstr "Добавить %s"
msgid "Adding %s..."
msgstr "Добавление %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ок"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Ðе удаетÑÑ Ñоздать неÑколько узлов без корнÑ."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3800,11 +3797,6 @@ msgid "Error instancing scene from %s"
msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñцены из %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ одного выбранного узла."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Изменить тип по умолчанию"
@@ -3997,19 +3989,19 @@ msgstr "Создать полиÑетку навигации"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "ПолиÑетка не ArrayMesh типа."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "UV развертка не удалаÑÑŒ, возможно у полиÑетки не одноÑвÑÐ·Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð°?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Ðет полиÑетки Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "У модели нет UV в Ñтом Ñлое"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4052,18 +4044,16 @@ msgid "Create Outline Mesh.."
msgstr "Создать полиÑетку обводки.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Обзор"
+msgstr "ПроÑмотр UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Обзор"
+msgstr "ПроÑмотр UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Развернуть UV2 Ð´Ð»Ñ Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4075,11 +4065,11 @@ msgstr "Размер обводки:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr "Ðе указан иÑточник полиÑетки (и мульти полиÑетка не указана в узле)."
+msgstr "Ðе указан иÑточник полиÑетки (и MultiMesh не указана в узле)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr "Ðе указана иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка (и в мульти полиÑетке нет полиÑетки)."
+msgstr "Ðе указана иÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка (и в MultiMesh нет полиÑетки)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
@@ -4155,7 +4145,7 @@ msgstr "ОÑÑŒ Z"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr "Сетка до оÑи:"
+msgstr "ОÑÑŒ вверх полиÑетки:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
@@ -4178,8 +4168,8 @@ msgid "Bake!"
msgstr "Запечь!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Создать полиÑетку навигации.\n"
+msgid "Bake the navigation mesh."
+msgstr "Создать полиÑетку навигации."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4223,11 +4213,11 @@ msgstr "Создание полиÑетки..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr "Преобразование в ÑобÑтвенную навигационную Ñетку..."
+msgstr "Преобразование в ÑобÑтвенную навигационную полиÑетку..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
-msgstr "ÐаÑтройка генератора навигационной Ñетки:"
+msgstr "ÐаÑтройка генератора навигационной полиÑетки:"
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
@@ -4244,7 +4234,7 @@ msgstr "Создать Navigation Polygon"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
-msgstr "Генерировать AABB"
+msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -4567,17 +4557,17 @@ msgstr "Загрузить реÑурÑ"
msgid "Paste"
msgstr "Ð’Ñтавить"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "Предзагрузчик реÑурÑов"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ОчиÑтить Ðедавние Файлы"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Закрыть и Ñохранить изменениÑ?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Закрыть и Ñохранить изменениÑ?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4648,9 +4638,12 @@ msgid "Soft Reload Script"
msgstr "МÑгко перезагрузить Ñкрипты"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Копировать путь"
+msgstr "Копировать путь к Ñкрипту"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Показать в файловой ÑиÑтеме"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4843,9 +4836,8 @@ msgid "Clone Down"
msgstr "Копировать вниз"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Развернуть Ñтроку"
+msgstr "Свернуть/Развернуть Ñтроку"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5082,91 +5074,91 @@ msgstr "МаÑштаб: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translating: "
-msgstr "Переводы: "
+msgstr "Перемещение: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Поворот на %s градуÑов."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Вид Снизу."
+msgid "Keying is disabled (no key inserted)."
+msgstr "МанипулÑÑ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° (без вÑтавленного ключа)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Ðиз"
+msgid "Animation Key Inserted."
+msgstr "Ключ анимации вÑтавлен."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Вид Ñверху."
+msgid "Objects Drawn"
+msgstr "ÐариÑовано обьектов"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Вид Ñзади."
+msgid "Material Changes"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Зад"
+msgid "Shader Changes"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ð¾Ð²"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Вид Ñпереди."
+msgid "Surface Changes"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Перед"
+msgid "Draw Calls"
+msgstr "Вызовы отриÑовки"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Вид Ñлева."
+msgid "Vertices"
+msgstr "Вершины"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Лево"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Вид Ñправа."
+msgid "Top View."
+msgstr "Вид Ñверху."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "Право"
+msgid "Bottom View."
+msgstr "Вид Снизу."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "МанипулÑÑ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° (без вÑтавленного ключа)."
+msgid "Bottom"
+msgstr "Ðиз"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Ключ анимации вÑтавлен."
+msgid "Left View."
+msgstr "Вид Ñлева."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "ÐариÑовано обьектов"
+msgid "Left"
+msgstr "Лево"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°"
+msgid "Right View."
+msgstr "Вид Ñправа."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ð¾Ð²"
+msgid "Right"
+msgstr "Право"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти"
+msgid "Front View."
+msgstr "Вид Ñпереди."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Вызовы отриÑовки"
+msgid "Front"
+msgstr "Перед"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Вершины"
+msgid "Rear View."
+msgstr "Вид Ñзади."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Зад"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5180,6 +5172,10 @@ msgstr "Ок :("
msgid "No parent to instance a child at."
msgstr "Ðе выбран родитель Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ°."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ одного выбранного узла."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Режим нормалей"
@@ -5253,16 +5249,12 @@ msgid "Freelook Speed Modifier"
msgstr "Обзор модификатор ÑкороÑти"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "предпроÑмотр"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm диалоговое окно"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Режим Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Режим Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5291,14 +5283,12 @@ msgid "Local Coords"
msgstr "Локальные координаты"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Режим маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (R)"
+msgstr "Режим локального проÑтранÑтва (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Режим привÑзки:"
+msgstr "Режим привÑзки (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5415,7 +5405,7 @@ msgstr "ÐаÑтройки"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "ВидимоÑть гизмо Ñкелета"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5423,7 +5413,7 @@ msgstr "Параметры привÑзки"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate Snap:"
-msgstr "ПривÑзка преобразований:"
+msgstr "ПривÑзка перемещениÑ:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
@@ -5455,7 +5445,7 @@ msgstr "Изменение преобразованиÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
-msgstr "Смещение:"
+msgstr "Перемещение:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate (deg.):"
@@ -5541,10 +5531,20 @@ msgstr "ПеремеÑтить (до)"
msgid "Move (After)"
msgstr "ПеремеÑтить (поÑле)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Кадры cпрайта"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox предпроÑмотр:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Стиль"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Задать регион"
@@ -5570,14 +5570,17 @@ msgid "Auto Slice"
msgstr "ÐвтоматичеÑки"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "ОтÑтуп:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Шаг:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Разделение:"
@@ -5715,6 +5718,10 @@ msgstr "Шрифт"
msgid "Color"
msgstr "Цвет"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Тема"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "ОчиÑтить выделенное"
@@ -5800,9 +5807,8 @@ msgid "Merge from scene?"
msgstr "СлиÑние из Ñцены?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "Ðабор тайлов.."
+msgstr "Ðабор тайлов"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5816,6 +5822,34 @@ msgstr "СлиÑние из Ñцены"
msgid "Error"
msgstr "Ошибка"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Ðвтотайлы"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Выберите плитку Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве значка, она также будет "
+"иÑпользоватьÑÑ Ð¿Ñ€Ð¸ неверных привÑзках автотайлов."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"ЛКМ: уÑтановить бит.\n"
+"ПКМ: ÑнÑть бит."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Выберите текущий редактированный вложенный тайл."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Выберите вложенный тайл, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ приоритета."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Отмена"
@@ -5925,10 +5959,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "ПожалуйÑта, выберите 'project.godot' файл."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr "Ваш проект будет Ñоздан не в пуÑтой папке (лучше Ñоздать новую папку)."
+msgid "Please choose an empty folder."
+msgstr "ПожалуйÑта, выберите пуÑтую папку."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5939,6 +5971,14 @@ msgid "Imported Project"
msgstr "Импортированный проект"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Ðе удалоÑÑŒ Ñоздать папку."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "По Ñтому пути уже ÑущеÑтвует папка Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Было бы неплохо назвать ваш проект."
@@ -5979,14 +6019,26 @@ msgid "Import Existing Project"
msgstr "Импортировать ÑущеÑтвующий проект"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Импортировать и редактировать"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Создать новый проект"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Создать и редактировать"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "УÑтановить проект:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "УÑтановить и редактировать"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Ðазвание проекта:"
@@ -6003,10 +6055,6 @@ msgid "Browse"
msgstr "Обзор"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Бинго!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "БезымÑнный проект"
@@ -6061,6 +6109,10 @@ msgstr ""
"Подтверждаете?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Менеджер проектов"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "СпиÑок проектов"
@@ -6189,11 +6241,6 @@ msgid "Button 9"
msgstr "Кнопка 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Изменить"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¾Ñи джойÑтика:"
@@ -6206,7 +6253,6 @@ msgid "Joypad Button Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ джойÑтика:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
msgstr "Удалить дейÑтвие"
@@ -6456,7 +6502,7 @@ msgstr "Ðовый Ñкрипт"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Ðовый %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6491,9 +6537,8 @@ msgid "On"
msgstr "Вкл"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "Добавить пуÑтоту"
+msgstr "[ПуÑто]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6575,10 +6620,6 @@ msgid "Error loading scene from %s"
msgstr "Ошибка при загрузке Ñцены из %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ок"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6667,8 +6708,8 @@ msgid "Error duplicating scene to save it."
msgstr "Ошибка Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñцены, при её Ñохранении."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Вложенные РеÑурÑÑ‹:"
+msgid "Sub-Resources"
+msgstr "Вложенные реÑурÑÑ‹"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6971,7 +7012,7 @@ msgid "Pick one or more items from the list to display the graph."
msgstr ""
"Выбрать один или неÑколько Ñлементов из ÑпиÑка, чтобы отобразить график."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Ошибки"
@@ -6980,6 +7021,10 @@ msgid "Child Process Connected"
msgstr "Дочерний процеÑÑ ÑвÑзан"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Ошибка копированиÑ"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "ОÑмотреть предыдущий ÑкземплÑÑ€"
@@ -7073,7 +7118,7 @@ msgstr "ГорÑчие клавиши"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "ПривÑзка"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7125,43 +7170,39 @@ msgstr "Изменить Probe Extents"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Выберите динамичеÑкую библиотеку Ð´Ð»Ñ Ñтого полÑ"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Выберите завиÑимоÑти библиотеки Ð´Ð»Ñ Ñтого полÑ"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Удалить точку кривой"
+msgstr "Удалить текущее поле"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Дважды щелкните, чтобы Ñоздать новое поле"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Платформа:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Скопировать на платформу.."
+msgstr "Платформа"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Библиотека"
+msgstr "ДинамичеÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Добавить поле архитектуры"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNative библиотека"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7330,10 +7371,50 @@ msgstr "GridMap Параметры"
msgid "Pick Distance:"
msgstr "РаÑÑтоÑние выбора:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "Создание C# проекта..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Ðе удалоÑÑŒ Ñоздать решение."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Ðе удалоÑÑŒ Ñохранить решение."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Готово"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Ðе удалоÑÑŒ Ñоздать C# проект."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Моно"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Создать C# решение"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "Билды"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Собрать проект"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "ПредупреждениÑ"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7689,27 +7770,31 @@ msgstr "ЗапуÑтить в браузере"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr "ЗапуÑтить HTML в Ñтандартном браузере ÑиÑтемы."
+msgstr "ЗапуÑтить HTML в ÑиÑтемном браузере по умолчанию."
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file:"
+msgstr "Ðе удалоÑÑŒ запиÑать файл:"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "Ðе удалоÑÑŒ запиÑать файл:\n"
+msgid "Could not open template for export:"
+msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:\n"
+msgid "Invalid export template:"
+msgstr "Ðеверный шаблон ÑкÑпорта:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Ðеверный шаблон ÑкÑпорта:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Ðе удалоÑÑŒ прочитать пользовательÑкую HTML оболочку:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Ðе удаетÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ пользовательÑкую HTML-оболочку:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:\n"
+msgid "Using default boot splash image."
+msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7727,6 +7812,13 @@ msgstr ""
"Только один видимый CanvasModulate на Ñцену (или ÑовокупноÑть приведённых "
"Ñцен). Будет работать первый Ñозданный, оÑтальные будут проигнорированы."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7818,7 +7910,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7873,23 +7965,27 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin требует дочерний узел ARVRCamera"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "ПоÑтроение Ñетки"
+msgstr "ПоÑтроение полиÑетки: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "ПоÑтроение Ñетки"
+msgstr "ПоÑтроение Света:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Завершение поÑтроениÑ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "ПоÑтроение Ñетки"
+msgstr "ОÑвещение полиÑетки: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7925,7 +8021,7 @@ msgstr ""
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
-msgstr "ПоÑтроение Ñетки"
+msgstr "ПоÑтроение полиÑетки"
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
@@ -7947,8 +8043,8 @@ msgstr "Ðичего не видно, потому что полиÑетки нÐ
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RigidBody (в режиме character или rigid) будут "
@@ -8009,7 +8105,8 @@ msgid ""
"hide upon running."
msgstr ""
"ПоÑле запуÑка вÑплывающие окна по умолчанию Ñкрыты, Ð´Ð»Ñ Ð¸Ñ… Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ "
-"иÑпользуйте функцию popup() или любую из popup_*()."
+"иÑпользуйте функцию popup() или любую из popup*(). Делать их видимыми Ð´Ð»Ñ "
+"Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ - нормально, но они будут Ñкрыты при запуÑке."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -8029,11 +8126,11 @@ msgstr "(Другие)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
-"Среда по умолчанию, как определено в ÐаÑтройках проекта (Rendering -> "
-"Viewport -> Default Environment) не может быть загружена."
+"Среда по умолчанию, как определено в наÑтройках проекта (Rendering -> "
+"Environment -> Default Environment) не может быть загружена."
#: scene/main/viewport.cpp
msgid ""
@@ -8064,6 +8161,39 @@ msgstr "Ошибка загрузки шрифта."
msgid "Invalid font size."
msgstr "ÐедопуÑтимый размер шрифта."
+#~ msgid "Next"
+#~ msgstr "Следующий"
+
+#~ msgid "Not found!"
+#~ msgstr "Ðе найдено!"
+
+#~ msgid "Replace By"
+#~ msgstr "Заменить на"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "ЧувÑтвительноÑть региÑтра"
+
+#~ msgid "Backwards"
+#~ msgstr "В обратном направлении"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Подтверждение замены"
+
+#~ msgid "Skip"
+#~ msgstr "ПропуÑтить"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Ваш проект будет Ñоздан не в пуÑтой папке (лучше Ñоздать новую папку)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Бинго!"
+
+#~ msgid "preview"
+#~ msgstr "предпроÑмотр"
+
#~ msgid "Move Add Key"
#~ msgstr "Подвинуть ключ"
@@ -8157,9 +8287,6 @@ msgstr "ÐедопуÑтимый размер шрифта."
#~ msgid "' parsing of config failed."
#~ msgstr "' анализ конфигурации не удалÑÑ."
-#~ msgid "Theme"
-#~ msgstr "Тема"
-
#~ msgid "Method List For '%s':"
#~ msgstr "СпиÑок методов Ð´Ð»Ñ '%s':"
@@ -8429,9 +8556,6 @@ msgstr "ÐедопуÑтимый размер шрифта."
#~ msgid "Import Anyway"
#~ msgstr "Импортировать в любом Ñлучае"
-#~ msgid "Import & Open"
-#~ msgstr "Импортировать и Открыть"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ñцена не была Ñохранена, открыть импортированную Ñцену в "
@@ -8687,9 +8811,6 @@ msgstr "ÐедопуÑтимый размер шрифта."
#~ msgid "Stereo"
#~ msgstr "Стерео"
-#~ msgid "Mono"
-#~ msgstr "Моно"
-
#~ msgid "Pitch"
#~ msgstr "Ð’Ñ‹Ñота"
@@ -8859,9 +8980,6 @@ msgstr "ÐедопуÑтимый размер шрифта."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "ОповещениÑ, когда внешний реÑÑƒÑ€Ñ Ð±Ñ‹Ð» изменён."
-#~ msgid "Tutorials"
-#~ msgstr "Уроки"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "Открыть https://godotengine.org Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ уроков."
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 83201baab1..33c848f91b 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -197,8 +197,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -375,14 +374,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -391,47 +382,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -549,6 +508,15 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
#, fuzzy
msgid "Create New %s"
msgstr "Vytvoriť adresár"
@@ -655,7 +623,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -738,8 +706,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -826,7 +794,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1136,7 +1104,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1354,6 +1322,17 @@ msgid "Description"
msgstr "Popis:"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1386,6 +1365,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1397,6 +1380,11 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Popis:"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1405,8 +1393,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1460,7 +1448,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2017,6 +2006,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2399,7 +2395,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2556,9 +2552,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2566,19 +2560,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3221,6 +3215,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3388,6 +3386,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3692,19 +3691,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4081,7 +4083,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4474,14 +4476,16 @@ msgstr ""
msgid "Paste"
msgstr "Vložiť"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4558,6 +4562,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4989,83 +4997,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5080,6 +5088,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5154,15 +5166,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5441,10 +5449,18 @@ msgstr "Vložiť"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5470,14 +5486,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Separation:"
msgstr "Popis:"
@@ -5618,6 +5637,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5720,6 +5743,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5827,9 +5875,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5841,6 +5887,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Vytvoriť adresár"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5882,14 +5937,27 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Vytvoriť adresár"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5907,10 +5975,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5956,6 +6020,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6083,11 +6151,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6469,10 +6532,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6557,7 +6616,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6859,7 +6918,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6868,6 +6927,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7217,10 +7280,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7575,23 +7678,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, fuzzy
+msgid "Could not write file:"
+msgstr "Popis:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7606,6 +7714,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7681,7 +7796,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7740,6 +7855,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7785,8 +7907,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7851,8 +7973,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 07b74c1367..9e9db80294 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -5,13 +5,14 @@
#
# matevž lapajne <sivar.lapajne@gmail.com>, 2016-2017.
# Matjaž Vitas <matjaz.vitas@gmail.com>, 2017.
+# Miha Komatar <miha.komatar@gmail.com>, 2018.
# Simon Å ander <simon.sand3r@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-07 02:49+0000\n"
-"Last-Translator: Matjaž Vitas <matjaz.vitas@gmail.com>\n"
+"PO-Revision-Date: 2018-01-25 22:27+0000\n"
+"Last-Translator: Miha Komatar <miha.komatar@gmail.com>\n"
"Language-Team: Slovenian <https://hosted.weblate.org/projects/godot-engine/"
"godot/sl/>\n"
"Language: sl\n"
@@ -19,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -35,7 +36,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr ""
+msgstr "Anim spremeni prehod"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
@@ -47,7 +48,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr ""
+msgstr "Anim izberi klic"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
@@ -201,8 +202,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Ustvari"
@@ -379,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Zamenjaj"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -395,47 +387,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Iskanje"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ni Zadetka!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Zamenjaj Z"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr ""
+msgid "Replace"
+msgstr "Zamenjaj"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -554,6 +514,16 @@ msgstr ""
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Osnovni Tip:"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Spremeni"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Ustvari"
@@ -659,7 +629,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -742,8 +712,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -828,7 +798,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1139,7 +1109,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1355,6 +1325,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1386,6 +1367,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1397,6 +1382,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1405,8 +1394,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1460,7 +1449,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2014,6 +2004,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Iskanje"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2393,7 +2390,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2549,9 +2546,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2559,19 +2554,21 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Napaka naložitve pisave."
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
-msgstr ""
+#, fuzzy
+msgid "Error duplicating:"
+msgstr "Preimenuj Spremenljivko"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3214,6 +3211,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Približaj Animacijo"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3379,6 +3381,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3683,19 +3686,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4069,7 +4075,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4462,14 +4468,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4545,6 +4553,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4979,84 +4991,84 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "Spremeni"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "Spremeni"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5071,6 +5083,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5144,16 +5160,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Dodaj Setter Lastnost"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5429,10 +5442,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5458,14 +5479,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5605,6 +5629,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5705,6 +5733,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Dodaj Setter Lastnost"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "PrekliÄi"
@@ -5812,9 +5865,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5826,6 +5877,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5867,14 +5926,27 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Ustvari"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5891,10 +5963,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5940,6 +6008,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6067,11 +6139,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "Spremeni"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6453,10 +6520,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6541,7 +6604,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6837,7 +6900,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6846,6 +6909,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7195,10 +7262,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7561,24 +7668,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "Neveljaven indeks lastnosti imena."
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7597,6 +7708,13 @@ msgstr ""
"Le en viden CanvasModulate je dovoljen na sceno (ali niz instanciranih "
"scen). Prvi ustvarjen se bo uporabil, medtem ko bodo drugi prezrti."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7673,7 +7791,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7732,6 +7850,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7777,8 +7902,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7847,8 +7972,8 @@ msgstr "(Ostalo)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7869,12 +7994,18 @@ msgstr "Neznani format pisave."
#: scene/resources/dynamic_font.cpp
msgid "Error loading font."
-msgstr "Napaka naložitve pisave."
+msgstr "Napaka nalaganja pisave."
#: scene/resources/dynamic_font.cpp
msgid "Invalid font size."
msgstr "Neveljavna velikost pisave."
+#~ msgid "Not found!"
+#~ msgstr "Ni Zadetka!"
+
+#~ msgid "Replace By"
+#~ msgstr "Zamenjaj Z"
+
#, fuzzy
#~ msgid "Invalid unique name."
#~ msgstr "Neveljaven indeks lastnosti imena."
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index 06b90e8b70..1c53884f32 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -199,8 +199,7 @@ msgstr "Ðаправите %d нових трака и убаците кључе
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Ðаправи"
@@ -377,14 +376,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Замени %d појаве/а."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Замени"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Замени Ñве"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Подударање великих и малих Ñлова"
@@ -393,48 +384,16 @@ msgid "Whole Words"
msgstr "Целе речи"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Само одабрано"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Тражи"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Ðађи"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Следеће"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ðије пронађено!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Заменити Ñа"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Разликовање великих и малих Ñлова"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Ðатраг"
+msgid "Replace"
+msgstr "Замени"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Питај за замену"
+msgid "Replace All"
+msgstr "Замени Ñве"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "ПреÑкочи"
+msgid "Selection Only"
+msgstr "Само одабрано"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -555,6 +514,16 @@ msgstr "Сигнали"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Измени уобичајен тип"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Ðаправи нов"
@@ -666,7 +635,8 @@ msgstr ""
"Ипак их обриши? (ÐЕМРОПОЗИВÐЊÐ)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "Ðе може Ñе обриÑати:\n"
#: editor/dependency_editor.cpp
@@ -749,8 +719,9 @@ msgstr "ОÑнивачи пројекта"
msgid "Lead Developer"
msgstr "Главни девелопер"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
msgstr "Менаџер пројекта"
#: editor/editor_about.cpp
@@ -839,7 +810,7 @@ msgid "Success!"
msgstr "УÑпех!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "ИнÑталирај"
@@ -1148,7 +1119,8 @@ msgid "Packing"
msgstr "Паковање"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+#, fuzzy
+msgid "Template file not found:"
msgstr "ШаблонÑка датотека није пронађена:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1360,6 +1332,21 @@ msgid "Description"
msgstr "ОпиÑ"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Онлајн документација"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Тренутно нема опиÑа ове методе. Молимо помозите нама тако што ћете [color="
+"$color][url=$url]напиÑати једну[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "ОÑобине"
@@ -1395,6 +1382,10 @@ msgstr ""
msgid "Search Text"
msgstr "Потражи текÑÑ‚"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Ðађи"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Излаз:"
@@ -1406,6 +1397,11 @@ msgstr "Излаз:"
msgid "Clear"
msgstr "Обриши"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Излаз"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Грешка при чувању реÑурÑа!"
@@ -1414,8 +1410,8 @@ msgstr "Грешка при чувању реÑурÑа!"
msgid "Save Resource As.."
msgstr "Сачувај реÑÑƒÑ€Ñ ÐºÐ°Ð¾..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Разумем..."
@@ -1468,8 +1464,10 @@ msgid "This operation can't be done without a tree root."
msgstr "Ова операција Ñе не може обавити без корена дрвета."
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr "Ðе могу Ñачувати Ñцену. Вероватно завиÑноÑти ниÑу задовољене."
#: editor/editor_node.cpp
@@ -2075,6 +2073,13 @@ msgstr "Помоћ"
msgid "Classes"
msgstr "КлаÑе"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Тражи"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Онлајн документација"
@@ -2460,7 +2465,8 @@ msgid "No version.txt found inside templates."
msgstr "„version.txt“ није пронаћен у шаблону."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+#, fuzzy
+msgid "Error creating path for templates:"
msgstr "Грешка при прављењу пута за шаблоне:\n"
#: editor/export_template_manager.cpp
@@ -2620,9 +2626,8 @@ msgid "View items as a list"
msgstr "Прикажи Ñтвари као лиÑта"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+#, fuzzy
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
"\n"
"СтатуÑ: Увоз датотеке неуÑпео. Молим, иÑправите датотеку и поново је увезите "
@@ -2633,20 +2638,23 @@ msgid "Cannot move/rename resources root."
msgstr "Ðе могу померити/преименовати корен реÑурÑа."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+#, fuzzy
+msgid "Cannot move a folder into itself."
msgstr "Ðе могу померити директоријум у њену Ñаму.\n"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+#, fuzzy
+msgid "Error moving:"
msgstr "Грешка при померању:\n"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Грешка при учитавању:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+#, fuzzy
+msgid "Unable to update dependencies:"
msgstr "Ðије могуће ажурирати завиÑноÑти:\n"
#: editor/filesystem_dock.cpp
@@ -3295,6 +3303,11 @@ msgstr "Измени филтере чвора"
msgid "Filters.."
msgstr "Филтери..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Ðнимација"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Слободно"
@@ -3460,6 +3473,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Преглед"
@@ -3763,6 +3777,14 @@ msgstr "Додај %s"
msgid "Adding %s..."
msgstr "Додавање %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3774,11 +3796,6 @@ msgid "Error instancing scene from %s"
msgstr "Грешка при прављењу Ñцене од %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Ова операција захтева један изабран чвор."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Измени уобичајен тип"
@@ -4152,7 +4169,8 @@ msgid "Bake!"
msgstr "ИÑпеци!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+#, fuzzy
+msgid "Bake the navigation mesh."
msgstr "ИÑпеци навигациону мрежу.\n"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4541,14 +4559,18 @@ msgstr "Учитај реÑурÑ"
msgid "Paste"
msgstr "Ðалепи"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "РеÑурÑ"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ОчиÑти недавно отворене датотеке"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+#, fuzzy
+msgid "Close and save changes?"
msgstr ""
"Затвори и Ñачувај измене?\n"
"\""
@@ -4627,6 +4649,11 @@ msgid "Copy Script Path"
msgstr "Копирај пут"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Покажи у менаџеру датотека"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr "ИÑторија претходно"
@@ -5063,84 +5090,84 @@ msgid "Rotating %s degrees."
msgstr "Ротација за %s Ñтепени."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Поглед одоздо."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Кључеви Ñу онемогућени (нема убачених кључева)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Доле"
+msgid "Animation Key Inserted."
+msgstr "Ðнимациони кључ убачен."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Поглед одозго."
+msgid "Objects Drawn"
+msgstr "Ðацртани објекти"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Бочни поглед."
+msgid "Material Changes"
+msgstr "Промене материјала"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Бок"
+msgid "Shader Changes"
+msgstr "Промене шејдера"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Поглед Ñпреда."
+msgid "Surface Changes"
+msgstr "Промене површи"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "ИÑпред"
+msgid "Draw Calls"
+msgstr "Позиви цртања"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Леви поглед."
+msgid "Vertices"
+msgstr "Тачке"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Лево"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "ДеÑни поглед."
+msgid "Top View."
+msgstr "Поглед одозго."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "деÑно"
+msgid "Bottom View."
+msgstr "Поглед одоздо."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Кључеви Ñу онемогућени (нема убачених кључева)."
+msgid "Bottom"
+msgstr "Доле"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Ðнимациони кључ убачен."
+msgid "Left View."
+msgstr "Леви поглед."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Ðацртани објекти"
+msgid "Left"
+msgstr "Лево"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Промене материјала"
+msgid "Right View."
+msgstr "ДеÑни поглед."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Промене шејдера"
+msgid "Right"
+msgstr "деÑно"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Промене површи"
+msgid "Front View."
+msgstr "Поглед Ñпреда."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Позиви цртања"
+msgid "Front"
+msgstr "ИÑпред"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Тачке"
+msgid "Rear View."
+msgstr "Бочни поглед."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Бок"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5154,6 +5181,10 @@ msgstr "ОК :("
msgid "No parent to instance a child at."
msgstr "Ðема родитеља за прављење Ñина."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Ова операција захтева један изабран чвор."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Прикажи нормалу"
@@ -5227,15 +5258,12 @@ msgid "Freelook Speed Modifier"
msgstr "Брзина Ñлободног погледа"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "преглед"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm дијалог"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+#, fuzzy
+msgid "Select Mode (Q)"
msgstr "Режим Ñелекције (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5516,10 +5544,20 @@ msgstr "Помери (иза)"
msgid "Move (After)"
msgstr "Помери (иÑпред)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "SpriteFrames"
+msgstr "Ðалепи оквир"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox преглед:"
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Стил"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "ПоÑтави правоугаони регион"
@@ -5545,14 +5583,17 @@ msgid "Auto Slice"
msgstr "ÐутоматÑки рез"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "ОфÑет:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Корак:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "ОдвојеноÑÑ‚:"
@@ -5694,6 +5735,11 @@ msgstr "Фонт"
msgid "Color"
msgstr "Боја"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme"
+msgstr "Сачувај тему"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Обриши одабрано"
@@ -5798,6 +5844,32 @@ msgstr "Споји од Ñцене"
msgid "Error"
msgstr "Грешка"
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Autotiles"
+msgstr "ÐутоматÑки рез"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Сачувај тренутно измењени реÑурÑ."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5912,9 +5984,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5926,6 +5996,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "ÐеуÑпех при прављењу директоријума."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5966,14 +6045,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "Увоз"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "Ðаправи емитер"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "ИнÑталирај"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5990,10 +6084,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6039,6 +6129,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Менаџер пројекта"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6165,11 +6259,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6549,10 +6638,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6637,8 +6722,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "РеÑурÑи"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6928,7 +7014,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6937,6 +7023,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Учитај грешке"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7283,10 +7374,57 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Прављење контура..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "ÐеуÑпех при прављењу ивица!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Грешка при учитавању реÑурÑа."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "Готово!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Грешка при учитавању реÑурÑа."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Ðаправи ивице"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Пројекат"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7632,23 +7770,33 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not write file:"
+msgstr "ÐеуÑпех при тражењу плочице:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "ÐеуÑпех при прављењу директоријума."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+#, fuzzy
+msgid "Invalid export template:"
msgstr "Ðеважећи извозни шаблон:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not read custom HTML shell:"
+msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read boot splash image file:"
+msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "ÐеуÑпех при учитавању датотеке Ñа Ñличицом учитавања:\n"
#: scene/2d/animated_sprite.cpp
@@ -7663,6 +7811,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7731,7 +7886,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7790,6 +7945,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7835,8 +7997,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7901,8 +8063,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7929,6 +8091,30 @@ msgstr ""
msgid "Invalid font size."
msgstr "Ðеважећа величина фонта."
+#~ msgid "Next"
+#~ msgstr "Следеће"
+
+#~ msgid "Not found!"
+#~ msgstr "Ðије пронађено!"
+
+#~ msgid "Replace By"
+#~ msgstr "Заменити Ñа"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Разликовање великих и малих Ñлова"
+
+#~ msgid "Backwards"
+#~ msgstr "Ðатраг"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Питај за замену"
+
+#~ msgid "Skip"
+#~ msgstr "ПреÑкочи"
+
+#~ msgid "preview"
+#~ msgstr "преглед"
+
#~ msgid "Move Add Key"
#~ msgstr "Помери кључ"
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 6eb50bacf1..5779cb56b1 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -205,8 +205,7 @@ msgstr "Skapa %d NYA spår och infoga nycklar?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Skapa"
@@ -398,14 +397,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Ersatte %d förekomst(er)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Ersätt"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Ersätt Alla"
-
-#: editor/code_editor.cpp
#, fuzzy
msgid "Match Case"
msgstr "Matcha gemener/versaler"
@@ -415,52 +406,17 @@ msgid "Whole Words"
msgstr "Hela Ord"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Selection Only"
-msgstr "Endast Urval"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Sök"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Hitta"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Nästa"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Hittades inte!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Ersätt Med"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Case Sensitive"
-msgstr "Skiftlägeskänsligt"
+msgid "Replace"
+msgstr "Ersätt"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Backwards"
-msgstr "Baklänges"
+msgid "Replace All"
+msgstr "Ersätt Alla"
#: editor/code_editor.cpp
#, fuzzy
-msgid "Prompt On Replace"
-msgstr "Fråga vid Ersättning"
-
-#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Hoppa över"
+msgid "Selection Only"
+msgstr "Endast Urval"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -590,6 +546,17 @@ msgstr "Signaler"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "Ändra Typ"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "Ändra"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "Skapa Ny"
@@ -716,7 +683,7 @@ msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr "Kan inte ta bort:\n"
#: editor/dependency_editor.cpp
@@ -814,9 +781,9 @@ msgstr "Projektgrundare"
msgid "Lead Developer"
msgstr "Lead Developer"
-#: editor/editor_about.cpp editor/project_manager.cpp
+#: editor/editor_about.cpp
#, fuzzy
-msgid "Project Manager"
+msgid "Project Manager "
msgstr "Projektledare"
#: editor/editor_about.cpp
@@ -919,7 +886,7 @@ msgid "Success!"
msgstr "Klart!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Installera"
@@ -1285,7 +1252,7 @@ msgstr "Packar"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
#, fuzzy
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr "Mallfil hittades inte:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1523,6 +1490,21 @@ msgstr "Beskrivning"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Online Tutorials:"
+msgstr "Dokumentation Online"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Det finns för närvarande ingen beskrivning för denna metod. Snälla hjälp oss "
+"genom att [color=$color][url=$url]bidra med en[/url][/color]!"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Properties"
msgstr "Egenskaper"
@@ -1564,6 +1546,10 @@ msgstr ""
msgid "Search Text"
msgstr "Söktext"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Hitta"
+
#: editor/editor_log.cpp
#, fuzzy
msgid "Output:"
@@ -1577,6 +1563,11 @@ msgstr "Output:"
msgid "Clear"
msgstr "Rensa"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "Output:"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Error saving resource!"
@@ -1586,8 +1577,8 @@ msgstr "Fel vid sparande av resurs!"
msgid "Save Resource As.."
msgstr "Spara Resurs Som.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Jag förstår.."
@@ -1651,7 +1642,8 @@ msgstr "Åtgärden kan inte göras utan en trädrot."
#: editor/editor_node.cpp
#, fuzzy
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
"Kunde inte spara scenen. Förmodligen kunde inte beroenden (instanser) "
"uppfyllas."
@@ -2308,6 +2300,13 @@ msgstr "Hjälp"
msgid "Classes"
msgstr "Klasser"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Sök"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Online Docs"
@@ -2710,8 +2709,9 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr ""
+#, fuzzy
+msgid "Error creating path for templates:"
+msgstr "Fel vid laddning av mall '%s'"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2879,9 +2879,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2889,21 +2887,23 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+#, fuzzy
+msgid "Error moving:"
+msgstr "Fel vid laddning:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "Fel vid laddning:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:"
+msgstr "Scen '%s' har trasiga beroenden:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -3577,6 +3577,11 @@ msgstr "Redigera Node-Filter"
msgid "Filters.."
msgstr "Filter.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "Animation"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3745,6 +3750,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Preview"
msgstr "Förhandsgranska"
@@ -4048,6 +4054,14 @@ msgstr "Lägg till %s"
msgid "Adding %s..."
msgstr "Lägger till %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
@@ -4060,12 +4074,6 @@ msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "This operation requires a single selected node."
-msgstr "Åtgärden kräver en enstaka vald Node."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr ""
@@ -4449,7 +4457,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4842,15 +4850,18 @@ msgstr "Ladda Resurs"
msgid "Paste"
msgstr "Klistra in"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "Resurs"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
"Stäng och spara ändringar?\n"
"\""
@@ -4937,6 +4948,11 @@ msgid "Copy Script Path"
msgstr "Kopiera Sökvägen"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "Visa i Filsystemet"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5395,39 +5411,55 @@ msgid "Rotating %s degrees."
msgstr "Roterar %s grader."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Bottom View."
-msgstr "Vy Underifrån"
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Bottom"
-msgstr "Botten"
+msgid "Animation Key Inserted."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Top View."
-msgstr "Vy Ovanifrån."
+msgid "Objects Drawn"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Rear View."
-msgstr "Vy Bakifrån."
+msgid "Material Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Shader Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Vertices"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Rear"
-msgstr "Baksida"
+msgid "Top View."
+msgstr "Vy Ovanifrån."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Front View."
-msgstr "Vy Framifrån."
+msgid "Bottom View."
+msgstr "Vy Underifrån"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Front"
-msgstr "Framsida"
+msgid "Bottom"
+msgstr "Botten"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5450,40 +5482,24 @@ msgid "Right"
msgstr "Höger"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Front View."
+msgstr "Vy Framifrån."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Front"
+msgstr "Framsida"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr ""
+#, fuzzy
+msgid "Rear View."
+msgstr "Vy Bakifrån."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+#, fuzzy
+msgid "Rear"
+msgstr "Baksida"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5498,6 +5514,11 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr "Ingen förälder att instansiera ett barn till."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "This operation requires a single selected node."
+msgstr "Åtgärden kräver en enstaka vald Node."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5573,17 +5594,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "förhandsgranska"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "Välj Node"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5868,10 +5885,19 @@ msgstr "Flytta (före)"
msgid "Move (After)"
msgstr "Flytta (efter)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+#, fuzzy
+msgid "StyleBox"
+msgstr "Stil"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5897,14 +5923,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -6052,6 +6081,11 @@ msgstr "Font"
msgid "Color"
msgstr "Färg"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme"
+msgstr "Spara Tema"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -6156,6 +6190,31 @@ msgstr ""
msgid "Error"
msgstr "Fel"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "Skapa Mapp"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
#, fuzzy
msgid "Cancel"
@@ -6268,13 +6327,8 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
-"Ditt projekt kommer att skapas i en icke-tom mapp (du kanske vill skapa en "
-"ny mapp)."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -6286,6 +6340,15 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't create folder."
+msgstr "Kunde inte skapa mapp."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "It would be a good idea to name your project."
msgstr "Det vore en bra idé att namnge ditt projekt."
@@ -6330,16 +6393,31 @@ msgstr "Importera Befintligt Projekt"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import & Edit"
+msgstr "Importera"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Create New Project"
msgstr "Skapa Nytt Projekt"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Create & Edit"
+msgstr "Skapa Skript"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Install Project:"
msgstr "Installera Projekt:"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Install & Edit"
+msgstr "Installera"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Project Name:"
msgstr "Projektnamn:"
@@ -6357,10 +6435,6 @@ msgid "Browse"
msgstr "Bläddra"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "Det är en BINGO!"
-
-#: editor/project_manager.cpp
#, fuzzy
msgid "Unnamed Project"
msgstr "Namnlöst Projekt"
@@ -6409,6 +6483,11 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Project Manager"
+msgstr "Projektledare"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Project List"
msgstr "Projektlista"
@@ -6545,12 +6624,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "Ändra"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6947,10 +7020,6 @@ msgid "Error loading scene from %s"
msgstr "Fel vid laddning av scen från %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -7045,8 +7114,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "Resurser"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -7365,7 +7435,7 @@ msgstr "Funktion:"
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
#, fuzzy
msgid "Errors"
msgstr "Fel"
@@ -7376,6 +7446,11 @@ msgid "Child Process Connected"
msgstr "Barnprocess Ansluten"
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "Fel"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7740,10 +7815,58 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Generating solution..."
+msgstr "Skapar konturer..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "Misslyckades att ladda resurs."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "Misslyckades att ladda resurs."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Done"
+msgstr "Klar!"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "Misslyckades att ladda resurs."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "Skapa Prenumeration"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "Projekt"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Warnings"
+msgstr "Varning"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -8115,23 +8238,29 @@ msgstr "Kör exporterad HTML i systemets standardwebbläsare."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "Kunde inte skriva till filen:\n"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "Kunde inte skapa mapp."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+#, fuzzy
+msgid "Could not read boot splash image file:"
+msgstr "Kunde inte skriva till filen:\n"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -8146,6 +8275,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
#, fuzzy
msgid ""
@@ -8231,7 +8367,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8293,6 +8429,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
#, fuzzy
msgid ""
@@ -8347,8 +8490,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8418,8 +8561,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -8450,12 +8593,47 @@ msgstr "Fel vid laddning av font."
msgid "Invalid font size."
msgstr "Ogiltig teckenstorlek."
-#~ msgid "Move Add Key"
-#~ msgstr "Flytta Lägg Till Nyckel"
+#~ msgid "Next"
+#~ msgstr "Nästa"
+
+#~ msgid "Not found!"
+#~ msgstr "Hittades inte!"
+
+#~ msgid "Replace By"
+#~ msgstr "Ersätt Med"
+
+#, fuzzy
+#~ msgid "Case Sensitive"
+#~ msgstr "Skiftlägeskänsligt"
#, fuzzy
-#~ msgid "Create Subscription"
-#~ msgstr "Skapa Prenumeration"
+#~ msgid "Backwards"
+#~ msgstr "Baklänges"
+
+#, fuzzy
+#~ msgid "Prompt On Replace"
+#~ msgstr "Fråga vid Ersättning"
+
+#~ msgid "Skip"
+#~ msgstr "Hoppa över"
+
+#, fuzzy
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Ditt projekt kommer att skapas i en icke-tom mapp (du kanske vill skapa "
+#~ "en ny mapp)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "Det är en BINGO!"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "förhandsgranska"
+
+#~ msgid "Move Add Key"
+#~ msgstr "Flytta Lägg Till Nyckel"
#~ msgid "List:"
#~ msgstr "Lista:"
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 30b6f45c0b..16e646b2a0 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -198,8 +198,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -376,14 +375,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -392,47 +383,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -550,6 +509,15 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
msgstr ""
@@ -655,7 +623,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -738,8 +706,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -824,7 +792,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1131,7 +1099,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1343,6 +1311,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1374,6 +1353,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1385,6 +1368,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1393,8 +1380,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1448,7 +1435,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2001,6 +1989,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2380,7 +2375,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2534,9 +2529,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2544,19 +2537,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3194,6 +3187,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3359,6 +3356,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3659,19 +3657,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4042,7 +4043,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4431,14 +4432,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4514,6 +4517,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4945,83 +4952,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5036,6 +5043,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5109,15 +5120,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5392,10 +5399,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5421,14 +5436,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5566,6 +5584,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5666,6 +5688,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5773,9 +5819,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5787,6 +5831,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5827,14 +5879,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5851,10 +5915,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5900,6 +5960,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6026,11 +6090,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6408,10 +6467,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6496,7 +6551,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6787,7 +6842,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6796,6 +6851,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7141,10 +7200,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7490,23 +7589,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7521,6 +7624,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7589,7 +7699,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7648,6 +7758,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7693,8 +7810,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7759,8 +7876,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 69ba3b2279..4f8b834985 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -4,20 +4,20 @@
# This file is distributed under the same license as the Godot source code.
#
# Kaveeta Vivatchai <goodytong@gmail.com>, 2017.
-# Poommetee Ketson (Noshyaar) <poommetee@protonmail.com>, 2017.
+# Poommetee Ketson (Noshyaar) <poommetee@protonmail.com>, 2017-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-03 07:50+0000\n"
-"Last-Translator: Kaveeta Vivatchai <katviv@protonmail.com>\n"
+"PO-Revision-Date: 2018-01-20 09:49+0000\n"
+"Last-Translator: Poommetee Ketson <poommetee@protonmail.com>\n"
"Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/"
"th/>\n"
"Language: th\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -28,9 +28,8 @@ msgid "All Selection"
msgstr "เลือà¸à¸—ั้งหมด"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "à¹à¸à¹‰à¹„ขค่าà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+msgstr "à¹à¸à¹‰à¹„ขเวลาคีย์เฟรมà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -41,9 +40,8 @@ msgid "Anim Change Transform"
msgstr "เคลื่อนย้ายà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "à¹à¸à¹‰à¹„ขค่าà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+msgstr "à¹à¸à¹‰à¹„ขค่าคีย์เฟรมà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -199,8 +197,7 @@ msgstr "เพิ่ม %d à¹à¸—ร็à¸à¹ƒà¸«à¸¡à¹ˆà¹à¸¥à¸°à¹€à¸žà¸´à¹ˆà¸¡à¸
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "สร้าง"
@@ -377,14 +374,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "à¹à¸—นที่à¹à¸¥à¹‰à¸§ %d ครั้ง"
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "à¹à¸—นที่"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "à¹à¸—นที่ทั้งหมด"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "ตรงตามอัà¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ"
@@ -393,48 +382,16 @@ msgid "Whole Words"
msgstr "ทั้งคำ"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ค้นหา"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "ค้นหา"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "ต่อไป"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "ไม่พบ!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "à¹à¸—นที่ด้วย"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "ตรงตามอัà¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "ย้อนà¸à¸¥à¸±à¸š"
+msgid "Replace"
+msgstr "à¹à¸—นที่"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "เตือนà¸à¹ˆà¸­à¸™à¹à¸—นที่"
+msgid "Replace All"
+msgstr "à¹à¸—นที่ทั้งหมด"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "ข้าม"
+msgid "Selection Only"
+msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -534,9 +491,8 @@ msgid "Connecting Signal:"
msgstr "เชื่อมโยงสัà¸à¸à¸²à¸“:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "เชื่อม '%s' à¸à¸±à¸š '%s'"
+msgstr "ลบà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง '%s' à¸à¸±à¸š '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -552,9 +508,17 @@ msgid "Signals"
msgstr "สัà¸à¸à¸²à¸“"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "เปลี่ยนประเภท %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "เปลี่ยน"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "สร้างใหม่"
+msgstr "สร้าง %s ใหม่"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -664,8 +628,8 @@ msgstr ""
"ยืนยันจะลบหรือไม่? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "ไม่สามารถลบ:\n"
+msgid "Cannot remove:"
+msgstr "ไม่สามารถลบ:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -741,15 +705,15 @@ msgstr "ผู้ช่วยพัฒนา Godot Engine"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr "ผู้บุà¸à¹€à¸šà¸´à¸à¹‚ครงà¸à¸²à¸£"
+msgstr "ผู้ริเริ่มโครงà¸à¸²à¸£"
#: editor/editor_about.cpp
msgid "Lead Developer"
msgstr "ผู้พัฒนาหลัà¸"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "ผู้จัดà¸à¸²à¸£à¹‚ครงà¸à¸²à¸£ "
#: editor/editor_about.cpp
msgid "Developers"
@@ -836,7 +800,7 @@ msgid "Success!"
msgstr "สำเร็จ!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "ติดตั้ง"
@@ -857,9 +821,8 @@ msgid "Rename Audio Bus"
msgstr "เปลี่ยนชื่อ Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "สลับ Solo ของ Audio Bus"
+msgstr "ปรับระดับเสียง Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -924,7 +887,7 @@ msgstr "ลบเอฟเฟà¸à¸•์"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "เสียง"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1099,13 +1062,12 @@ msgid "Updating scene.."
msgstr "อัพเดทฉาà¸.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(ว่างเปล่า)"
+msgstr "[ว่างเปล่า]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[ไฟล์ใหม่]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1145,8 +1107,8 @@ msgid "Packing"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:\n"
+msgid "Template file not found:"
+msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1357,6 +1319,19 @@ msgid "Description"
msgstr "รายละเอียด"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "สอนใช้งานออนไลน์:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"คลาสนี้ยังไม่มีà¸à¸²à¸£à¸ªà¸­à¸™à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ ท่านสามารถ[color=$color][url=$url]ช่วยเขียน[/url][/"
+"color] หรือ [color=$color][url=$url2]ขอให้จัดทำ[/url][/color]"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "คุณสมบัติ"
@@ -1388,6 +1363,10 @@ msgstr "เมท็อดนี้ยังไม่มีคำอธิบา
msgid "Search Text"
msgstr "ค้นหาคำ"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "ค้นหา"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "ข้อความ:"
@@ -1399,6 +1378,10 @@ msgstr "ข้อความ:"
msgid "Clear"
msgstr "ลบ"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "ลบข้อความ"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!"
@@ -1407,8 +1390,8 @@ msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!"
msgid "Save Resource As.."
msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¹€à¸›à¹‡à¸™.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "ตà¸à¸¥à¸‡.."
@@ -1462,8 +1445,9 @@ msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
-msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ อาจจะมีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹„ม่สมบูรณ์"
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
+msgstr "บันทึà¸à¸‰à¸²à¸à¹„ม่ได้ อาจจะมีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹„ม่สมบูรณ์ (อินสà¹à¸•นซ์หรือà¸à¸²à¸£à¸ªà¸·à¸šà¸—อด)"
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -2042,6 +2026,13 @@ msgstr "ช่วยเหลือ"
msgid "Classes"
msgstr "คลาส"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ค้นหา"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "คู่มือ"
@@ -2313,14 +2304,12 @@ msgid "Frame #:"
msgstr "เฟรมที่:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "เวลา:"
+msgstr "เวลา"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "เรียà¸"
+msgstr "จำนวนครั้ง"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2425,8 +2414,8 @@ msgid "No version.txt found inside templates."
msgstr "ไม่พบ version.txt ในà¹à¸¡à¹ˆà¹à¸šà¸š"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¡à¹ˆà¹à¸šà¸š:\n"
+msgid "Error creating path for templates:"
+msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¡à¹ˆà¹à¸šà¸š:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2459,7 +2448,6 @@ msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "ร้องขอผิดพลาด"
@@ -2507,7 +2495,6 @@ msgid "Connecting.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "เชื่อมต่อไม่ได้"
@@ -2581,33 +2568,28 @@ msgid "View items as a list"
msgstr "à¹à¸ªà¸”งเป็นรายชื่อไฟล์"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-"\n"
-"สถานะ: นำเข้าไฟล์ล้มเหลว à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขไฟล์à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าใหม่"
+msgid "Status: Import of file failed. Please fix file and reimport manually."
+msgstr "สถานะ: นำเข้าไฟล์ล้มเหลว à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขไฟล์à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าใหม่"
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "ไม่สามารถย้าย/เปลี่ยนชื่อโฟลเดอร์ราà¸"
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "ย้ายโฟลเดอร์มาข้างในตัวมันเองไม่ได้\n"
+msgid "Cannot move a folder into itself."
+msgstr "ย้ายโฟลเดอร์มาข้างในตัวมันเองไม่ได้"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "ผิดพลาดขณะย้าย:\n"
+msgid "Error moving:"
+msgstr "ผิดพลาดขณะย้าย:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "ผิดพลาดขณะโหลด:"
+msgid "Error duplicating:"
+msgstr "ผิดพลาดขณะทำซ้ำ:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "ไม่สามารถอัพเดทà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡:\n"
+msgid "Unable to update dependencies:"
+msgstr "ไม่สามารถอัพเดทà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2638,14 +2620,12 @@ msgid "Renaming folder:"
msgstr "เปลี่ยนชื่อโฟลเดอร์:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "ทำซ้ำ"
+msgstr "ทำซ้ำไฟล์:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "เปลี่ยนชื่อโฟลเดอร์:"
+msgstr "ทำซ้ำโฟลเดอร์:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2664,7 +2644,6 @@ msgid "Move To.."
msgstr "ย้ายไป.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
msgstr "เปิดไฟล์ฉาà¸"
@@ -2681,9 +2660,8 @@ msgid "View Owners.."
msgstr "ดูเจ้าของ.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "ทำซ้ำ"
+msgstr "ทำซ้ำ.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2780,14 +2758,12 @@ msgid "Importing Scene.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าฉาà¸.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "ส่งผ่านไปยัง Lightmaps:"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Lightmaps"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "สร้างเส้นà¸à¸£à¸­à¸š"
+msgstr "สร้างสำหรับพื้นผิว: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3255,6 +3231,10 @@ msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸­à¸‡à¹‚หนด"
msgid "Filters.."
msgstr "ตัวà¸à¸£à¸­à¸‡.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "ผังà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "ฟรี"
@@ -3404,23 +3384,26 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"ไม่สามารถเลือà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่จะบันทึà¸à¸ à¸²à¸ž lightmap\n"
+"à¸à¸£à¸¸à¸“าบันทึà¸à¸‰à¸²à¸ (เพื่อบันทึà¸à¸ à¸²à¸žà¹ƒà¸™à¹‚ฟลเดอร์เดียวà¸à¸±à¸™) หรือระบุตำà¹à¸«à¸™à¹ˆà¸‡à¹ƒà¸™à¸„ุณสมบัติของ BakedLightmap"
#: 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 ""
+"ไม่มีพื้นผิวให้สร้าง lightmap à¸à¸£à¸¸à¸“าตรวจสอบว่าพื้นผิวมี UV2 à¹à¸¥à¸°à¹„ด้เปิดใช้งาน 'Bake Light'"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
+msgstr "ผิดพลาดขณะสร้างภาพ lightmap à¸à¸£à¸¸à¸“าตรวจสอบว่าสามารถเขียนไฟล์ในตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่บันทึà¸à¹„ด้"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "ส่งผ่านไปยัง Lightmaps:"
+msgstr "สร้าง Lightmaps"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "ตัวอย่าง"
@@ -3723,6 +3706,14 @@ msgstr "เพิ่ม %s"
msgid "Adding %s..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "ตà¸à¸¥à¸‡"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "อินสà¹à¸•นซ์หลาย ๆ โหนดโดยที่ไม่มีโหนดราà¸à¹„ม่ได้"
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3734,11 +3725,6 @@ msgid "Error instancing scene from %s"
msgstr "ผิดพลาดขณะอินสà¹à¸•นซ์ฉาà¸à¸ˆà¸²à¸ %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "ต้องเลือà¸à¹€à¸žà¸µà¸¢à¸‡à¹‚หนดเดียว"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "เปลี่ยนประเภท"
@@ -3931,19 +3917,19 @@ msgstr "สร้าง Mesh นำทาง"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Mesh ไม่ได้เป็นประเภท ArrayMesh"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "ผิดพลาดขณะสร้างà¹à¸œà¹ˆà¸™à¸„ลี่ UV พื้นผิวนี้ไม่สามารถคลี่ได้?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "ไม่มีพื้นผิวให้à¹à¸à¹‰à¹„ขจุดบà¸à¸žà¸£à¹ˆà¸­à¸‡"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "โมเดลไม่มี UV ในชั้นนี้"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -3986,18 +3972,16 @@ msgid "Create Outline Mesh.."
msgstr "สร้างเส้นขอบ Mesh.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "มุมมอง"
+msgstr "à¹à¸ªà¸”ง UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "มุมมอง"
+msgstr "à¹à¸ªà¸”ง UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "สร้างà¹à¸œà¹ˆà¸™à¸„ลี่ UV2 สำหรับ Lightmap/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4112,8 +4096,8 @@ msgid "Bake!"
msgstr "สร้าง!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "สร้าง Mesh นำทาง\n"
+msgid "Bake the navigation mesh."
+msgstr "สร้าง Mesh นำทาง"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4501,17 +4485,17 @@ msgstr "โหลดรีซอร์ส"
msgid "Paste"
msgstr "วาง"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "ตัวโหลดรีซอร์สล่วงหน้า"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ล้างรายà¸à¸²à¸£à¹„ฟล์ล่าสุด"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"ปิดà¹à¸¥à¸°à¸šà¸±à¸™à¸—ึà¸?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "ปิดà¹à¸¥à¸°à¸šà¸±à¸™à¸—ึà¸?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4582,9 +4566,12 @@ msgid "Soft Reload Script"
msgstr "โหลดสคริปต์ใหม่"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
+msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸ªà¸„ริปต์"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "เปิดในตัวจัดà¸à¸²à¸£à¹„ฟล์"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4775,9 +4762,8 @@ msgid "Clone Down"
msgstr "คัดลอà¸à¸šà¸£à¸£à¸—ัดลงมา"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "à¹à¸ªà¸”ง"
+msgstr "ซ่อน/à¹à¸ªà¸”งบรรทัด"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5021,84 +5007,84 @@ msgid "Rotating %s degrees."
msgstr "หมุน %s องศา"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "มุมล่าง"
+msgid "Keying is disabled (no key inserted)."
+msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸„ีย์ (ไม่ได้à¹à¸—รà¸à¸„ีย์)"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "ล่าง"
+msgid "Animation Key Inserted."
+msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "มุมบน"
+msgid "Objects Drawn"
+msgstr "จำนวนวัตถุที่วาด"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "มุมหลัง"
+msgid "Material Changes"
+msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "หลัง"
+msgid "Shader Changes"
+msgstr "จำนวนครั้งที่เปลี่ยน Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "มุมหน้า"
+msgid "Surface Changes"
+msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "หน้า"
+msgid "Draw Calls"
+msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "มุมซ้าย"
+msgid "Vertices"
+msgstr "มุมรูปทรง"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "ซ้าย"
+msgid "FPS"
+msgstr "เฟรมต่อวินาที"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "มุมขวา"
+msgid "Top View."
+msgstr "มุมบน"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "ขวา"
+msgid "Bottom View."
+msgstr "มุมล่าง"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸„ีย์ (ไม่ได้à¹à¸—รà¸à¸„ีย์)"
+msgid "Bottom"
+msgstr "ล่าง"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+msgid "Left View."
+msgstr "มุมซ้าย"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "จำนวนวัตถุที่วาด"
+msgid "Left"
+msgstr "ซ้าย"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
+msgid "Right View."
+msgstr "มุมขวา"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "จำนวนครั้งที่เปลี่ยน Shader"
+msgid "Right"
+msgstr "ขวา"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว"
+msgid "Front View."
+msgstr "มุมหน้า"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
+msgid "Front"
+msgstr "หน้า"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "มุมรูปทรง"
+msgid "Rear View."
+msgstr "มุมหลัง"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "เฟรมต่อวินาที"
+msgid "Rear"
+msgstr "หลัง"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5112,6 +5098,10 @@ msgstr "ตà¸à¸¥à¸‡ :("
msgid "No parent to instance a child at."
msgstr "ไม่พบโหนดà¹à¸¡à¹ˆà¸—ี่จะรับอินสà¹à¸•นซ์โหนดลูà¸"
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "ต้องเลือà¸à¹€à¸žà¸µà¸¢à¸‡à¹‚หนดเดียว"
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "à¹à¸ªà¸”งปà¸à¸•ิ"
@@ -5185,16 +5175,12 @@ msgid "Freelook Speed Modifier"
msgstr "ปรับความเร็วมุมมองอิสระ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "ตัวอย่าง"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "เครื่องมือเคลื่อนย้าย"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "โหมดเลือภ(Q)\n"
+msgid "Select Mode (Q)"
+msgstr "โหมดเลือภ(Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5223,14 +5209,12 @@ msgid "Local Coords"
msgstr "พิà¸à¸±à¸”ภายใน"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "โหมดปรับขนาด (R)"
+msgstr "โหมดพิà¸à¸±à¸”ภายใน (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”:"
+msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸” (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5347,7 +5331,7 @@ msgstr "ตัวเลือà¸"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "à¹à¸ªà¸”งโครงà¸à¸£à¸°à¸”ูà¸"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5473,10 +5457,18 @@ msgstr "ย้าย (à¸à¹ˆà¸­à¸™)"
msgid "Move (After)"
msgstr "ย้าย (หลัง)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "SpriteFrames"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "ตัวอย่าง StyleBox:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StyleBox"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "à¸à¸³à¸«à¸™à¸”ขอบเขต Texture"
@@ -5502,14 +5494,17 @@ msgid "Auto Slice"
msgstr "à¹à¸šà¹ˆà¸‡à¸­à¸±à¸•โนมัติ"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "เลื่อน:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "ขนาด:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "เว้น:"
@@ -5647,6 +5642,10 @@ msgstr "ฟอนต์"
msgid "Color"
msgstr "สี"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "ธีม"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "ลบที่เลือà¸"
@@ -5732,9 +5731,8 @@ msgid "Merge from scene?"
msgstr "รวมจาà¸à¸‰à¸²à¸?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet.."
+msgstr "Tile Set"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5748,6 +5746,32 @@ msgstr "รวมจาà¸à¸‰à¸²à¸"
msgid "Error"
msgstr "ผิดพลาด"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Autotiles"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr "เลือà¸à¸£à¸¹à¸›à¸ à¸²à¸žà¸¢à¹ˆà¸­à¸¢à¹€à¸žà¸·à¹ˆà¸­à¸—ำเป็นไอคอน ภาพนี้จะใช้à¹à¸ªà¸”งเมื่อà¸à¸²à¸£"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"คลิà¸à¸‹à¹‰à¸²à¸¢: à¸à¸³à¸«à¸™à¸”ค่าบิต เปิด\n"
+"คลิà¸à¸‚วา: à¸à¸³à¸«à¸™à¸”ค่าบิต ปิด"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "เลือà¸à¹„ทล์ย่อยที่à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸±à¸šà¹à¸•่ง"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "เลือà¸à¹„ทล์ย่อยเพื่อจัดลำดับความสำคัà¸"
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "ยà¸à¹€à¸¥à¸´à¸"
@@ -5855,10 +5879,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¹„ฟล์ 'project.godot'"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr "จะสร้างโปรเจà¸à¸•์ในโฟลเดอร์ที่มีไฟล์อยู่à¹à¸¥à¹‰à¸§ (ท่านอาจต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ฟลเดอร์ใหม่)"
+msgid "Please choose an empty folder."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¹‚ฟลเดอร์ว่างเปล่า"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5869,6 +5891,14 @@ msgid "Imported Project"
msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "ไม่สามารถสร้างโฟลเดอร์"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "มีโฟลเดอร์ชื่อเดียวà¸à¸±à¸™à¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§"
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "ควรตั้งชื่อโปรเจà¸à¸•์"
@@ -5909,14 +5939,26 @@ msgid "Import Existing Project"
msgstr "นำเข้าโปรเจà¸à¸•์ที่มีอยู่เดิม"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "นำเข้าà¹à¸¥à¸°à¹à¸à¹‰à¹„ข"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "สร้างโปรเจà¸à¸•์ใหม่"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "สร้างà¹à¸¥à¸°à¹à¸à¹‰à¹„ข"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "ติดตั้งโปรเจà¸à¸•์:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "ติดตั้งà¹à¸¥à¸°à¹à¸à¹‰à¹„ข"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "ชื่อโปรเจà¸à¸•์:"
@@ -5933,10 +5975,6 @@ msgid "Browse"
msgstr "เลือà¸"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "บิงโà¸!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "โปรเจà¸à¸•์ไม่มีชื่อ"
@@ -5988,6 +6026,10 @@ msgid ""
msgstr "จะทำà¸à¸²à¸£à¸ªà¹à¸à¸™à¸«à¸²à¹‚ปรเจà¸à¸•์ใน %s โฟลเดอร์ ยืนยัน?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "รายชื่อโปรเจà¸à¸•์"
@@ -6024,7 +6066,7 @@ msgid ""
"You don't currently have any projects.\n"
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
-"คุณยังไม่มีโปรเจà¸à¸•์ใดๆ\n"
+"คุณยังไม่มีโปรเจà¸à¸•์ใด ๆ\n"
"ต้องà¸à¸²à¸£à¸ªà¸³à¸£à¸§à¸ˆà¹‚ปรเจà¸à¸•์ตัวอย่างในà¹à¸«à¸¥à¹ˆà¸‡à¸£à¸§à¸¡à¸—รัพยาà¸à¸£à¸«à¸£à¸·à¸­à¹„ม่?"
#: editor/project_settings_editor.cpp
@@ -6057,7 +6099,7 @@ msgstr "เปลี่ยนชื่อà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
-msgstr "เพิ่มà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+msgstr "เพิ่มปุ่มà¸à¸”ของà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Shift+"
@@ -6116,11 +6158,6 @@ msgid "Button 9"
msgstr "ปุ่ม 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "เปลี่ยน"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "คันบังคับจอย:"
@@ -6133,13 +6170,12 @@ msgid "Joypad Button Index:"
msgstr "ปุ่มจอย:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
-msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+msgstr "ลบปุ่มà¸à¸”ของà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp
msgid "Add Event"
@@ -6383,7 +6419,7 @@ msgstr "สคริปต์ใหม่"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "%s ใหม่"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6418,9 +6454,8 @@ msgid "On"
msgstr "เปิด"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "เพิ่มà¹à¸šà¸šà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²"
+msgstr "[ว่างเปล่า]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6500,10 +6535,6 @@ msgid "Error loading scene from %s"
msgstr "ผิดพลาดขณะโหลดฉาà¸à¸ˆà¸²à¸ %s"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "ตà¸à¸¥à¸‡"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6588,8 +6619,8 @@ msgid "Error duplicating scene to save it."
msgstr "ผิดพลาดขณะทำซ้ำฉาà¸à¹€à¸žà¸·à¹ˆà¸­à¸šà¸±à¸™à¸—ึà¸"
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "รีซอร์สย่อย:"
+msgid "Sub-Resources"
+msgstr "รีซอร์สย่อย"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6889,7 +6920,7 @@ msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:"
msgid "Pick one or more items from the list to display the graph."
msgstr "เลือà¸à¸‚้อมูลจาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹€à¸žà¸·à¹ˆà¸­à¹à¸ªà¸”งà¸à¸£à¸²à¸Ÿ"
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "ข้อผิดพลาด"
@@ -6898,6 +6929,10 @@ msgid "Child Process Connected"
msgstr "เชื่อมà¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¹à¸¥à¹‰à¸§"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "คัดลอà¸à¸œà¸´à¸”พลาด"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "ตรวจสอบอินสà¹à¸•นซ์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
@@ -6991,7 +7026,7 @@ msgstr "ทางลัด"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "ปุ่มลัด"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7043,43 +7078,39 @@ msgstr "à¹à¸à¹‰à¹„ขขนาด Probe"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "เลือà¸à¹„ดนามิà¸à¹„ลบรารีสำหรับรายà¸à¸²à¸£à¸™à¸µà¹‰"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "เลือà¸à¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¸‚องไลบรารีสำหรับรายà¸à¸²à¸£à¸™à¸µà¹‰"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "ลบจุดบนเส้นโค้ง"
+msgstr "ลบรายà¸à¸²à¸£"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "คลิà¸à¸ªà¸­à¸‡à¸„รั้งเพื่อสร้างรายà¸à¸²à¸£à¹ƒà¸«à¸¡à¹ˆ"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "à¹à¸žà¸¥à¸•ฟอร์ม:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "คัดลอà¸à¹„ปยังà¹à¸žà¸¥à¸•ฟอร์ม.."
+msgstr "à¹à¸žà¸¥à¸•ฟอร์ม"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "ไลบรารี"
+msgstr "ไดนามิà¸à¹„ลบรารี"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "เพิ่มรายà¸à¸²à¸£à¹à¸žà¸¥à¸•ฟอร์ม"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "GDNativeLibrary"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7247,10 +7278,50 @@ msgstr "à¸à¸²à¸£à¸•ั้งค่า GridMap"
msgid "Pick Distance:"
msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ solution..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจà¸à¸•์ C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "ผิดพลาดในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ solution"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "ผิดพลาดในà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภsolution"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "เสร็จสิ้น"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "ผิดพลาดในà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจà¸à¸•์ C#"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "โมโน"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "สร้าง C# solution"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "สร้าง"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Build โปรเจà¸à¸•์"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "คำเตือน"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7597,24 +7668,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr "รันไฟล์ HTML ที่ส่งออà¸à¹ƒà¸™à¹€à¸šà¸£à¸²à¹€à¸‹à¸­à¸£à¹Œ"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "เขียนไฟล์ไม่ได้:\n"
+msgid "Could not write file:"
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
+msgstr "เปิดà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸žà¸·à¹ˆà¸­à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ม่ได้:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "เปิดà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸žà¸·à¹ˆà¸­à¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ม่ได้:\n"
+msgid "Invalid export template:"
+msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ม่ถูà¸à¸•้อง:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¹„ม่ถูà¸à¸•้อง:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "ไม่สามารถอ่านโครงสร้าง HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "ไม่สามารถอ่านโครงสร้าง HTML:\n"
+msgid "Could not read boot splash image file:"
+msgstr "ไม่สามารถอ่านไฟล์ภาพขณะเริ่มเà¸à¸¡:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "ไม่สามารถอ่านไฟล์ภาพขณะบูต:\n"
+msgid "Using default boot splash image."
+msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7630,6 +7705,15 @@ msgstr ""
"จะมี CanvasModulate ที่มองเห็นได้เพียงโหนดเดียวในฉาภ(หรือà¸à¸¥à¸¸à¹ˆà¸¡à¸‚องฉาà¸à¸—ี่เป็นอินสà¹à¸•นซ์) "
"โหนดà¹à¸£à¸à¹€à¸—่านั้นที่จะทำงานได้ปà¸à¸•ิ ที่เหลือจะไม่ทำงาน"
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"โหนดนี้ไม่มีโหนดรูปทรงเป็นโหนดลูภจึงไม่มีผลทางà¸à¸²à¸¢à¸ à¸²à¸ž\n"
+"à¸à¸£à¸¸à¸“าเพิ่ม CollisionShape2D หรือ CollisionPolygon2D เป็นโหนดลูà¸à¹€à¸žà¸·à¹ˆà¸­à¹ƒà¸«à¹‰à¸¡à¸µà¸£à¸¹à¸›à¸—รง"
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7707,7 +7791,7 @@ msgstr "PathFollow2D จะทำงานได้ต้องเป็นโà¸
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7753,23 +7837,29 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin ต้องมี ARVRCamera เป็นโหนดลูà¸"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "วางà¹à¸™à¸§ meshes"
+msgstr "วางà¹à¸™à¸§ meshes: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "วางà¹à¸™à¸§ meshes"
+msgstr "วางà¹à¸™à¸§à¹à¸ªà¸‡:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "เสร็จสิ้นà¸à¸²à¸£à¸§à¸²à¸‡à¹à¸™à¸§"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "วางà¹à¸™à¸§ meshes"
+msgstr "ส่องà¹à¸ªà¸‡à¸šà¸™à¸žà¸·à¹‰à¸™à¸œà¸´à¸§: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"โหนดนี้ไม่มีโหนดรูปทรงเป็นโหนดลูภจึงไม่มีผลทางà¸à¸²à¸¢à¸ à¸²à¸ž\n"
+"à¸à¸£à¸¸à¸“าเพิ่ม CollisionShape หรือ CollisionPolygon เป็นโหนดลูà¸à¹€à¸žà¸·à¹ˆà¸­à¹ƒà¸«à¹‰à¸¡à¸µà¸£à¸¹à¸›à¸—รง"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7822,8 +7912,8 @@ msgstr "ไม่มีà¸à¸²à¸£à¹à¸ªà¸”งผลเนื่องจาà¸à¹„
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"ระบบฟิสิà¸à¸ªà¹Œà¸ˆà¸°à¸ˆà¸±à¸”à¸à¸²à¸£à¸‚นาดของ RigidBody (ในโหมด character หรือ rigid) เมื่อรันเà¸à¸¡\n"
@@ -7895,11 +7985,11 @@ msgstr "(อื่น)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
-"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลือà¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> Viewport "
-"-> Default Environment)"
+"ไม่สามารถโหลด Environment ปริยายที่à¸à¸³à¸«à¸™à¸”ในตัวเลือà¸à¹‚ปรเจà¸à¸•์ได้ (Rendering -> "
+"Environment -> Default Environment)"
#: scene/main/viewport.cpp
msgid ""
@@ -7928,6 +8018,38 @@ msgstr "ผิดพลาดขณะโหลดฟอนต์"
msgid "Invalid font size."
msgstr "ขนาดฟอนต์ผิดพลาด"
+#~ msgid "Next"
+#~ msgstr "ต่อไป"
+
+#~ msgid "Not found!"
+#~ msgstr "ไม่พบ!"
+
+#~ msgid "Replace By"
+#~ msgstr "à¹à¸—นที่ด้วย"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "ตรงตามอัà¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ"
+
+#~ msgid "Backwards"
+#~ msgstr "ย้อนà¸à¸¥à¸±à¸š"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "เตือนà¸à¹ˆà¸­à¸™à¹à¸—นที่"
+
+#~ msgid "Skip"
+#~ msgstr "ข้าม"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr "จะสร้างโปรเจà¸à¸•์ในโฟลเดอร์ที่มีไฟล์อยู่à¹à¸¥à¹‰à¸§ (ท่านอาจต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¹‚ฟลเดอร์ใหม่)"
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "บิงโà¸!"
+
+#~ msgid "preview"
+#~ msgstr "ตัวอย่าง"
+
#~ msgid "Move Add Key"
#~ msgstr "เลื่อนหรือเพิ่มคีย์à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -8020,9 +8142,6 @@ msgstr "ขนาดฟอนต์ผิดพลาด"
#~ msgid "' parsing of config failed."
#~ msgstr "' ผิดพลาดขณะอ่านไฟล์"
-#~ msgid "Theme"
-#~ msgstr "ธีม"
-
#~ msgid "Method List For '%s':"
#~ msgstr "รายชื่อเมท็อดของ '%s':"
@@ -8286,9 +8405,6 @@ msgstr "ขนาดฟอนต์ผิดพลาด"
#~ msgid "Import Anyway"
#~ msgstr "ยืนยันนำเข้า"
-#~ msgid "Import & Open"
-#~ msgstr "นำเข้าà¹à¸¥à¸°à¹€à¸›à¸´à¸”"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภยืนยันเปิดไฟล์ฉาà¸à¸—ี่นำเข้า?"
@@ -8534,9 +8650,6 @@ msgstr "ขนาดฟอนต์ผิดพลาด"
#~ msgid "Stereo"
#~ msgstr "สเตอริโอ"
-#~ msgid "Mono"
-#~ msgstr "โมโน"
-
#~ msgid "Pitch"
#~ msgstr "เสียงสูงต่ำ"
@@ -8697,9 +8810,6 @@ msgstr "ขนาดฟอนต์ผิดพลาด"
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "เตือนเมื่อมีà¸à¸²à¸£à¹à¸à¹‰à¹„ขรีซอร์สภายนอà¸"
-#~ msgid "Tutorials"
-#~ msgstr "คู่มือ"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "เปิดคู่มือจาภhttps://godotengine.org"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 1a80028964..934077d896 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -11,22 +11,22 @@
# hubbyist <hub@legrud.net>, 2017.
# M. Yavuz Uzun <myavuzuzun@yandex.com>, 2016.
# Orkun Turan <holygatestudio@yandex.com>, 2016-2017.
-# razah <icnikerazah@gmail.com>, 2017.
-# stnmycri <satenmeycri@gmail.com>, 2017.
+# razah <icnikerazah@gmail.com>, 2017-2018.
+# stnmycri <satenmeycri@gmail.com>, 2017-2018.
# Yavuz Günay <yavuzgunay@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-04 20:50+0000\n"
+"PO-Revision-Date: 2018-01-24 23:40+0000\n"
"Last-Translator: razah <icnikerazah@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\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 2.18-dev\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -37,22 +37,20 @@ msgid "All Selection"
msgstr "Tüm Seçim"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Animasyon DeÄŸiÅŸikliÄŸi DeÄŸeri"
+msgstr "Anim Anahtar-kare Zamanını Değiştir"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr "Animasyon Değişikliği Geçişi"
+msgstr "Animasyon Geçişinin Değişimi"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
msgstr "Animasyon Değişikliği Dönüşümü"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Animasyon DeÄŸiÅŸikliÄŸi DeÄŸeri"
+msgstr "Anim Anahtar-kare DeÄŸerini DeÄŸiÅŸtir"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -208,8 +206,7 @@ msgstr "%d YENİ izler oluştur ve anahtarlar gir?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "OluÅŸtur"
@@ -388,14 +385,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "DeÄŸiÅŸtirildi %d oluÅŸ(sn)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "DeÄŸiÅŸtir"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Tümünü Değiştir"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Büyük/Küçük Harf Eşleştir"
@@ -404,48 +393,16 @@ msgid "Whole Words"
msgstr "Tam Kelimeler"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Yalnızca Seçim"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Ara"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Bul"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Sonraki"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Bulunamadı!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Åžununla DeÄŸiÅŸtir"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "Büyük Küçük Harf Duyarlı"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Tersten"
+msgid "Replace"
+msgstr "DeÄŸiÅŸtir"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "DeÄŸiÅŸimi Sor"
+msgid "Replace All"
+msgstr "Tümünü Değiştir"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "Geç"
+msgid "Selection Only"
+msgstr "Yalnızca Seçim"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -547,9 +504,8 @@ msgid "Connecting Signal:"
msgstr "Bağlantı Sinyali:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "Bunu '%s' ÅŸuna '%s' baÄŸla"
+msgstr "Şunun: '%s' şununla: '%s' bağlantısını kes"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -565,9 +521,17 @@ msgid "Signals"
msgstr "Sinyaller"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "%s Tipini deÄŸiÅŸtir"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "DeÄŸiÅŸtir"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Yeni oluÅŸtur"
+msgstr "Yeni %s oluÅŸtur"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -677,8 +641,8 @@ msgstr ""
"Yine de kaldırmak istiyor musunuz? (geri alınamaz)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Kaldırılamadı:\n"
+msgid "Cannot remove:"
+msgstr "Kaldırılamadı:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -760,9 +724,9 @@ msgstr "Projenin Kurucuları"
msgid "Lead Developer"
msgstr "BaÅŸ GeliÅŸtirici"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Proje Yöneticisi"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Proje Yöneticisi "
#: editor/editor_about.cpp
msgid "Developers"
@@ -850,7 +814,7 @@ msgid "Success!"
msgstr "Başarılı!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Kur"
@@ -871,9 +835,8 @@ msgid "Rename Audio Bus"
msgstr "Audio Bus'ı Yeniden Adlandır"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Audio Bus'ı Solo Aç/Kapat"
+msgstr "Audio Bus Ses Seviyesini DeÄŸiÅŸtir"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -938,7 +901,7 @@ msgstr "Efekt'i Sil"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Ses"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1113,13 +1076,12 @@ msgid "Updating scene.."
msgstr "Sahne güncelleniyor.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
msgstr "(boÅŸ)"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[kaydedilmemiÅŸ]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1159,8 +1121,8 @@ msgid "Packing"
msgstr "Çıkınla"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Biçem dosyası bulunamadı:\n"
+msgid "Template file not found:"
+msgstr "Şablon dosyası bulunamadı:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1371,6 +1333,20 @@ msgid "Description"
msgstr "Açıklama"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Çevrimiçi Rehberler:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"Bu metot için henüz bir rehber yok. Siz de\n"
+"[color=$color][url=$url]hazırlayabilir[/url][/color] ya da \n"
+"[color=$color][url=$url2]öneride bulunabilirsiniz[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "Özellikler"
@@ -1406,6 +1382,10 @@ msgstr ""
msgid "Search Text"
msgstr "Yazı Ara"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Bul"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Çıktı:"
@@ -1417,6 +1397,10 @@ msgstr "Çıktı:"
msgid "Clear"
msgstr "Temizle"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "Çıktıyı Temizle"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Kaynak kaydedilirken hata!"
@@ -1425,8 +1409,8 @@ msgstr "Kaynak kaydedilirken hata!"
msgid "Save Resource As.."
msgstr "Kaynağı Farklı Kaydet.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Anlıyorum.."
@@ -1480,8 +1464,11 @@ msgstr "Bu işlem bir kök sahne olmadan yapılamaz."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
-msgstr "Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler) karşılanamadı."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
+msgstr ""
+"Sahne kaydedilemedi. Anlaşılan bağımlılıklar (örnekler ve kalıtımlar) "
+"karşılanamadı."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1971,7 +1958,7 @@ msgstr "Proje Listesine Çık"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Debug"
-msgstr "Kusur Ayıkla"
+msgstr "Hata Ayıklama"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
@@ -2088,6 +2075,13 @@ msgstr "Yardım"
msgid "Classes"
msgstr "Sınıflar"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Ara"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Çevrimiçi Belgeler"
@@ -2359,14 +2353,12 @@ msgid "Frame #:"
msgstr "Kare #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "Süre:"
+msgstr "Zaman"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Çağır"
+msgstr "Çağrılar"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2473,8 +2465,8 @@ 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:\n"
-msgstr "Şablonlar için yol oluşturulurken hata:\n"
+msgid "Error creating path for templates:"
+msgstr "Şablonlar için yol oluşturulurken hata:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2509,9 +2501,8 @@ msgstr "Cevap yok."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "İstem Başarısız."
+msgstr "İstek Başarısız Oldu."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2557,7 +2548,6 @@ msgid "Connecting.."
msgstr "Bağlanılıyor.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Bağlanamadı"
@@ -2633,11 +2623,8 @@ msgid "View items as a list"
msgstr "Öğeleri liste olarak göster"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"Durum: Dosya içe aktarma başarısız oldu. Lütfen dosyayı onarın ve tekrar içe "
"aktarın."
@@ -2646,21 +2633,20 @@ msgid "Cannot move/rename resources root."
msgstr "Kaynakların kökü taşınamaz/yeniden adlandırılamaz."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Bir klasör kendisinin içine taşınamaz.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Bir klasör kendisinin içine taşınamaz."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Taşıma Hatası:\n"
+msgid "Error moving:"
+msgstr "Taşıma Hatası:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Yüklerken hata:"
+msgid "Error duplicating:"
+msgstr "Çoğaltılırken hata:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Bağımlılıklar güncellenemedi:\n"
+msgid "Unable to update dependencies:"
+msgstr "Bağımlılıklar güncellenemedi:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2691,14 +2677,12 @@ msgid "Renaming folder:"
msgstr "Klasör yeniden adlandırma:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Çoğalt"
+msgstr "Dosya çoğaltılıyor:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "Klasör yeniden adlandırma:"
+msgstr "Klasör çoğaltılıyor:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2717,9 +2701,8 @@ msgid "Move To.."
msgstr "Şuraya Taşı.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Sahneyi Aç"
+msgstr "Sahne(ler) Aç"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2734,9 +2717,8 @@ msgid "View Owners.."
msgstr "Sahipleri Görüntüle.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Çoğalt"
+msgstr "Çoğalt.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2833,14 +2815,12 @@ msgid "Importing Scene.."
msgstr "Sahneyi İçe Aktarıyor..."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Işık Haritalarına Aktar:"
+msgstr "Işık-haritaları Üretiliyor"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "AABB Üretimi"
+msgstr "Örüntü için Üretiliyor: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3310,6 +3290,10 @@ msgstr "Düğüm Süzgeçlerini Düzenle"
msgid "Filters.."
msgstr "Süzgeçler..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "AnimasyonAğacı"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Ücretsiz"
@@ -3459,23 +3443,30 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Lightmap resimleri için kaydetme yolu belirlenemiyor.\n"
+"Sahneni kaydet (resimler aynı klasöre kaydedilmeli), ya da BakedLightmap "
+"özelliklerinden bir kayıt yolu seçin."
#: 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 ""
+"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."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Işık-haritası görüntüleri oluşturma başarısız oldu, yolun yazılabilir "
+"olduÄŸundan emin olun."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "Işık Haritalarına Aktar:"
+msgstr "Işık-Haritalarını Pişir"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Önizleme"
@@ -3780,6 +3771,14 @@ msgstr "Ekle %s"
msgid "Adding %s..."
msgstr "Ekliyor %s.."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Tamam"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Kök olmadan çoklu düğüm oluşturulamaz."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3791,11 +3790,6 @@ msgid "Error instancing scene from %s"
msgstr "Şundan: %s sahne örnekleme hatası"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Bu işlem, seçilmiş tek bir düğüm gerektirir."
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "Varsayılan tipi değiştir"
@@ -3988,19 +3982,19 @@ msgstr "Yönlendirici Örüntüsü Oluştur"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Bulunan Örüntü ArrayMesh tipinde değil."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "UV Unwrap başarısız oldu, örüntü manifold olmayabilir?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+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"
-msgstr ""
+msgstr "Model bu katmanda UV'ye sahip deÄŸil"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4043,18 +4037,16 @@ msgid "Create Outline Mesh.."
msgstr "Anahat Örüntüsü Oluştur.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "Görüş"
+msgstr "UV1'i Göster"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "Görüş"
+msgstr "UV2'yi Göster"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Lightmap/AO için UV2 paket aç"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4169,8 +4161,8 @@ msgid "Bake!"
msgstr "PiÅŸir!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "Yönlendirici örüntüsünü pişir.\n"
+msgid "Bake the navigation mesh."
+msgstr "Yönlendirici örüntüsünü pişir."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4558,17 +4550,17 @@ msgstr "Kaynak Yükle"
msgid "Paste"
msgstr "Yapıştır"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "KaynakÖnyükleyici"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "En Son Dosyaları Temizle"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Kapa ve deÄŸiÅŸiklikleri kaydet?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Kapa ve deÄŸiÅŸiklikleri kaydet?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4639,9 +4631,12 @@ msgid "Soft Reload Script"
msgstr "Betiği Yeniden Duyarlı Yükle"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Dosya Yolunu Tıpkıla"
+msgstr "Betik Yolunu Kopyala"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Dosya Sisteminde Göster"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4834,9 +4829,8 @@ msgid "Clone Down"
msgstr "Aşağıya Eşle"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "Satırı Genişlet"
+msgstr "Satırı Katla/Aç"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5080,84 +5074,84 @@ msgid "Rotating %s degrees."
msgstr "%s Düzey Dönüyor."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "Alttan Görünüm."
+msgid "Keying is disabled (no key inserted)."
+msgstr "Anahtar ekleme devre dışı (eklenmiş anahtar yok)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "Alt"
+msgid "Animation Key Inserted."
+msgstr "Animasyon Anahtarı Eklendi."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "Üstten Görünüm."
+msgid "Objects Drawn"
+msgstr "Çizilmiş Nesneler"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "Arkadan Görünüm."
+msgid "Material Changes"
+msgstr "Materyal DeÄŸiÅŸiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "Arka"
+msgid "Shader Changes"
+msgstr "Shader DeÄŸiÅŸiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "Önden Görünüm."
+msgid "Surface Changes"
+msgstr "Yüzey Değişiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "Ön"
+msgid "Draw Calls"
+msgstr "Çizim Çağrıları"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "Soldan Görünüm."
+msgid "Vertices"
+msgstr "Köşenoktalar"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "Sol"
+msgid "FPS"
+msgstr "FPS"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "Sağdan Görünüm."
+msgid "Top View."
+msgstr "Üstten Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "SaÄŸ"
+msgid "Bottom View."
+msgstr "Alttan Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "Anahtar ekleme devre dışı (eklenmiş anahtar yok)."
+msgid "Bottom"
+msgstr "Alt"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "Animasyon Anahtarı Eklendi."
+msgid "Left View."
+msgstr "Soldan Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "Çizilmiş Nesneler"
+msgid "Left"
+msgstr "Sol"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "Materyal DeÄŸiÅŸiklikleri"
+msgid "Right View."
+msgstr "Sağdan Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "Shader DeÄŸiÅŸiklikleri"
+msgid "Right"
+msgstr "SaÄŸ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "Yüzey Değişiklikleri"
+msgid "Front View."
+msgstr "Önden Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "Çizim Çağrıları"
+msgid "Front"
+msgstr "Ön"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "Köşenoktalar"
+msgid "Rear View."
+msgstr "Arkadan Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "FPS"
+msgid "Rear"
+msgstr "Arka"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5171,6 +5165,10 @@ msgstr "Tamam :("
msgid "No parent to instance a child at."
msgstr "Çocuğun örnek alacağı bir ebeveyn yok."
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Bu işlem, seçilmiş tek bir düğüm gerektirir."
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "Olağanı Görüntüle"
@@ -5244,16 +5242,12 @@ msgid "Freelook Speed Modifier"
msgstr "Serbestbakış Hız Değiştirici"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "önizleme"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm İletişim Kutusu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "Seçim Kipi (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "Seçim Kipi (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5282,14 +5276,12 @@ msgid "Local Coords"
msgstr "Yerel Koordlar"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "Ölçek Biçimi (R)"
+msgstr "Yerel Uzay Kipi (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "Yapışma Kipi:"
+msgstr "Yapışma Kipi (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5406,7 +5398,7 @@ msgstr "Ayarlar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "İskelet Gizmo görünürlüğü"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
@@ -5532,10 +5524,18 @@ msgstr "Taşı (Önce)"
msgid "Move (After)"
msgstr "Taşı (Sonra)"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "GörüntüKareleri"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox Önizleme:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "StilKutusu"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "Dikdörtgen Bölgesini Ayarla"
@@ -5561,14 +5561,17 @@ msgid "Auto Slice"
msgstr "Otomatik Dilimle"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "Kaydırma:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "Adım:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "Ayrım:"
@@ -5706,6 +5709,10 @@ msgstr "Yazı Tipi"
msgid "Color"
msgstr "Renk"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Kalıp"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "Seçimi Sil"
@@ -5791,9 +5798,8 @@ msgid "Merge from scene?"
msgstr "Sahneden birleÅŸtirilsin mi?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "TileSet .."
+msgstr "Karo Takımı"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5807,6 +5813,34 @@ msgstr "Sahneden BirleÅŸtir"
msgid "Error"
msgstr "Hata"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Oto-döşemeler"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Simge olarak kullanmak işin alt-karo seç, bu aynı zamanda geçersiz oto-karo "
+"bağlantılarında kullanılacaktır."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"LMB: bit'i aç.\n"
+"RMB: bit'i kapat."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Şuanki düzenlenmiş alt-döşemeyi seç."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Önceliğini değiştirmek için alt-karo seçin."
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "Vazgeç"
@@ -5918,12 +5952,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "Lütfen bir 'proje.godot' dosyası seçin."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
-"Projen boş olmayan bir klasörde oluşturulacak (yeni bir klasör oluşturmak "
-"isteyebilirsin)."
+msgid "Please choose an empty folder."
+msgstr "Lütfen boş bir klasör seçin."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5934,6 +5964,14 @@ msgid "Imported Project"
msgstr "İçe Aktarılan Proje"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Klasör oluşturulamadı."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "Yolda bu isimde bir klasör zaten var."
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "Projenizi isimlendirmek iyi bir fikir olabilir."
@@ -5974,14 +6012,26 @@ msgid "Import Existing Project"
msgstr "Var Olan Projeyi İçe Aktar"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "İçe Aktar & Düzenle"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Yeni Proje OluÅŸtur"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Oluştur & Düzenle"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "Projeyi Kur:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Kur & Düzenle"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Proje Adı:"
@@ -5998,10 +6048,6 @@ msgid "Browse"
msgstr "Gözat"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "YaÅŸa BE!"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "Adsız Proje"
@@ -6057,6 +6103,10 @@ msgstr ""
"musunuz?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Proje Yöneticisi"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "Proje Listesi"
@@ -6185,11 +6235,6 @@ msgid "Button 9"
msgstr "Düğme 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "DeÄŸiÅŸtir"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "Oyun Kolu Ekseni İndeksi:"
@@ -6202,9 +6247,8 @@ msgid "Joypad Button Index:"
msgstr "Oyun Kolu Düğmesi İndeksi:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
-msgstr "Giriş Eylemi Olayını Sil"
+msgstr "Girdi Eylemini Sil"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
@@ -6452,7 +6496,7 @@ msgstr "Yeni Betik"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Yeni %s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6487,9 +6531,8 @@ msgid "On"
msgstr "Açık"
#: editor/property_editor.cpp
-#, fuzzy
msgid "[Empty]"
-msgstr "BoÅŸ Ekle"
+msgstr "[BoÅŸ]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
@@ -6569,10 +6612,6 @@ msgid "Error loading scene from %s"
msgstr "Şuradan: %s sahne yüklenirken hata"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Tamam"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6660,8 +6699,8 @@ msgid "Error duplicating scene to save it."
msgstr "Kaydetmek için sahne çoğaltılırken hata."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "Alt Kaynaklar:"
+msgid "Sub-Resources"
+msgstr "Alt Kaynaklar"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6963,7 +7002,7 @@ msgstr "Fonksiyon:"
msgid "Pick one or more items from the list to display the graph."
msgstr "Grafiği görüntülemek için listeden bir veya daha fazla öğe seçin."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Hatalar"
@@ -6972,6 +7011,10 @@ msgid "Child Process Connected"
msgstr "Çocuk Süreç Bağlandı"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Hatayı Kopyala"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "Önceki Örneği İncele"
@@ -7009,7 +7052,7 @@ msgstr "DeÄŸer"
#: editor/script_editor_debugger.cpp
msgid "Monitors"
-msgstr "Görüntülükler"
+msgstr "Monitörler"
#: editor/script_editor_debugger.cpp
msgid "List of Video Memory Usage by Resource:"
@@ -7065,7 +7108,7 @@ msgstr "Kısayollar"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Bağlayıcı"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7117,43 +7160,39 @@ msgstr "DeÅŸme GeniÅŸlemesini DeÄŸiÅŸtir"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Bu girdi için bir dinamik kütüphane seçin"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Bu girdi için kütüphanenin bağımlılıklarını seçin"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Yol Noktasını Kaldır"
+msgstr "Mevcut giriyi kaldır"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Yeni girdi oluşturmak için çift tıkla"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Mecra:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "Düzleme Tıpkıla.."
+msgstr "Mecra"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Kütüphane"
+msgstr "Dinamik Kütüphane"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Bir yapı girdisi ekle"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDYerel"
+msgstr "GDYerelKütüphanesi"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7322,10 +7361,50 @@ msgstr "IzgaraHaritası Ayarları"
msgid "Pick Distance:"
msgstr "Uzaklık Seç:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "solü oluşturuluyor..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "C# projesi üretiliyor..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Çözüm oluşturma başarısız."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Çözüm kaydetme başarısız."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Oldu"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "C# projesi oluşturma başarısız."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Tekli"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "C# Çözümü oluştur"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "İnşalar"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Projeyi İnşa et"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "Uyarılar"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7683,24 +7762,28 @@ 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:\n"
-msgstr "Dosya yazılamadı:\n"
+msgid "Could not write file:"
+msgstr "Dosya yazılamadı:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Dışa aktarma için şablon açılamadı:\n"
+msgid "Could not open template for export:"
+msgstr "Dışa aktarma için şablon açılamadı:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Geçersiz Dışa Aktarım Şablonu:\n"
+msgid "Invalid export template:"
+msgstr "Geçersiz Dışa Aktarım Şablonu:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Özel HTML çekirdeği okunamadı:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Özel HTML çekirdeği okunamadı:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Açılış ekranı resim dosyası okunamadı:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Açılış ekranı resim dosyası okunamadı:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "Açılış ekranı resim dosyası okunamadı."
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7719,6 +7802,16 @@ msgstr ""
"CanvasModulate'e izin verilir. İlk oluşturulan çalışırken diğerleri ihmal "
"edilecektir."
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"Bu düğüm alt şekillere sahip değil, bu yüzden uzayla etkileşime giremez.\n"
+"Şeklini belirlemek için CollisionShape2D ya da CollisionPolygon2D eklemeyi "
+"düşünebilirsiniz."
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7809,7 +7902,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7862,23 +7955,30 @@ msgid "ARVROrigin requires an ARVRCamera child node"
msgstr "ARVROrigin bir ARVRCamera çocuk düğümü gerektirir"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Örüntüler Haritalanıyor"
+msgstr "Örüntüler Haritalanıyor: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Örüntüler Haritalanıyor"
+msgstr "Örüntüler Haritalanıyor:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Haritalama Bitiriliyor"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Örüntüler Haritalanıyor"
+msgstr "Örüntüler Haritalanıyor: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"Bu düğüm alt şekillere sahip değil, bu yüzden uzayla etkileşime giremez.\n"
+"Şeklini belirlemek için CollisionShape ya da CollisionPolygon eklemeyi "
+"düşünebilirsiniz."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7939,8 +8039,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
"RigidBody boyut deÄŸiÅŸikliÄŸi(karakter yada rigid kipleri) fizik motoru "
@@ -8021,11 +8121,11 @@ msgstr "(DiÄŸer)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
"Proje Ayarlarında tanımlanmış Varsayılan Ortam (İşleme -> Görüntükapısı -> "
-"Varsayılan Ortam) Yüklenemedi."
+"Varsayılan Ortam) yüklenemedi."
#: scene/main/viewport.cpp
msgid ""
@@ -8055,6 +8155,40 @@ msgstr "Yazıtipi yükleme hatası."
msgid "Invalid font size."
msgstr "Geçersiz yazıtipi boyutu."
+#~ msgid "Next"
+#~ msgstr "Sonraki"
+
+#~ msgid "Not found!"
+#~ msgstr "Bulunamadı!"
+
+#~ msgid "Replace By"
+#~ msgstr "Åžununla DeÄŸiÅŸtir"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "Büyük Küçük Harf Duyarlı"
+
+#~ msgid "Backwards"
+#~ msgstr "Tersten"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "DeÄŸiÅŸimi Sor"
+
+#~ msgid "Skip"
+#~ msgstr "Geç"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr ""
+#~ "Projen boş olmayan bir klasörde oluşturulacak (yeni bir klasör oluşturmak "
+#~ "isteyebilirsin)."
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "YaÅŸa BE!"
+
+#~ msgid "preview"
+#~ msgstr "önizleme"
+
#~ msgid "Move Add Key"
#~ msgstr "Hareket Anahtar Ekle"
@@ -8142,9 +8276,6 @@ msgstr "Geçersiz yazıtipi boyutu."
#~ msgid "Filter:"
#~ msgstr "Süzgeç:"
-#~ msgid "Theme"
-#~ msgstr "Kalıp"
-
#~ msgid "Method List For '%s':"
#~ msgstr "'%s' İçin Yöntem Dizelgesi:"
@@ -8407,9 +8538,6 @@ msgstr "Geçersiz yazıtipi boyutu."
#~ msgid "Import Anyway"
#~ msgstr "Yine de İçe Aktar"
-#~ msgid "Import & Open"
-#~ msgstr "İçe Aktar & Aç"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr ""
#~ "Düzenlenen sahne kaydedilmedi, yine de içe aktarılan sahne açılsın mı?"
@@ -8666,9 +8794,6 @@ msgstr "Geçersiz yazıtipi boyutu."
#~ msgid "Stereo"
#~ msgstr "Çiftli"
-#~ msgid "Mono"
-#~ msgstr "Tekli"
-
#~ msgid "Pitch"
#~ msgstr "Perde"
@@ -8829,9 +8954,6 @@ msgstr "Geçersiz yazıtipi boyutu."
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "Dış kaynaklar değişince uyarır."
-#~ msgid "Tutorials"
-#~ msgstr "Öğreticiler"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "https://godotengine.org bağlantısını öğreticiler bölümünde aç."
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index de2ab23773..d01686aec4 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -4,14 +4,17 @@
# This file is distributed under the same license as the Godot source code.
#
# Aleksandr <XpycT.TOP@gmail.com>, 2017.
+# Ðндрій Бандура <andriykopanytsia@gmail.com>, 2018.
# Гидеон Теон <t.kudely94@gmail.com>, 2017.
-# ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>, 2017.
+# ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>, 2017-2018.
+# ОлекÑандр Пилипчук <pilipchukap@rambler.ru>, 2018.
+# Yuri Chornoivan <yurchor@ukr.net>, 2018.
#
msgid ""
msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-12-20 15:43+0000\n"
-"Last-Translator: ÐœÐ°Ñ€Ñ Ð¯Ð¼Ð±Ð°Ñ€ <mjambarmeta@gmail.com>\n"
+"Project-Id-Version: Ukrainian (Godot Engine)\n"
+"PO-Revision-Date: 2018-01-24 17:51+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
"Language: uk\n"
@@ -19,20 +22,19 @@ 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 2.18\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
-msgstr "Відключено"
+msgstr "Вимкнено"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr "УÑÑ– вибранні елементи"
+msgstr "УÑе позначене"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Змінити значеннÑ"
+msgstr "Змінити Ñ‡Ð°Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -43,9 +45,8 @@ msgid "Anim Change Transform"
msgstr "Змінити перетвореннÑ"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Змінити значеннÑ"
+msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -109,18 +110,16 @@ msgid "Duplicate Selection"
msgstr "Дублювати виділене"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Duplicate Transposed"
-msgstr "ПереміÑтити дублікат"
+msgstr "Дублювати транÑпоноване"
#: editor/animation_editor.cpp
msgid "Remove Selection"
msgstr "Вилучити виділене"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Continuous"
-msgstr "Ðевгаваючий"
+msgstr "Ðеперервна"
#: editor/animation_editor.cpp
msgid "Discrete"
@@ -203,8 +202,7 @@ msgstr "Створити %d нові доріжки Ñ– вÑтавити ключ
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Створити"
@@ -229,7 +227,6 @@ msgid "Change Anim Loop"
msgstr "Змінити цикл анімації"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Create Typed Value Key"
msgstr "Створити типовий ключ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—"
@@ -251,7 +248,7 @@ msgstr "МаÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—."
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr "Довжина (Ñек.):"
+msgstr "ТриваліÑть (Ñек.):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
@@ -382,14 +379,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "Замінено %d випадок(-ів)."
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "Замінити"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "Замінити вÑÑ–"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "Враховувати регіÑтр"
@@ -398,48 +387,16 @@ msgid "Whole Words"
msgstr "Цілі Ñлова"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "Тільки виділити"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Пошук"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "Знайти"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "Далі"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "Ðе знайдено!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "Замінити на"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "ЧутливіÑть регіÑтра"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "Ðазад"
+msgid "Replace"
+msgstr "Замінити"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "Запитувати при заміні"
+msgid "Replace All"
+msgstr "Замінити вÑÑ–"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "ПропуÑтити"
+msgid "Selection Only"
+msgstr "Тільки виділити"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -541,9 +498,8 @@ msgid "Connecting Signal:"
msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñигналу:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ '%s' Ð´Ð»Ñ %s'"
+msgstr "Від'єднати '%s' від '%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
@@ -559,9 +515,17 @@ msgid "Signals"
msgstr "Сигнали"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "Змінити тип %s"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "Змінити"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Створити новий"
+msgstr "Створити новий %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -672,8 +636,8 @@ msgstr ""
"Видалити Ñ—Ñ… у будь-Ñкому разі? (ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "Ðеможливо вилучити:\n"
+msgid "Cannot remove:"
+msgstr "Ðеможливо вилучити:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -755,9 +719,9 @@ msgstr "ЗаÑновники проекту"
msgid "Lead Developer"
msgstr "Ведучий розробник"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "Керівник проекту"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "Керівник проектів "
#: editor/editor_about.cpp
msgid "Developers"
@@ -845,7 +809,7 @@ msgid "Success!"
msgstr "УÑпіх!"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "Ð’Ñтановити"
@@ -866,9 +830,8 @@ msgid "Rename Audio Bus"
msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ шини"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "Перемкнути аудіо шину Ñоло"
+msgstr "Змінити гучніÑть звукової шини"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -933,7 +896,7 @@ msgstr "Видалити ефект"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "Звук"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1007,11 +970,11 @@ msgstr "Зберегти цей макет шини у файлі."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr "Завантажити за промовчаннÑм"
+msgstr "Завантажити типовий"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr "Завантажити макет шини за промовчаннÑм."
+msgstr "Завантажити типовий макет шини."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1113,15 +1076,15 @@ msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñцени.."
#: editor/editor_data.cpp
msgid "[empty]"
-msgstr ""
+msgstr "[порожньо]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[не збережено]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr "БудьлаÑка, виберіть Ñпочатку базову каталог"
+msgstr "Будь лаÑка, виберіть Ñпочатку базовий каталог"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
@@ -1157,8 +1120,8 @@ msgid "Packing"
msgstr "ПакуваннÑ"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "Файл шаблону не знайдено:\n"
+msgid "Template file not found:"
+msgstr "Файл шаблону не знайдено:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1185,7 +1148,6 @@ msgid "Refresh"
msgstr "Оновити"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "All Recognized"
msgstr "УÑе розпізнано"
@@ -1370,6 +1332,20 @@ msgid "Description"
msgstr "ОпиÑ"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "Підручники у інтернеті:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"ÐаÑтанов щодо цього клаÑу ще немає. Ви можете [color=$color][url="
+"$url]Ñтворити Ñ—Ñ…[/url][/color] або [color=$color][url=$url2]надіÑлати запит "
+"щодо їхнього ÑтвореннÑ[/url][/color]."
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "ВлаÑтивоÑті"
@@ -1382,8 +1358,8 @@ msgid ""
"There is currently no description for this property. Please help us by "
"[color=$color][url=$url]contributing one[/url][/color]!"
msgstr ""
-"Ðа данний момент Ð¾Ð¿Ð¸Ñ Ñ†Ñ–Ñ”Ñ— влаÑтивоÑті відÑутній. БудьлаÑка, [color=$color]"
-"[url=$url]допоможіть нам[/url][/color]!"
+"У поточній верÑÑ–Ñ— немає опиÑу цієї влаÑтивоÑті. Будь лаÑка, [color=$color]"
+"[url=$url]Ñтворіть його[/url][/color]!"
#: editor/editor_help.cpp
msgid "Methods"
@@ -1398,13 +1374,17 @@ msgid ""
"There is currently no description for this method. Please help us by [color="
"$color][url=$url]contributing one[/url][/color]!"
msgstr ""
-"Ðа данний момент Ð¾Ð¿Ð¸Ñ Ñ†ÑŒÐ¾Ð³Ð¾ методу відÑутній. БудьлаÑка, [color=$color][url="
-"$url]допоможіть нам[/url][/color]!"
+"У поточній верÑÑ–Ñ— немає опиÑу цього методу. Будь лаÑка, [color=$color][url="
+"$url]Ñтворіть його[/url][/color]!"
#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Шукати текÑÑ‚"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "Знайти"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "Вивід:"
@@ -1416,6 +1396,10 @@ msgstr "Вивід:"
msgid "Clear"
msgstr "ОчиÑтити"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "ОчиÑтити вивід"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑу!"
@@ -1424,8 +1408,8 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€ÐµÑурÑу!"
msgid "Save Resource As.."
msgstr "Зберегти реÑÑƒÑ€Ñ Ñк.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Бачу.."
@@ -1451,7 +1435,7 @@ msgstr "Помилка при ÑинтакÑичному аналізі '%s'."
#: editor/editor_node.cpp
msgid "Unexpected end of file '%s'."
-msgstr "Ðеочикуваний кінець Ñ€Ñдку '%s'."
+msgstr "Ðеочікуваний кінець Ñ€Ñдка «%s»."
#: editor/editor_node.cpp
msgid "Missing '%s' or its dependencies."
@@ -1471,7 +1455,7 @@ msgstr "Ðналіз"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr "Створити екÑкіз"
+msgstr "Створюємо мініатюру"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
@@ -1479,9 +1463,11 @@ msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ може бути виконана без кÐ
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
-"Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñцену. Вірогідно, залежноÑті (екземплÑри) не задоволені."
+"Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñцену. Вірогідно, залежноÑті (екземплÑри або "
+"уÑпадковані) не задоволені."
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -1509,7 +1495,7 @@ msgstr "Помилка при Ñпробі зберегти макет!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr "Макет редактора за промовчуваннÑм перевизначено."
+msgstr "Типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð° перевизначено."
#: editor/editor_node.cpp
msgid "Layout name not found!"
@@ -1517,7 +1503,7 @@ msgstr "Ðазву макета не знайдено!"
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
-msgstr "Поновити макет за промовчуваннÑм до базових налаштувань."
+msgstr "Відновлено типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° базовими параметрами."
#: editor/editor_node.cpp
msgid ""
@@ -1701,7 +1687,7 @@ msgstr "Цю операцію не можна виконати без корен
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr "ЕкÑпортувати комплект тайлів"
+msgstr "ЕкÑпортувати набір плиток"
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
@@ -1833,7 +1819,7 @@ msgstr "Видалити макет"
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
msgid "Default"
-msgstr "За промовчаннÑм"
+msgstr "Типовий"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
@@ -2092,6 +2078,13 @@ msgstr "Довідка"
msgid "Classes"
msgstr "КлаÑи"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Пошук"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "Онлайн документаціÑ"
@@ -2363,14 +2356,12 @@ msgid "Frame #:"
msgstr "Кадр #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "ЧаÑ:"
+msgstr "ЧаÑ"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "Виклик"
+msgstr "Виклики"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2381,6 +2372,8 @@ msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Ðе знайдено робочий екÑпортер Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи.\n"
+"Будь лаÑка, додайте його в меню екÑпорту."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2408,7 +2401,7 @@ msgstr "Ви забули метод \"_run\"?"
#: editor/editor_settings.cpp
msgid "Default (Same as Editor)"
-msgstr "За промовчаннÑм (так Ñамо, Ñк редактор)"
+msgstr "Типовий (так Ñамо, Ñк редактор)"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -2475,8 +2468,8 @@ msgid "No version.txt found inside templates."
msgstr "Файл version.txt не знайдено у шаблонах."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:\n"
+msgid "Error creating path for templates:"
+msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2511,7 +2504,6 @@ msgstr "Ðемає відповіді."
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
msgstr "Запит не вдавÑÑ."
@@ -2556,10 +2548,9 @@ msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connecting.."
-msgstr "З’єданнÑ.."
+msgstr "З’єднаннÑ.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "Ðе вдаєтьÑÑ Ð·â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ÑÑ"
@@ -2637,11 +2628,8 @@ msgid "View items as a list"
msgstr "ПереглÑд елементів Ñк ÑпиÑок"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
-"\n"
"СтатуÑ: не вдалоÑÑ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ файл. Виправте файл та повторно імпортуйте "
"вручну."
@@ -2650,21 +2638,20 @@ msgid "Cannot move/rename resources root."
msgstr "Ðеможливо переміÑтити/перейменувати корінь реÑурÑів."
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "Ðе вдаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити теку в Ñебе.\n"
+msgid "Cannot move a folder into itself."
+msgstr "Ðе вдаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити теку в Ñебе."
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "Помилка переміщеннÑ:\n"
+msgid "Error moving:"
+msgstr "Помилка переміщеннÑ:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "Помилка завантаженнÑ:"
+msgid "Error duplicating:"
+msgstr "Помилка дублюваннÑ:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "Ðеможливо оновити залежноÑті:\n"
+msgid "Unable to update dependencies:"
+msgstr "Ðеможливо оновити залежноÑті:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2695,14 +2682,12 @@ msgid "Renaming folder:"
msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "Дублювати"
+msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:"
+msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÐ¸:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2721,9 +2706,8 @@ msgid "Move To.."
msgstr "ПереміÑтити до..."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
-msgstr "Відкрити Ñцену"
+msgstr "Відкрити Ñцену(и)"
#: editor/filesystem_dock.cpp
msgid "Instance"
@@ -2738,9 +2722,8 @@ msgid "View Owners.."
msgstr "ПереглÑнути влаÑників.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "Дублювати"
+msgstr "Дублювати.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2837,14 +2820,12 @@ msgid "Importing Scene.."
msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñцени.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):"
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):"
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñітки: "
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3052,7 +3033,6 @@ msgid "Animation position (in seconds)."
msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ— (в Ñекундах)."
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Scale animation playback globally for the node."
msgstr "Шкала Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾ анімації Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð°."
@@ -3137,7 +3117,6 @@ msgid "Force White Modulate"
msgstr "ПримуÑово Ñ€Ð¾Ð·Ñ„Ð°Ñ€Ð±Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ñ–Ð»Ð¸Ð¼"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Include Gizmos (3D)"
msgstr "Включити ÒÑ–Ð·Ð¼Ð¾Ñ (3D)"
@@ -3166,7 +3145,7 @@ msgstr "Далі (автоматична черга):"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Cross-Animation Blend Times"
-msgstr ""
+msgstr "Ð§Ð°Ñ Ð¼Ñ–Ð¶ анімаціÑми"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3188,11 +3167,11 @@ msgstr "МаÑштаб:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Fade In (s):"
-msgstr ""
+msgstr "ÐароÑÑ‚Ð°Ð½Ð½Ñ (Ñ):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Fade Out (s):"
-msgstr ""
+msgstr "Ð—Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð½Ñ (Ñ):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend"
@@ -3237,7 +3216,7 @@ msgstr "Ð—Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ 1:"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "X-Fade Time (s):"
-msgstr ""
+msgstr "Ð§Ð°Ñ X-Fade (Ñ):"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Current:"
@@ -3249,11 +3228,11 @@ msgstr "Додати вхід"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Clear Auto-Advance"
-msgstr ""
+msgstr "Ðвтоматичне очищеннÑ"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Set Auto-Advance"
-msgstr ""
+msgstr "Ðвтоматичні параметри"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Delete Input"
@@ -3273,7 +3252,7 @@ msgstr "Ðнімаційний вузол"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "OneShot Node"
-msgstr ""
+msgstr "Одноразовий вузол"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Mix Node"
@@ -3281,27 +3260,27 @@ msgstr "Змішувати вузол"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend2 Node"
-msgstr ""
+msgstr "Вузол Blend2"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend3 Node"
-msgstr ""
+msgstr "Вузол Blend3"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend4 Node"
-msgstr ""
+msgstr "Вузол Blend4"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeScale Node"
-msgstr ""
+msgstr "Вузол чаÑової шкали"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeSeek Node"
-msgstr ""
+msgstr "Вузол пошуку чаÑу"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Transition Node"
-msgstr ""
+msgstr "Вузол переходу"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
@@ -3315,6 +3294,10 @@ msgstr "Редагувати фільтри вузла"
msgid "Filters.."
msgstr "Фільтри..."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "Дерево анімації"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "Вивільнити"
@@ -3369,11 +3352,11 @@ msgstr "Помилка перевірки Ñ…ÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ sha256"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Asset Download Error:"
-msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°:"
+msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð°ÐºÑ‚Ð¸Ð²Ñƒ:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Fetching:"
-msgstr ""
+msgstr "ВидобуваннÑ:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Resolving.."
@@ -3397,7 +3380,7 @@ msgstr "Помилка завантаженнÑ"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
-msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ актива вже виконуєтьÑÑ!"
+msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ активу вже виконуєтьÑÑ!"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "first"
@@ -3452,7 +3435,7 @@ msgstr "Офіційний"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Testing"
-msgstr ""
+msgstr "ТеÑтуваннÑ"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
@@ -3464,22 +3447,30 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"Ðе вдаєтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ шлÑÑ… Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ.\n"
+"Збережіть вашу Ñцену (щоб Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¸ збережені в одній теці), або "
+"виберіть шлÑÑ… Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñƒ влаÑтивоÑÑ‚ÑÑ… BakedLightmap."
#: 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 Ñ– що "
+"прапор 'Ð—Ð°Ð¿Ñ–ÐºÐ°Ð½Ð½Ñ Ñвітла' включений."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
msgstr ""
+"Збій ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ оÑвітленоÑті, переконайтеÑÑ, що шлÑÑ… доÑтупний Ð´Ð»Ñ "
+"запиÑу."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr ""
+msgstr "Запікати карти оÑвітленнÑ"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "Попередній переглÑд"
@@ -3490,24 +3481,24 @@ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ð²'Ñзки"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Offset:"
-msgstr ""
+msgstr "ВідÑтуп Ñітки:"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid Step:"
-msgstr ""
+msgstr "Крок Ñітки:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Offset:"
-msgstr ""
+msgstr "ВідÑтуп повороту:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation Step:"
-msgstr ""
+msgstr "Крок повороту:"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Pivot"
-msgstr ""
+msgstr "ПереміÑтити опорну точку"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Move Action"
@@ -3547,19 +3538,19 @@ msgstr "Редагувати ІК-ланцюг"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Edit CanvasItem"
-msgstr ""
+msgstr "Редагувати CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Anchors only"
-msgstr ""
+msgstr "Тільки прив'Ñзки"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Anchors and Margins"
-msgstr ""
+msgstr "Змінити прив'Ñзки Ñ– розміри"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Anchors"
-msgstr ""
+msgstr "Змінити прив'Ñзки"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3571,7 +3562,7 @@ msgstr "Режим виділеннÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag: Rotate"
-msgstr ""
+msgstr "ПеретÑгуваннÑ: Поворот"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+Drag: Move"
@@ -3580,6 +3571,8 @@ msgstr "Alt+ПеретÑгнути: переміÑтити"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
msgstr ""
+"ÐатиÑніть 'V', щоб змінити Pivot, 'Shift + V' Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Pivot (під "
+"Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Alt+RMB: Depth list selection"
@@ -3604,7 +3597,7 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
-msgstr ""
+msgstr "ÐšÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ÑŽÑ” центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¾Ð±'єкта."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan Mode"
@@ -3640,31 +3633,31 @@ msgstr "ВідноÑна прив'Ñзка"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Pixel Snap"
-msgstr ""
+msgstr "ВикориÑтати Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ пікÑелів"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Smart snapping"
-msgstr ""
+msgstr "Інтелектуальне прилипаннÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to parent"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ предка"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node anchor"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ прив'Ñзки вузла"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to node sides"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ боків вузла"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to other nodes"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ інших вузлів"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Snap to guides"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ напрÑмних"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3682,7 +3675,7 @@ msgstr "Гарантує нащадки об'єкта не можуть бути
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Restores the object's children's ability to be selected."
-msgstr ""
+msgstr "Відновлює можливіÑть вибору нащадків об'єкта."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3728,11 +3721,11 @@ msgstr "Показати напрÑмні"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
-msgstr ""
+msgstr "Центрувати на вибраному"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Frame Selection"
-msgstr ""
+msgstr "Кадрувати вибране"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Layout"
@@ -3760,11 +3753,11 @@ msgstr "ОчиÑтити позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Drag pivot from mouse position"
-msgstr ""
+msgstr "ПеретÑгти центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¼Ð¸ÑˆÑ–"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Set pivot at mouse position"
-msgstr ""
+msgstr "Ð’Ñтановити центр Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° міÑці вказівника миші"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
@@ -3782,6 +3775,15 @@ msgstr "Додати %s"
msgid "Adding %s..."
msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Гаразд"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+"Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñрів декількох вузлів Ñ” неможливим без кореневого запиÑу."
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3790,22 +3792,19 @@ msgstr "Створити вузол"
#: 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 ""
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” одного обраного вузла."
+msgstr "Помилка Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñцени з %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
-msgstr "Змінити тип за промовчаннÑм"
+msgstr "Змінити типовий тип"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
+"ПеретÑг + Shift : Додати вузол того ж рівнÑ\n"
+"ПеретÑг + Alt : Змінити тип вузла"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
@@ -3813,7 +3812,7 @@ msgstr "Створити полігон3D"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
-msgstr ""
+msgstr "Ð’Ñтановити обробник"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
@@ -3839,23 +3838,23 @@ msgstr "Оновити зі Ñцени"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat0"
-msgstr ""
+msgstr "ПлаÑкий0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat1"
-msgstr ""
+msgstr "ПлаÑкий1"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease in"
-msgstr ""
+msgstr "Перейти в"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease out"
-msgstr ""
+msgstr "Перейти з"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Smoothstep"
-msgstr ""
+msgstr "Згладжений"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
@@ -3863,11 +3862,11 @@ msgstr "Змінити точку кривої"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr ""
+msgstr "Змінити дотичну до кривої"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Curve Preset"
-msgstr ""
+msgstr "Завантажити заготовку кривої"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -3879,15 +3878,15 @@ msgstr "Вилучити точку"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Left linear"
-msgstr ""
+msgstr "Лівий лінійний"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Right linear"
-msgstr ""
+msgstr "Правий лінійний"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr ""
+msgstr "Завантажити заготовку"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove Curve Point"
@@ -3895,24 +3894,24 @@ msgstr "Видалити точку кривої"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Переключити криву лінійного тангенÑу"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Утримуйте Shift, щоб змінити дотичні окремо"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr ""
+msgstr "Запекти пробу GI"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
-msgstr ""
+msgstr "Додати/Видалити точку градієнта"
#: editor/plugins/gradient_editor_plugin.cpp
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Modify Color Ramp"
-msgstr ""
+msgstr "Змінити градієнт"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
@@ -3931,10 +3930,12 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Цей вузол не має реÑурÑу OccluderPolygon2D.\n"
+"Створити і призначити?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
-msgstr ""
+msgstr "Створено затінювальний полігон"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create a new polygon from scratch."
@@ -3954,19 +3955,19 @@ msgstr "CTRL+ЛКМ: Розділити Ñегмент."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "RMB: Erase Point."
-msgstr ""
+msgstr "ПКМ: Стерти точку."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
-msgstr ""
+msgstr "Сітка порожнÑ!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
-msgstr ""
+msgstr "Створіть увігнуте Ñтатичне тіло"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Convex Body"
-msgstr ""
+msgstr "Створити опукле Ñтатичне тіло"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "This doesn't work on scene root!"
@@ -3974,35 +3975,35 @@ msgstr "Це не працює на корінь Ñцени!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Shape"
-msgstr ""
+msgstr "Створити увігнуту форму"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Shape"
-msgstr ""
+msgstr "Створити вигнуту форму"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr "Створити навигаційну Ñітку"
+msgstr "Створити навігаційну Ñітку"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "Вбудована Ñітка не має типу ArrayMesh."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "UV розгортка не вдалаÑÑ, можливо у поліÑеткі не однозв'Ñзна форма?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Ðемає Ñітки Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "Модель не має UV на цьому шарі"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "У MeshInstance немає Ñітки!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
@@ -4022,53 +4023,51 @@ msgstr "Сітка"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "Створити увігнуте Ñтатичне тіло"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Static Body"
-msgstr ""
+msgstr "Створити опукле Ñтатичне тіло"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "Створити увігнуту облаÑть зіткненнÑ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Convex Collision Sibling"
-msgstr ""
+msgstr "Створити опуклу облаÑть зіткненнÑ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr ""
+msgstr "Створити контурну Ñітку .."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "ПереглÑд"
+msgstr "ПереглÑд UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "ПереглÑд"
+msgstr "ПереглÑд UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Розгорнути UV2 Ð´Ð»Ñ ÐºÐ°Ñ€Ñ‚Ð¸ оÑвітленнÑ/AO"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "Створити Ñітку обведеннÑ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
-msgstr ""
+msgstr "Розмір обведеннÑ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
-msgstr ""
+msgstr "Ðе вказане джерело Ñітки (й у вузлі не вказано MultiMesh)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and MultiMesh contains no Mesh)."
-msgstr ""
+msgstr "Ðе вказане джерело Ñітки (й у вузлі не вказано MultiMesh)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (invalid path)."
@@ -4076,15 +4075,15 @@ msgstr "Джерело Ñітки недійÑне (неправильний шÐ
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (not a MeshInstance)."
-msgstr ""
+msgstr "Ðеправильне джерело Ñітки (не MultiMesh)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh source is invalid (contains no Mesh resource)."
-msgstr ""
+msgstr "Ðеправильне джерело Ñітки (немає реÑурÑу Ñітки)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No surface source specified."
-msgstr ""
+msgstr "Ðе задано джерело поверхні."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (invalid path)."
@@ -4096,15 +4095,15 @@ msgstr "Джерело поверхні недійÑне (без геометрÑ
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Surface source is invalid (no faces)."
-msgstr ""
+msgstr "Ðеправильне джерело поверхні (немає граней)."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Parent has no solid faces to populate."
-msgstr ""
+msgstr "Предок не має Ñуцільних граней Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Couldn't map area."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ‚Ð¸ ділÑнку."
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Select a Source Mesh:"
@@ -4120,7 +4119,7 @@ msgstr "Заповнити поверхню"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate MultiMesh"
-msgstr ""
+msgstr "Заповнити мультиÑітку"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Target Surface:"
@@ -4128,23 +4127,23 @@ msgstr "Цільова поверхнÑ:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Source Mesh:"
-msgstr ""
+msgstr "Початкова Ñітка:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "X-Axis"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ X"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Y-Axis"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ Y"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Z-Axis"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ Z"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Mesh Up Axis:"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ вгору Ñітки:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Random Rotation:"
@@ -4164,11 +4163,11 @@ msgstr "Заповнити"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr ""
+msgstr "Запекти!"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr ""
+msgid "Bake the navigation mesh."
+msgstr "Створити навігаційну Ñітку."
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4184,7 +4183,7 @@ msgstr "Розрахунок розміру Ñітки..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating heightfield..."
-msgstr ""
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ виÑот..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Marking walkable triangles..."
@@ -4192,15 +4191,15 @@ msgstr "ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¸Ñ… трикутників..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Constructing compact heightfield..."
-msgstr ""
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ñ— карти виÑот..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Eroding walkable area..."
-msgstr ""
+msgstr "Ð Ð¾Ð·Ð¼Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ñ— ділÑнки..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Partitioning..."
-msgstr ""
+msgstr "РозбиттÑ..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating contours..."
@@ -4208,11 +4207,11 @@ msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÑƒÑ€Ñ–Ð²..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating polymesh..."
-msgstr ""
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñітки..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Converting to native navigation mesh..."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð° влаÑну навігаційну Ñітку..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Navigation Mesh Generator Setup:"
@@ -4220,7 +4219,7 @@ msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð° навігаційної Ñ
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Parsing Geometry..."
-msgstr ""
+msgstr "Ðналіз геометрії..."
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Done!"
@@ -4233,11 +4232,12 @@ msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾ полігону"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generating AABB"
-msgstr ""
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"ПоÑтавити точку можна тільки в процедурному матеріалі ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4245,19 +4245,19 @@ msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ:"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "No pixels with transparency > 128 in image.."
-msgstr ""
+msgstr "Ð’ зображенні немає пікÑелів з прозоріÑтю > 128.."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Створити облаÑть видимоÑті"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
-msgstr ""
+msgstr "Завантажити маÑку випромінюваннÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
-msgstr ""
+msgstr "ОчиÑтити маÑку випромінюваннÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
@@ -4275,15 +4275,15 @@ msgstr "Ð§Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ñ–Ñ— (Ñек):"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Mask"
-msgstr ""
+msgstr "МаÑка випромінюваннÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Capture from Pixel"
-msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð· пікÑелÑ"
+msgstr "Захопити з пікÑелÑ"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Colors"
-msgstr ""
+msgstr "Кольори випромінюваннÑ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4291,39 +4291,39 @@ msgstr "Вузол не міÑтить геометрії."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry (faces)."
-msgstr ""
+msgstr "Вузол не міÑтить геометрії (граней)."
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "Потрібен матеріал типу 'ParticlesMaterial'."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Faces contain no area!"
-msgstr ""
+msgstr "Грані не міÑÑ‚Ñть ділÑнки!"
#: editor/plugins/particles_editor_plugin.cpp
msgid "No faces!"
-msgstr ""
+msgstr "Ðемає граней!"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generate AABB"
-msgstr ""
+msgstr "Генерувати AABB"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Mesh"
-msgstr ""
+msgstr "Створити випромінювач з Ñітки"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Node"
-msgstr ""
+msgstr "Створити випромінювач з вузла"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emitter"
-msgstr ""
+msgstr "Створити випромінювач"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Emission Points:"
-msgstr ""
+msgstr "Точок випромінюваннÑ:"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points"
@@ -4331,7 +4331,7 @@ msgstr "Точки поверхні"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "Точки поверхні + нормаль (напрÑмлена)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
@@ -4339,11 +4339,11 @@ msgstr "Об'єм"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Emission Source: "
-msgstr ""
+msgstr "Джерело випромінюваннÑ: "
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generate Visibility AABB"
-msgstr ""
+msgstr "Генерувати AABB"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
@@ -4351,11 +4351,11 @@ msgstr "Видалити точку з кривої"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Out-Control from Curve"
-msgstr ""
+msgstr "Вилучити з кривої вихідний промінь"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove In-Control from Curve"
-msgstr ""
+msgstr "Вилучити з кривої вхідний промінь"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4368,11 +4368,11 @@ msgstr "ПереміÑтити точку на криву"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move In-Control in Curve"
-msgstr ""
+msgstr "ПереÑунути вхідний промінь кривої"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Out-Control in Curve"
-msgstr ""
+msgstr "ПереÑунути вихідний промінь кривої"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4382,7 +4382,7 @@ msgstr "Виберіть пункти"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Shift+Drag: Select Control Points"
-msgstr ""
+msgstr "Shift+перетÑг: Вибрати керувальні точки"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4396,7 +4396,7 @@ msgstr "Клацніть правою кнопкою миші: видалити
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
-msgstr ""
+msgstr "Вибір керувальних точок (Shift+перетÑг)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4406,7 +4406,7 @@ msgstr "Додати точку (в порожньому проÑторі)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Segment (in curve)"
-msgstr ""
+msgstr "Розділити Ñегмент (кривої)"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4424,7 +4424,7 @@ msgstr "Точку кривої #"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ кривої"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
@@ -4432,35 +4432,35 @@ msgstr "Ð’Ñтановити криву в позиції"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Ð’Ñтановити Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ кривої"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
-msgstr ""
+msgstr "Розділити шлÑÑ…"
#: editor/plugins/path_editor_plugin.cpp
msgid "Remove Path Point"
-msgstr ""
+msgstr "Видалити точку шлÑху"
#: editor/plugins/path_editor_plugin.cpp
msgid "Remove Out-Control Point"
-msgstr ""
+msgstr "Вилучити вихідну керувальну точку"
#: editor/plugins/path_editor_plugin.cpp
msgid "Remove In-Control Point"
-msgstr ""
+msgstr "Вилучити вхідну керувальну точку"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
-msgstr ""
+msgstr "Створити UV карту"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Transform UV Map"
-msgstr ""
+msgstr "Перетворити UV карту"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon 2D UV Editor"
-msgstr ""
+msgstr "Polygon 2D UV редактор"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Point"
@@ -4476,7 +4476,7 @@ msgstr "Shift: ПереміÑтити вÑÑ–"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Shift+Ctrl: Scale"
-msgstr ""
+msgstr "Shift+Ctrl: МаÑштаб"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Move Polygon"
@@ -4500,28 +4500,28 @@ msgstr "Редагувати"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
-msgstr ""
+msgstr "Полігон -> UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "UV->Polygon"
-msgstr ""
+msgstr "UV -> полігон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Clear UV"
-msgstr ""
+msgstr "ОчиÑтити UV"
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap"
-msgstr ""
+msgstr "ПрилипаннÑ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Enable Snap"
-msgstr ""
+msgstr "Дозволити прилипаннÑ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Grid"
-msgstr ""
+msgstr "Сітка"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "ERROR: Couldn't load resource!"
@@ -4542,31 +4542,31 @@ msgstr "Вилучити реÑурÑ"
#: editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Resource clipboard is empty!"
-msgstr ""
+msgstr "Ð’ буфері обміну немає реÑурÑу!"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Load Resource"
-msgstr ""
+msgstr "Завантажити реÑурÑ"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
-msgstr ""
+msgstr "Ð’Ñтавити"
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "Передзавантажувач реÑурÑів"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
-msgstr ""
+msgstr "ОчиÑтити недавні файли"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"Закрити та зберегти зміни?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "Закрити та зберегти зміни?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4578,15 +4578,15 @@ msgstr "Помилка збереженнÑ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing theme"
-msgstr ""
+msgstr "Помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error importing"
-msgstr ""
+msgstr "Помилка імпортуваннÑ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Import Theme"
-msgstr ""
+msgstr "Імпортувати тему"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As.."
@@ -4594,567 +4594,574 @@ msgstr "Зберегти тему Ñк..."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° клаÑ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Sort"
-msgstr ""
+msgstr "Сортувати"
#: 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 Up"
-msgstr ""
+msgstr "ПереміÑтити вгору"
#: 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 "ПереміÑтити вниз"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
-msgstr ""
+msgstr "ÐаÑтупний Ñценарій"
#: editor/plugins/script_editor_plugin.cpp
msgid "Previous script"
-msgstr ""
+msgstr "Попередній Ñценарій"
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
-msgstr ""
+msgstr "Файл"
#: editor/plugins/script_editor_plugin.cpp
msgid "New"
-msgstr ""
+msgstr "Ðовий"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
-msgstr ""
+msgstr "Зберегти вÑе"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
-msgstr ""
+msgstr "М'Ñко перезавантажити Ñценарії"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "Копіювати шлÑÑ…"
+msgstr "Копіювати шлÑÑ… до Ñкрипту"
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr "Показати в файловій ÑиÑтемі"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
-msgstr ""
+msgstr "Попередній файл"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Next"
-msgstr ""
+msgstr "ÐаÑтупний файл"
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
-msgstr ""
+msgstr "Перезавантажити тему"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme"
-msgstr ""
+msgstr "Зберегти тему"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As"
-msgstr ""
+msgstr "Зберегти тему Ñк"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
-msgstr ""
+msgstr "Закрити документацію"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close All"
-msgstr ""
+msgstr "Закрити вÑе"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close Other Tabs"
-msgstr ""
+msgstr "Закрити інші вкладки"
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
msgid "Run"
-msgstr ""
+msgstr "ЗапуÑтити"
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
-msgstr ""
+msgstr "Перемкнути панель Ñценаріїв"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find.."
-msgstr ""
+msgstr "Знайти.."
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find Next"
-msgstr ""
+msgstr "Знайти наÑтупне"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Over"
-msgstr ""
+msgstr "Крок через"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Into"
-msgstr ""
+msgstr "Крок в"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Break"
-msgstr ""
+msgstr "Пауза"
#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_editor_debugger.cpp
msgid "Continue"
-msgstr ""
+msgstr "Продовжити"
#: editor/plugins/script_editor_plugin.cpp
msgid "Keep Debugger Open"
-msgstr ""
+msgstr "Залишити зневаджувач відкритим"
#: editor/plugins/script_editor_plugin.cpp
msgid "Debug with external editor"
-msgstr ""
+msgstr "Ð—Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою зовнішнього редактора"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
-msgstr ""
+msgstr "Відкрити онлайнову документацію Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
-msgstr ""
+msgstr "Пошук в ієрархії клаÑів."
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
-msgstr ""
+msgstr "Пошук довідкової документації."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to previous edited document."
-msgstr ""
+msgstr "Перейти до попереднього редагованого документа."
#: editor/plugins/script_editor_plugin.cpp
msgid "Go to next edited document."
-msgstr ""
+msgstr "Перейти до наÑтупного редагованого документа."
#: editor/plugins/script_editor_plugin.cpp
msgid "Discard"
-msgstr ""
+msgstr "Скинути"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
-msgstr ""
+msgstr "Створити Ñценарій"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"The following files are newer on disk.\n"
"What action should be taken?:"
msgstr ""
+"Такі файли на диÑку новіші.\n"
+"Що робити?:"
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload"
-msgstr ""
+msgstr "Перезавантажити"
#: editor/plugins/script_editor_plugin.cpp
msgid "Resave"
-msgstr ""
+msgstr "ПерезапиÑати"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr ""
+msgstr "Зневаджувач"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Built-in scripts can only be edited when the scene they belong to is loaded"
msgstr ""
+"Вбудовані Ñкрипти можна змінити тільки тоді, коли завантажено Ñцену, до Ñкої "
+"вони належать"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Можна перетÑгнути тільки реÑÑƒÑ€Ñ Ð· файлової ÑиÑтеми."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
-msgstr ""
+msgstr "Вибрати колір"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Case"
-msgstr ""
+msgstr "Перемкнути регіÑтр"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "ВЕРХÐІЙ РЕГІСТР"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "нижній регіÑтр"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "З Великої"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Cut"
-msgstr ""
+msgstr "Вирізати"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
-msgstr ""
+msgstr "Копіювати"
#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
#: scene/gui/text_edit.cpp
msgid "Select All"
-msgstr ""
+msgstr "Вибрати вÑе"
#: editor/plugins/script_text_editor.cpp
msgid "Delete Line"
-msgstr ""
+msgstr "Видалити Ñ€Ñдок"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
-msgstr ""
+msgstr "Зменшити відÑтуп"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Right"
-msgstr ""
+msgstr "Збільшити відÑтуп"
#: editor/plugins/script_text_editor.cpp
msgid "Toggle Comment"
-msgstr ""
+msgstr "Перемкнути коментар"
#: editor/plugins/script_text_editor.cpp
msgid "Clone Down"
-msgstr ""
+msgstr "Клонувати вниз"
#: editor/plugins/script_text_editor.cpp
msgid "Fold/Unfold Line"
-msgstr ""
+msgstr "Згорнути/розгорнути Ñ€Ñдок"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
-msgstr ""
+msgstr "Згорнути вÑÑ– Ñ€Ñдки"
#: editor/plugins/script_text_editor.cpp
msgid "Unfold All Lines"
-msgstr ""
+msgstr "Розгорнути вÑÑ– Ñ€Ñдки"
#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
-msgstr ""
+msgstr "Завершити Ñимвол"
#: editor/plugins/script_text_editor.cpp
msgid "Trim Trailing Whitespace"
-msgstr ""
+msgstr "Обрізати кінцевий пробіл"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Перетворити відÑтуп на пропуÑки"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Перетворити відÑтуп на табулÑції"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
-msgstr ""
+msgstr "ÐвтовідÑтуп"
#: editor/plugins/script_text_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Toggle Breakpoint"
-msgstr ""
+msgstr "Перемкнути точку зупинки"
#: editor/plugins/script_text_editor.cpp
msgid "Remove All Breakpoints"
-msgstr ""
+msgstr "Вилучити вÑÑ– точки зупинки"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Next Breakpoint"
-msgstr ""
+msgstr "Перейти до наÑтупної точки зупинки"
#: editor/plugins/script_text_editor.cpp
msgid "Goto Previous Breakpoint"
-msgstr ""
+msgstr "Перейти до попередньої точки зупинки"
#: editor/plugins/script_text_editor.cpp
msgid "Convert To Uppercase"
-msgstr ""
+msgstr "Конвертувати у ВЕРХÐІЙ РЕГІСТР"
#: editor/plugins/script_text_editor.cpp
msgid "Convert To Lowercase"
-msgstr ""
+msgstr "Конвертувати в нижній регіÑтр"
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
-msgstr ""
+msgstr "Знайти попереднє"
#: editor/plugins/script_text_editor.cpp
msgid "Replace.."
-msgstr ""
+msgstr "Замінити.."
#: editor/plugins/script_text_editor.cpp
msgid "Goto Function.."
-msgstr ""
+msgstr "Перейти до функції.."
#: editor/plugins/script_text_editor.cpp
msgid "Goto Line.."
-msgstr ""
+msgstr "Перейти до Ñ€Ñдка.."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
-msgstr ""
+msgstr "КонтекÑтна довідка"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Шейдер"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
-msgstr ""
+msgstr "Змінити чиÑлову Ñталу"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Constant"
-msgstr ""
+msgstr "Змінити векторну конÑтанту"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Constant"
-msgstr ""
+msgstr "Змінити Ñталу RGB"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Operator"
-msgstr ""
+msgstr "Змінити чиÑловий оператор"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Operator"
-msgstr ""
+msgstr "Змінити векторний оператор"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Scalar Operator"
-msgstr ""
+msgstr "Змінити векторно-чиÑловий оператор"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Operator"
-msgstr ""
+msgstr "Змінити оператор RGB"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Toggle Rot Only"
-msgstr ""
+msgstr "Перемкнути лише поворот"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Function"
-msgstr ""
+msgstr "Змінити ÑкалÑрну функцію"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Function"
-msgstr ""
+msgstr "Змінити векторну функцію"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Uniform"
-msgstr ""
+msgstr "Змінити чиÑлову одиницю"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Uniform"
-msgstr ""
+msgstr "Змінити векторну одиницю"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Uniform"
-msgstr ""
+msgstr "Змінити одиницю RGB"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Default Value"
-msgstr ""
+msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° промовчаннÑм"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
-msgstr ""
+msgstr "Змінити одиницю XForm"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Texture Uniform"
-msgstr ""
+msgstr "Змінити одиницю текÑтури"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Cubemap Uniform"
-msgstr ""
+msgstr "Змінити одиницю кубічної мапи"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Comment"
-msgstr ""
+msgstr "Змінити коментар"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add/Remove to Color Ramp"
-msgstr ""
+msgstr "Додати до рампи кольорів або вилучити з неї"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add/Remove to Curve Map"
-msgstr ""
+msgstr "Додати до карти кривих або вилучити з неї"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Modify Curve Map"
-msgstr ""
+msgstr "Змінити карту кривої"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Input Name"
-msgstr ""
+msgstr "Змінити назву входу"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Connect Graph Nodes"
-msgstr ""
+msgstr "З'єднати вузли графу"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Disconnect Graph Nodes"
-msgstr ""
+msgstr "Роз'єднати вузли графу"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Remove Shader Graph Node"
-msgstr ""
+msgstr "Вилучити вузол графу шейдера"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Move Shader Graph Node"
-msgstr ""
+msgstr "ПереÑунути вузол графу шейдера"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Duplicate Graph Node(s)"
-msgstr ""
+msgstr "Дублювати вузли графу"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Delete Shader Graph Node(s)"
-msgstr ""
+msgstr "Вилучити взули графу шейдера"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Error: Cyclic Connection Link"
-msgstr ""
+msgstr "Помилка: циклічне поÑиланнÑ"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Error: Missing Input Connections"
-msgstr ""
+msgstr "Помилка: пропущено вхідні з'єднаннÑ"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Add Shader Graph Node"
-msgstr ""
+msgstr "Додати вузол графу шейдера"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr ""
+msgstr "Ортогонально"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective"
-msgstr ""
+msgstr "ПерÑпектива"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Aborted."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "X-Axis Transform."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ X."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Y-Axis Transform."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ Y."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Z-Axis Transform."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð° віÑÑÑŽ Z."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Plane Transform."
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð¸ переглÑду."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
-msgstr ""
+msgstr "МаÑштаб: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translating: "
-msgstr ""
+msgstr "ПеренеÑеннÑ: "
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr ""
+msgid "Keying is disabled (no key inserted)."
+msgstr "Ð’ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° вимкнено (ключ не вÑтавлено)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr ""
+msgid "Animation Key Inserted."
+msgstr "Ð’Ñтавлено ключ анімації."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr ""
+msgid "Objects Drawn"
+msgstr "Ðамальовано об'єктів"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
+msgid "Material Changes"
+msgstr "Зміни матеріалу"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+msgid "Shader Changes"
+msgstr "Зміни шейдерів"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
+msgid "Surface Changes"
+msgstr "Зміни поверхонь"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr ""
+msgid "Draw Calls"
+msgstr "Виклики заÑобу малюваннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr ""
+msgid "Vertices"
+msgstr "Вершини"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr ""
+msgid "FPS"
+msgstr "Кадри за Ñекунду"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr ""
+msgid "Top View."
+msgstr "ВиглÑд згори."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr ""
+msgid "Bottom View."
+msgstr "ВиглÑд знизу."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr ""
+msgid "Bottom"
+msgstr "Знизу"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr ""
+msgid "Left View."
+msgstr "ВиглÑд зліва."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr ""
+msgid "Left"
+msgstr "Зліва"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+msgid "Right View."
+msgstr "ВиглÑд Ñправа."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+msgid "Right"
+msgstr "Справа"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+msgid "Front View."
+msgstr "ВиглÑд Ñпереду."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+msgid "Front"
+msgstr "Спереду"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr ""
+msgid "Rear View."
+msgstr "ВиглÑд ззаду."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr ""
+msgid "Rear"
+msgstr "Ззаду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
-msgstr ""
+msgstr "ВирівнÑти з переглÑдом"
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
@@ -5162,91 +5169,91 @@ msgstr "Гаразд :("
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
-msgstr ""
+msgstr "Ðемає батьківÑького запиÑу Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾."
+
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” одного обраного вузла."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
-msgstr ""
+msgstr "Ðормальний переглÑд"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Wireframe"
-msgstr ""
+msgstr "ПереглÑд каркаÑу"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Overdraw"
-msgstr ""
+msgstr "Режим проÑвічуваннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Unshaded"
-msgstr ""
+msgstr "ПереглÑд без тіней"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Environment"
-msgstr ""
+msgstr "ПереглÑд Ñередовища"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Gizmos"
-msgstr ""
+msgstr "ПереглÑд гаджетів"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "ПереглÑд відомоÑтей"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View FPS"
-msgstr ""
+msgstr "ПереглÑд чаÑтоти кадрів"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Half Resolution"
-msgstr ""
+msgstr "Половина роздільноÑті"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
-msgstr ""
+msgstr "ПроÑÐ»ÑƒÑ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Doppler Enable"
-msgstr ""
+msgstr "Ефект Доплера"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
-msgstr ""
+msgstr "ОглÑд ліворуч"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Right"
-msgstr ""
+msgstr "ОглÑд праворуч"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Forward"
-msgstr ""
+msgstr "ОглÑд вперед"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Backwards"
-msgstr ""
+msgstr "ОглÑд назад"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr ""
+msgstr "ОглÑд вгору"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Down"
-msgstr ""
+msgstr "ОглÑд вниз"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
+msgstr "Коефіцієнт швидкоÑті оглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
-msgstr ""
+msgstr "Вікно XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+msgid "Select Mode (Q)"
+msgstr "Режим Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5254,546 +5261,591 @@ msgid ""
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
msgstr ""
+"ПеретÑгуваннÑ: Обертати\n"
+"Alt+ПеретÑгуваннÑ: ПереÑунути\n"
+"Alt+Права кнопка: Вибір у ÑпиÑку за глибиною"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
-msgstr ""
+msgstr "Режим переÑÑƒÐ²Ð°Ð½Ð½Ñ (W)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Mode (E)"
-msgstr ""
+msgstr "Режим Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ (E)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Mode (R)"
-msgstr ""
+msgstr "Режим маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ (R)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
-msgstr ""
+msgstr "Локальні координати"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Space Mode (%s)"
-msgstr ""
+msgstr "Режим локального проÑтору (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Mode (%s)"
-msgstr ""
+msgstr "Режим Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (%s)"
#: 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"
-msgstr ""
+msgstr "ВиглÑд ззаду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View"
-msgstr ""
+msgstr "ВиглÑд Ñпереду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View"
-msgstr ""
+msgstr "ВиглÑд зліва"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right View"
-msgstr ""
+msgstr "ВиглÑд Ñправа"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Switch Perspective/Orthogonal view"
-msgstr ""
+msgstr "Перемкнути переглÑд перÑпективи/ортогональний переглÑд"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Insert Animation Key"
-msgstr ""
+msgstr "Ð’Ñтавити ключ анімації"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Origin"
-msgstr ""
+msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° центрі"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
-msgstr ""
+msgstr "ФокуÑувати позначене"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align Selection With View"
-msgstr ""
+msgstr "ВирівнÑти позначене із переглÑдом"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Select"
-msgstr ""
+msgstr "ІнÑтрумент позначеннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Move"
-msgstr ""
+msgstr "ІнÑтрумент переÑуваннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Rotate"
-msgstr ""
+msgstr "ІнÑтрумент обертаннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Scale"
-msgstr ""
+msgstr "ІнÑтрумент маÑштабуваннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Toggle Freelook"
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¾Ð³Ð»Ñду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
-msgstr ""
+msgstr "ПеретвореннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Configure Snap.."
-msgstr ""
+msgstr "Ðалаштувати прилипаннÑ..."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog.."
-msgstr ""
+msgstr "Вікно перетвореннÑ..."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
-msgstr ""
+msgstr "1 панель переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "2 Viewports"
-msgstr ""
+msgstr "2 панелі переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "2 Viewports (Alt)"
-msgstr ""
+msgstr "2 панелі переглÑду (альт.)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "3 Viewports"
-msgstr ""
+msgstr "3 панелі переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "3 Viewports (Alt)"
-msgstr ""
+msgstr "3 панелі переглÑду (альт.)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "4 Viewports"
-msgstr ""
+msgstr "4 панелі переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Origin"
-msgstr ""
+msgstr "ПереглÑд центра"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Grid"
-msgstr ""
+msgstr "ПереглÑд ґратки"
#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings"
-msgstr ""
+msgstr "Параметри"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "ВидиміÑть каркаÑу гаджетів"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
-msgstr ""
+msgstr "Параметри прилипаннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate Snap:"
-msgstr ""
+msgstr "ПереÑувне прилипаннÑ:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate Snap (deg.):"
-msgstr ""
+msgstr "Обертальне Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (град.):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
-msgstr ""
+msgstr "МаÑштабувальне Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ (%):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Viewport Settings"
-msgstr ""
+msgstr "Параметри панелі переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Perspective FOV (deg.):"
-msgstr ""
+msgstr "Поле зору перÑпективи (град.):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Near:"
-msgstr ""
+msgstr "Ближнє Z переглÑду:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Z-Far:"
-msgstr ""
+msgstr "Дальнє Z переглÑду:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Change"
-msgstr ""
+msgstr "Зміна перетвореннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Translate:"
-msgstr ""
+msgstr "ПеренеÑеннÑ:"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotate (deg.):"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ (град.):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale (ratio):"
-msgstr ""
+msgstr "МаÑштаб (коеф.):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr ""
+msgstr "Тип перетвореннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
-msgstr ""
+msgstr "До"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Post"
-msgstr ""
+msgstr "ПіÑлÑ"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "ERROR: Couldn't load frame resource!"
-msgstr ""
+msgstr "Помилка: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑÑƒÑ€Ñ ÐºÐ°Ð´Ñ€Ñƒ!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Frame"
-msgstr ""
+msgstr "Додати кадр"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Resource clipboard is empty or not a texture!"
-msgstr ""
+msgstr "Буфер реÑурÑів порожній або не міÑтить текÑтури!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Paste Frame"
-msgstr ""
+msgstr "Ð’Ñтавити кадр"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Empty"
-msgstr ""
+msgstr "Додати порожній"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr ""
+msgstr "Змінити цикл анімації"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation FPS"
-msgstr ""
+msgstr "Змінити чаÑтоту кадрів анімації"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "(empty)"
-msgstr ""
+msgstr "(порожньо)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animations"
-msgstr ""
+msgstr "Ðнімації"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Speed (FPS):"
-msgstr ""
+msgstr "ЧаÑтота (кадри за Ñек.):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Loop"
-msgstr ""
+msgstr "Зациклити"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
-msgstr ""
+msgstr "Кадри анімації"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (Before)"
-msgstr ""
+msgstr "Ð’Ñтавити порожній (до)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Insert Empty (After)"
-msgstr ""
+msgstr "Ð’Ñтавити порожній (піÑлÑ)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Move (Before)"
-msgstr ""
+msgstr "ПереÑунути (до)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Move (After)"
-msgstr ""
+msgstr "ПереÑунути (піÑлÑ)"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "Кадри Ñпрайта"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
-msgstr ""
+msgstr "ПереглÑд StyleBox:"
+
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "Style Box"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
-msgstr ""
+msgstr "Ð’Ñтановити прÑмокутник облаÑті"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
-msgstr ""
+msgstr "Режим прилипаннÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "<None>"
-msgstr ""
+msgstr "<Ðемає>"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ пікÑелів"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Grid Snap"
-msgstr ""
+msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ ґратки"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Auto Slice"
-msgstr ""
+msgstr "ÐвтонарізаннÑ"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
-msgstr ""
+msgstr "ЗÑув:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
-msgstr ""
+msgstr "Крок:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
-msgstr ""
+msgstr "ВідокремленнÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region"
-msgstr ""
+msgstr "ОблаÑть текÑтури"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Texture Region Editor"
-msgstr ""
+msgstr "Редактор облаÑті текÑтури"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ тему до файла:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All Items"
-msgstr ""
+msgstr "Додати уÑÑ– елементи"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add All"
-msgstr ""
+msgstr "Додати уÑÑ–"
#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Remove Item"
-msgstr ""
+msgstr "Вилучити елемент"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Items"
-msgstr ""
+msgstr "Вилучити уÑÑ– елементи"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All"
-msgstr ""
+msgstr "Вилучити уÑÑ–"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Edit theme.."
-msgstr ""
+msgstr "Редагувати тему..."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme editing menu."
-msgstr ""
+msgstr "Меню Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
-msgstr ""
+msgstr "Додати елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
-msgstr ""
+msgstr "Вилучити елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Template"
-msgstr ""
+msgstr "Створити порожній шаблон"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Editor Template"
-msgstr ""
+msgstr "Створити порожній шаблон редактора"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create From Current Editor Theme"
-msgstr ""
+msgstr "Створити на оÑнові поточної теми редактора"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
-msgstr ""
+msgstr "Варіант 1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio2"
-msgstr ""
+msgstr "Варіант 2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Item"
-msgstr ""
+msgstr "Елемент"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Check Item"
-msgstr ""
+msgstr "Позначити елемент"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Checked Item"
-msgstr ""
+msgstr "Позначений елемент"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Has"
-msgstr ""
+msgstr "Має"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Many"
-msgstr ""
+msgstr "Багато"
#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
-msgstr ""
+msgstr "Параметрів"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Have,Many,Several,Options!"
-msgstr ""
+msgstr "Має,Багато,Декілька,Параметрів!"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 1"
-msgstr ""
+msgstr "Вкладка 1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 2"
-msgstr ""
+msgstr "Вкладка 2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Tab 3"
-msgstr ""
+msgstr "Вкладка 3"
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
msgid "Type:"
-msgstr ""
+msgstr "Тип:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Data Type:"
-msgstr ""
+msgstr "Тип даних:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Icon"
-msgstr ""
+msgstr "Піктограма"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Style"
-msgstr ""
+msgstr "Стиль"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Font"
-msgstr ""
+msgstr "Шрифт"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
-msgstr ""
+msgstr "Колір"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "Тема"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
-msgstr ""
+msgstr "Витерти позначене"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
-msgstr ""
+msgstr "Ðамалювати карту плиток"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Line Draw"
-msgstr ""
+msgstr "Ðамалювати лінію"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Ðамалювати прÑмокутник"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Bucket Fill"
-msgstr ""
+msgstr "ЗалиттÑ"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
-msgstr ""
+msgstr "Витерти карту плиток"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase selection"
-msgstr ""
+msgstr "Витерти позначене"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Find tile"
-msgstr ""
+msgstr "Знайти плитку"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Transpose"
-msgstr ""
+msgstr "ТранÑпонувати"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Mirror X"
-msgstr ""
+msgstr "Віддзеркалити за X"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Mirror Y"
-msgstr ""
+msgstr "Віддзеркалити за Y"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint Tile"
-msgstr ""
+msgstr "Ðамалювати плитку"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
-msgstr ""
+msgstr "Вибрати плитку"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 0 градуÑів"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 90 degrees"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 90 градуÑів"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 180 degrees"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 180 градуÑів"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 270 degrees"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 270 градуÑів"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Could not find tile:"
-msgstr ""
+msgstr "Ðеможливо знайти плитку:"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Item name or ID:"
-msgstr ""
+msgstr "Ðазва або ідентифікатор елемента:"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from scene?"
-msgstr ""
+msgstr "Створити зі Ñцени?"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from scene?"
-msgstr ""
+msgstr "Об'єднати зі Ñцени?"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "Ðабір тайлів.."
+msgstr "Ðабір плитки"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
-msgstr ""
+msgstr "Створити зі Ñцени"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Merge from Scene"
-msgstr ""
+msgstr "Об'єднати зі Ñцени"
#: editor/plugins/tile_set_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Error"
+msgstr "Помилка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr "Ðвтоплитки"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"Виберіть підплитку Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñк піктограми. Її також буде викориÑтано "
+"Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… прив'Ñзок у режимі автоплитки."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
msgstr ""
+"Ліва кнопка: вÑтановити.\n"
+"Права кнопка: знÑти."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "Вибрати поточну редаговану вкладену плитку."
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "Позначте підплитку Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ Ñ—Ñ— пріоритетноÑті."
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
@@ -5801,199 +5853,219 @@ msgstr "СкаÑувати"
#: editor/project_export.cpp
msgid "Runnable"
-msgstr ""
+msgstr "Ðктивний"
#: editor/project_export.cpp
msgid "Delete patch '%s' from list?"
-msgstr ""
+msgstr "Вилучити латку «%s» зі ÑпиÑку?"
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
-msgstr ""
+msgstr "Вилучити набір «%s»?"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing/corrupted: "
msgstr ""
+"Ðе виÑтачає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ або шаблони пошкоджено: "
#: editor/project_export.cpp
msgid "Presets"
-msgstr ""
+msgstr "Ðабори"
#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
-msgstr ""
+msgstr "Додати..."
#: editor/project_export.cpp
msgid "Resources"
-msgstr ""
+msgstr "РеÑурÑи"
#: editor/project_export.cpp
msgid "Export all resources in the project"
-msgstr ""
+msgstr "ЕкÑпортувати уÑÑ– реÑурÑи у проекті"
#: editor/project_export.cpp
msgid "Export selected scenes (and dependencies)"
-msgstr ""
+msgstr "ЕкÑпортувати позначені реÑурÑи (Ñ– залежноÑті)"
#: editor/project_export.cpp
msgid "Export selected resources (and dependencies)"
-msgstr ""
+msgstr "ЕкÑпортувати позначені реÑурÑи (Ñ– залежноÑті)"
#: editor/project_export.cpp
msgid "Export Mode:"
-msgstr ""
+msgstr "Режим екÑпортуваннÑ:"
#: editor/project_export.cpp
msgid "Resources to export:"
-msgstr ""
+msgstr "ЕкÑпортовані реÑурÑи:"
#: editor/project_export.cpp
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
msgstr ""
+"Фільтри екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², Ñкі не міÑÑ‚Ñть реÑурÑів (з відокремленнÑм "
+"комами, приклад: *.json, *.txt)"
#: editor/project_export.cpp
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
msgstr ""
+"Фільтри Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з проекту (з відокремленнÑм комами, приклад: *."
+"json, *.txt)"
#: editor/project_export.cpp
msgid "Patches"
-msgstr ""
+msgstr "Латки"
#: editor/project_export.cpp
msgid "Make Patch"
-msgstr ""
+msgstr "Створити латку"
#: editor/project_export.cpp
msgid "Features"
-msgstr ""
+msgstr "МожливоÑті"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Ðетипове (з відокремленнÑм комами):"
#: editor/project_export.cpp
msgid "Feature List:"
-msgstr ""
+msgstr "СпиÑок можливоÑтей:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
-msgstr ""
+msgstr "ЕкÑпортувати PCK/Zip"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
-msgstr ""
+msgstr "Ðемає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— платформи:"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing/corrupted:"
msgstr ""
+"Ðе виÑтачає шаблонів екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð¸ або шаблони пошкоджено:"
#: editor/project_export.cpp
msgid "Export With Debug"
-msgstr ""
+msgstr "ЕкÑпортувати із діагноÑтикою"
#: editor/project_manager.cpp
msgid "The path does not exist."
-msgstr ""
+msgstr "ШлÑху не Ñ–Ñнує."
#: editor/project_manager.cpp
msgid "Please choose a 'project.godot' file."
-msgstr ""
+msgstr "Будь лаÑка, виберіть файл «project.godot»."
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr ""
+msgid "Please choose an empty folder."
+msgstr "Будь лаÑка, виберіть порожню теку."
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
-msgstr ""
+msgstr "Будь лаÑка, виберіть теку, у Ñкій не міÑтитьÑÑ Ñ„Ð°Ð¹Ð»Ð° «project.godot»."
#: editor/project_manager.cpp
msgid "Imported Project"
-msgstr ""
+msgstr "Імпортований проект"
+
+#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "Ðеможливо Ñтворити теку."
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "У вказаному каталозі вже міÑтитьÑÑ Ñ‚ÐµÐºÐ° із вказано назвою."
#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
-msgstr ""
+msgstr "Вам варто дати назву вашому проекту."
#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
-msgstr ""
+msgstr "Ðекоректний шлÑÑ… до проекту (щоÑÑŒ змінилоÑÑ?)."
#: editor/project_manager.cpp
msgid "Couldn't get project.godot in project path."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot з каталогу проекту."
#: editor/project_manager.cpp
msgid "Couldn't edit project.godot in project path."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ñ‚Ð¸ project.godot у каталозі проекту."
#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ñтворити project.godot у каталозі проекту."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ такі файли з пакунка:"
#: editor/project_manager.cpp
msgid "Rename Project"
-msgstr ""
+msgstr "Перейменувати проект"
#: editor/project_manager.cpp
msgid "Couldn't get project.godot in the project path."
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot у каталозі проекту."
#: editor/project_manager.cpp
msgid "New Game Project"
-msgstr ""
+msgstr "Ðовий проект гри"
#: editor/project_manager.cpp
msgid "Import Existing Project"
-msgstr ""
+msgstr "Імпортувати наÑвний проект"
+
+#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "Імпортувати та редагувати"
#: editor/project_manager.cpp
msgid "Create New Project"
-msgstr ""
+msgstr "Створити новий проект"
+
+#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Створити та змінити"
#: editor/project_manager.cpp
msgid "Install Project:"
-msgstr ""
+msgstr "Ð’Ñтановити проект:"
+
+#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "Ð’Ñтановити та змінити"
#: editor/project_manager.cpp
msgid "Project Name:"
-msgstr ""
+msgstr "Ðазва проекту:"
#: editor/project_manager.cpp
msgid "Create folder"
-msgstr ""
+msgstr "Створити теку"
#: editor/project_manager.cpp
msgid "Project Path:"
-msgstr ""
+msgstr "ШлÑÑ… проекту:"
#: editor/project_manager.cpp
msgid "Browse"
-msgstr ""
-
-#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
+msgstr "Вибрати"
#: editor/project_manager.cpp
msgid "Unnamed Project"
-msgstr ""
+msgstr "Проект без назви"
#: editor/project_manager.cpp
msgid "Can't open project"
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ проект"
#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
-msgstr ""
+msgstr "Ви Ñправді хочете відкрити декілька проектів одразу?"
#: editor/project_manager.cpp
msgid ""
@@ -6001,52 +6073,66 @@ msgid ""
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити проект: не визначено головної Ñцени.\n"
+"Будь лаÑка, змініть проект, вÑтановивши головну Ñцену у категорії «Програма» "
+"Ñторінки «Параметри проекту»."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити проект: Ñлід імпортувати вміÑÑ‚.\n"
+"Будь лаÑка, змініть проект так, щоб увімкнути початкове імпортуваннÑ."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
-msgstr ""
+msgstr "Ви Ñправді хочете запуÑтити декілька проектів одночаÑно?"
#: editor/project_manager.cpp
msgid "Remove project from the list? (Folder contents will not be modified)"
-msgstr ""
+msgstr "Вилучити проект зі ÑпиÑку? (ВміÑÑ‚ теки не буде змінено)"
#: editor/project_manager.cpp
msgid ""
"Language changed.\n"
"The UI will update next time the editor or project manager starts."
msgstr ""
+"Змінено мову.\n"
+"Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±ÑƒÐ´Ðµ оновлено під Ñ‡Ð°Ñ Ð½Ð°Ñтупного запуÑку редактора або заÑобу "
+"ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°Ð¼Ð¸."
#: editor/project_manager.cpp
msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
+"Ви наказали розпочати ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ %s тек у пошуках наÑвних проектів Godot. "
+"Підтверджуєте ÑкануваннÑ?"
+
+#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "Керівник проекту"
#: editor/project_manager.cpp
msgid "Project List"
-msgstr ""
+msgstr "СпиÑок проектів"
#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "Сканувати"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr ""
+msgstr "Виберіть теку Ð´Ð»Ñ ÑкануваннÑ"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "Ðовий проект"
#: editor/project_manager.cpp
msgid "Templates"
-msgstr ""
+msgstr "Шаблони"
#: editor/project_manager.cpp
msgid "Exit"
@@ -6065,6 +6151,8 @@ msgid ""
"You don't currently have any projects.\n"
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
+"Зараз проектів немає.\n"
+"Хочете вивчити проекти офіційних прикладів з бібліотеки даних?"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6072,11 +6160,11 @@ msgstr "Клавіша "
#: editor/project_settings_editor.cpp
msgid "Joy Button"
-msgstr ""
+msgstr "Кнопка джойÑтика"
#: editor/project_settings_editor.cpp
msgid "Joy Axis"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ джойÑтика"
#: editor/project_settings_editor.cpp
msgid "Mouse Button"
@@ -6084,31 +6172,31 @@ msgstr "Кнопка миші"
#: editor/project_settings_editor.cpp
msgid "Invalid action (anything goes but '/' or ':')."
-msgstr ""
+msgstr "Ðекоректна Ð´Ñ–Ñ (можна уÑе, окрім «/» або «:»)."
#: editor/project_settings_editor.cpp
msgid "Action '%s' already exists!"
-msgstr ""
+msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð´Ñ–Ñ— «%s» вже Ñ–Ñнує!"
#: editor/project_settings_editor.cpp
msgid "Rename Input Action Event"
-msgstr ""
+msgstr "Перейменувати подію за вхідною дією"
#: editor/project_settings_editor.cpp
msgid "Add Input Action Event"
-msgstr ""
+msgstr "Додати подію за вхідною дією"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Shift+"
-msgstr ""
+msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Alt+"
-msgstr ""
+msgstr "Alt+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Control+"
-msgstr ""
+msgstr "Ctrl+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
@@ -6116,27 +6204,27 @@ msgstr "ÐатиÑніть клавішу,..."
#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
-msgstr ""
+msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ миші:"
#: editor/project_settings_editor.cpp
msgid "Left Button"
-msgstr ""
+msgstr "Ліва кнопка"
#: editor/project_settings_editor.cpp
msgid "Right Button"
-msgstr ""
+msgstr "Права кнопка"
#: editor/project_settings_editor.cpp
msgid "Middle Button"
-msgstr ""
+msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
#: editor/project_settings_editor.cpp
msgid "Wheel Up Button"
-msgstr ""
+msgstr "Кнопка коліщатка вгору"
#: editor/project_settings_editor.cpp
msgid "Wheel Down Button"
-msgstr ""
+msgstr "Кнопка коліщатка вниз"
#: editor/project_settings_editor.cpp
msgid "Button 6"
@@ -6155,93 +6243,88 @@ msgid "Button 9"
msgstr "Кнопка 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
-msgstr ""
+msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð²Ñ–ÑÑ– джойÑтика:"
#: editor/project_settings_editor.cpp
msgid "Axis"
-msgstr ""
+msgstr "Ð’Ñ–ÑÑŒ"
#: editor/project_settings_editor.cpp
msgid "Joypad Button Index:"
-msgstr ""
+msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ джойÑтика:"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action"
-msgstr ""
+msgstr "Витерти Ð·Ð°Ð¿Ð¸Ñ Ð´Ñ–Ñ—"
#: editor/project_settings_editor.cpp
msgid "Erase Input Action Event"
-msgstr ""
+msgstr "Витерти подію за дією"
#: editor/project_settings_editor.cpp
msgid "Add Event"
-msgstr ""
+msgstr "Додати подію"
#: editor/project_settings_editor.cpp
msgid "Device"
-msgstr ""
+msgstr "ПриÑтрій"
#: editor/project_settings_editor.cpp
msgid "Button"
-msgstr ""
+msgstr "Кнопка"
#: editor/project_settings_editor.cpp
msgid "Left Button."
-msgstr ""
+msgstr "Ліва кнопка."
#: editor/project_settings_editor.cpp
msgid "Right Button."
-msgstr ""
+msgstr "Права кнопка."
#: editor/project_settings_editor.cpp
msgid "Middle Button."
-msgstr ""
+msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°."
#: editor/project_settings_editor.cpp
msgid "Wheel Up."
-msgstr ""
+msgstr "Коліщатко вгору."
#: editor/project_settings_editor.cpp
msgid "Wheel Down."
-msgstr ""
+msgstr "Коліщатко вниз."
#: editor/project_settings_editor.cpp
msgid "Add Global Property"
-msgstr ""
+msgstr "Додати загальну влаÑтивіÑть"
#: editor/project_settings_editor.cpp
msgid "Select a setting item first!"
-msgstr ""
+msgstr "Спочатку виберіть елемент параметра!"
#: editor/project_settings_editor.cpp
msgid "No property '%s' exists."
-msgstr ""
+msgstr "ВлаÑтивоÑті «%s» не Ñ–Ñнує."
#: editor/project_settings_editor.cpp
msgid "Setting '%s' is internal, and it can't be deleted."
-msgstr ""
+msgstr "Параметр «%s» є внутрішнім. Його не можна вилучати."
#: editor/project_settings_editor.cpp
msgid "Delete Item"
-msgstr ""
+msgstr "Вилучити елемент"
#: editor/project_settings_editor.cpp
msgid "Can't contain '/' or ':'"
-msgstr ""
+msgstr "Ðе може міÑтити «/» або «:»"
#: editor/project_settings_editor.cpp
msgid "Already existing"
-msgstr ""
+msgstr "Вже Ñ–Ñнує"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
-msgstr ""
+msgstr "Додати дію"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6249,11 +6332,11 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ."
#: editor/project_settings_editor.cpp
msgid "Settings saved OK."
-msgstr ""
+msgstr "Параметри уÑпішно збережено."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Перевизначено Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6261,67 +6344,67 @@ msgstr "Додати переклад"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
-msgstr ""
+msgstr "Вилучити переклад"
#: editor/project_settings_editor.cpp
msgid "Add Remapped Path"
-msgstr ""
+msgstr "Додати переÑпрÑмований шлÑÑ…"
#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
-msgstr ""
+msgstr "ПереÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу додає переÑпрÑмуваннÑ"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
-msgstr ""
+msgstr "Змінити мову переÑпрÑÐ¼Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
-msgstr ""
+msgstr "Вилучити переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
-msgstr ""
+msgstr "Вилучити параметр переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter"
-msgstr ""
+msgstr "Змінено фільтр локалі"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter Mode"
-msgstr ""
+msgstr "Змінено режим Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»Ñ–"
#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr ""
+msgstr "Параметри проекту (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
-msgstr ""
+msgstr "Загальне"
#: editor/project_settings_editor.cpp editor/property_editor.cpp
msgid "Property:"
-msgstr ""
+msgstr "ВлаÑтивіÑть:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Перевизначити на..."
#: editor/project_settings_editor.cpp
msgid "Input Map"
-msgstr ""
+msgstr "Карта введеннÑ"
#: editor/project_settings_editor.cpp
msgid "Action:"
-msgstr ""
+msgstr "ДіÑ:"
#: editor/project_settings_editor.cpp
msgid "Device:"
-msgstr ""
+msgstr "ПриÑтрій:"
#: editor/project_settings_editor.cpp
msgid "Index:"
-msgstr ""
+msgstr "ІндекÑ:"
#: editor/project_settings_editor.cpp
msgid "Localization"
@@ -6337,67 +6420,67 @@ msgstr "Переклади:"
#: editor/project_settings_editor.cpp
msgid "Remaps"
-msgstr ""
+msgstr "ПереÑпрÑмуваннÑ"
#: editor/project_settings_editor.cpp
msgid "Resources:"
-msgstr ""
+msgstr "РеÑурÑи:"
#: editor/project_settings_editor.cpp
msgid "Remaps by Locale:"
-msgstr ""
+msgstr "ПереÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° локаллю:"
#: editor/project_settings_editor.cpp
msgid "Locale"
-msgstr ""
+msgstr "Локаль"
#: editor/project_settings_editor.cpp
msgid "Locales Filter"
-msgstr ""
+msgstr "Фільтр локалей"
#: editor/project_settings_editor.cpp
msgid "Show all locales"
-msgstr ""
+msgstr "Показати уÑÑ– локалі"
#: editor/project_settings_editor.cpp
msgid "Show only selected locales"
-msgstr ""
+msgstr "Показати лише позначені локалі"
#: editor/project_settings_editor.cpp
msgid "Filter mode:"
-msgstr ""
+msgstr "Режим фільтруваннÑ:"
#: editor/project_settings_editor.cpp
msgid "Locales:"
-msgstr ""
+msgstr "Локалі:"
#: editor/project_settings_editor.cpp
msgid "AutoLoad"
-msgstr ""
+msgstr "ÐвтозавантаженнÑ"
#: editor/property_editor.cpp
msgid "Pick a Viewport"
-msgstr ""
+msgstr "Виберіть панель переглÑду"
#: editor/property_editor.cpp
msgid "Ease In"
-msgstr ""
+msgstr "Перейти в"
#: editor/property_editor.cpp
msgid "Ease Out"
-msgstr ""
+msgstr "Перейти з"
#: editor/property_editor.cpp
msgid "Zero"
-msgstr ""
+msgstr "Ðуль"
#: editor/property_editor.cpp
msgid "Easing In-Out"
-msgstr ""
+msgstr "Перейти у-з"
#: editor/property_editor.cpp
msgid "Easing Out-In"
-msgstr ""
+msgstr "Перейти з-у"
#: editor/property_editor.cpp
msgid "File.."
@@ -6405,15 +6488,15 @@ msgstr "Файл..."
#: editor/property_editor.cpp
msgid "Dir.."
-msgstr ""
+msgstr "Каталог..."
#: editor/property_editor.cpp
msgid "Assign"
-msgstr ""
+msgstr "Призначити"
#: editor/property_editor.cpp
msgid "Select Node"
-msgstr ""
+msgstr "Позначити вузол"
#: editor/property_editor.cpp
msgid "New Script"
@@ -6421,91 +6504,92 @@ msgstr "Ðовий Ñкрипт"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "Ðовий %s"
#: editor/property_editor.cpp
msgid "Make Unique"
-msgstr ""
+msgstr "Зробити унікальним"
#: editor/property_editor.cpp
msgid "Show in File System"
-msgstr ""
+msgstr "Показати в файловій ÑиÑтемі"
#: editor/property_editor.cpp
msgid "Convert To %s"
-msgstr ""
+msgstr "Перетворити на %s"
#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
-msgstr ""
+msgstr "Помилка при завантаженні файла: не Ñ” реÑурÑом!"
#: editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
-msgstr ""
+msgstr "Позначений вузол не Ñ” панеллю переглÑду!"
#: editor/property_editor.cpp
msgid "Pick a Node"
-msgstr ""
+msgstr "Вибрати вузол"
#: editor/property_editor.cpp
msgid "Bit %d, val %d."
-msgstr ""
+msgstr "Біт %d, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %d."
#: editor/property_editor.cpp
msgid "On"
-msgstr ""
+msgstr "Увімкнено"
#: editor/property_editor.cpp
msgid "[Empty]"
-msgstr ""
+msgstr "[Порожньо]"
#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
msgid "Set"
-msgstr ""
+msgstr "Ð’Ñтановити"
#: editor/property_editor.cpp
msgid "Properties:"
-msgstr ""
+msgstr "ВлаÑтивоÑті:"
#: editor/property_selector.cpp
msgid "Select Property"
-msgstr ""
+msgstr "Вибір влаÑтивоÑті"
#: editor/property_selector.cpp
msgid "Select Virtual Method"
-msgstr ""
+msgstr "Вибір віртуального методу"
#: editor/property_selector.cpp
msgid "Select Method"
-msgstr ""
+msgstr "Вибір методу"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
-msgstr ""
+msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ інÑтрумент PVRTC:"
#: editor/pvrtc_compress.cpp
msgid "Can't load back converted image using PVRTC tool:"
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ перетворене Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою заÑобу PVRTC:"
#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
msgid "Reparent Node"
-msgstr ""
+msgstr "Змінити батьківÑький вузол"
#: editor/reparent_dialog.cpp
msgid "Reparent Location (Select new Parent):"
-msgstr ""
+msgstr "Змінити Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ (вибрати новий батьківÑький вузол):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
-msgstr ""
+msgstr "Зберегти загальне перетвореннÑ"
#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
msgid "Reparent"
-msgstr ""
+msgstr "Змінити батьківÑький"
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
-msgstr ""
+msgstr "Режим виконаннÑ:"
#: editor/run_settings_dialog.cpp
msgid "Current Scene"
@@ -6513,15 +6597,15 @@ msgstr "Поточна Ñцена"
#: editor/run_settings_dialog.cpp
msgid "Main Scene"
-msgstr ""
+msgstr "Головна Ñцена"
#: editor/run_settings_dialog.cpp
msgid "Main Scene Arguments:"
-msgstr ""
+msgstr "Ðргументи головної Ñцени:"
#: editor/run_settings_dialog.cpp
msgid "Scene Run Settings"
-msgstr ""
+msgstr "Параметри запуÑку Ñцени"
#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
#: scene/gui/dialogs.cpp
@@ -6530,53 +6614,51 @@ msgstr "Гаразд"
#: editor/scene_tree_dock.cpp
msgid "No parent to instance the scenes at."
-msgstr ""
+msgstr "Ðемає батьківÑького вузла, на Ñкому заÑновано Ñцени."
#: editor/scene_tree_dock.cpp
msgid "Error loading scene from %s"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Гаразд"
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити Ñцену з %s"
#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
msgstr ""
+"Ðе можна Ñтворити екземплÑÑ€ Ñцени «%s», оÑкільки поточна Ñцена Ñ–Ñнує у "
+"одному з її вузлів."
#: editor/scene_tree_dock.cpp
msgid "Instance Scene(s)"
-msgstr ""
+msgstr "Сцени екземплÑра"
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on the tree root."
-msgstr ""
+msgstr "Цю операцію не може бути виконано над коренем дерева."
#: editor/scene_tree_dock.cpp
msgid "Move Node In Parent"
-msgstr ""
+msgstr "ПереÑунути вузол у батьківÑький"
#: editor/scene_tree_dock.cpp
msgid "Move Nodes In Parent"
-msgstr ""
+msgstr "ПереÑунути вузли у батьківÑький"
#: editor/scene_tree_dock.cpp
msgid "Duplicate Node(s)"
-msgstr ""
+msgstr "Дублювати вузли"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)?"
-msgstr ""
+msgstr "Вилучити вузли?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "Ðе можна виконувати із кореневим вузлом."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
-msgstr ""
+msgstr "Цю дію не можна виконувати над Ñценами з екземплÑрами."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As.."
@@ -6584,37 +6666,39 @@ msgstr "Зберегти нову Ñцену Ñк..."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
-msgstr ""
+msgstr "Редагований дочірній елемент"
#: editor/scene_tree_dock.cpp
msgid "Load As Placeholder"
-msgstr ""
+msgstr "Завантажити Ñк заповнювач"
#: editor/scene_tree_dock.cpp
msgid "Discard Instancing"
-msgstr ""
+msgstr "Відкинути екземплÑри"
#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
-msgstr ""
+msgstr "У цьому Ñ” ÑенÑ!"
#: editor/scene_tree_dock.cpp
msgid "Can't operate on nodes from a foreign scene!"
-msgstr ""
+msgstr "Ðе можна працювати із вузлами зі Ñторонньої Ñцени!"
#: editor/scene_tree_dock.cpp
msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
+msgstr "Ðе можна працювати з вузлами, Ñпадкоємцем Ñких Ñ” поточна Ñцена!"
#: editor/scene_tree_dock.cpp
msgid "Remove Node(s)"
-msgstr ""
+msgstr "Вилучити вузли"
#: editor/scene_tree_dock.cpp
msgid ""
"Couldn't save new scene. Likely dependencies (instances) couldn't be "
"satisfied."
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ нову Ñцену. Ймовірно, залежноÑті (екземплÑри) не "
+"задоволено."
#: editor/scene_tree_dock.cpp
msgid "Error saving scene."
@@ -6622,15 +6706,15 @@ msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñцени."
#: editor/scene_tree_dock.cpp
msgid "Error duplicating scene to save it."
-msgstr ""
+msgstr "Помилка під Ñ‡Ð°Ñ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñцени Ð´Ð»Ñ Ñ—Ñ— збереженнÑ."
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+msgid "Sub-Resources"
+msgstr "ПідреÑурÑи"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
-msgstr ""
+msgstr "УÑунути уÑпадкуваннÑ"
#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
msgid "Open in Editor"
@@ -6638,35 +6722,35 @@ msgstr "Відкрити в редакторі"
#: editor/scene_tree_dock.cpp
msgid "Delete Node(s)"
-msgstr ""
+msgstr "Вилучити вузли"
#: editor/scene_tree_dock.cpp
msgid "Add Child Node"
-msgstr ""
+msgstr "Додати дочірній вузол"
#: editor/scene_tree_dock.cpp
msgid "Instance Child Scene"
-msgstr ""
+msgstr "Створити екземплÑÑ€ дочірньої Ñцени"
#: editor/scene_tree_dock.cpp
msgid "Change Type"
-msgstr ""
+msgstr "Змінити тип"
#: editor/scene_tree_dock.cpp
msgid "Attach Script"
-msgstr ""
+msgstr "Долучити Ñкрипт"
#: editor/scene_tree_dock.cpp
msgid "Clear Script"
-msgstr ""
+msgstr "Вилучити Ñкрипт"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
-msgstr ""
+msgstr "Об'єднати зі Ñцени"
#: editor/scene_tree_dock.cpp
msgid "Save Branch as Scene"
-msgstr ""
+msgstr "Зберегти гілку Ñк Ñцену"
#: editor/scene_tree_dock.cpp
msgid "Copy Node Path"
@@ -6674,79 +6758,87 @@ msgstr "Копіювати вузол шлÑху"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
-msgstr ""
+msgstr "Вилучити (без підтвердженнÑ)"
#: editor/scene_tree_dock.cpp
msgid "Add/Create a New Node"
-msgstr ""
+msgstr "Додати або Ñтворити новий вузол"
#: editor/scene_tree_dock.cpp
msgid ""
"Instance a scene file as a Node. Creates an inherited scene if no root node "
"exists."
msgstr ""
+"Створити екземплÑÑ€ файла Ñцени Ñк вузол. Створює уÑпадковану Ñцену, Ñкщо "
+"кореневого вузла не Ñ–Ñнує."
#: editor/scene_tree_dock.cpp
msgid "Filter nodes"
-msgstr ""
+msgstr "Фільтрувати вузли"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
-msgstr ""
+msgstr "Долучити новий або наÑвний Ñкрипт до позначеного вузла."
#: editor/scene_tree_dock.cpp
msgid "Clear a script for the selected node."
-msgstr ""
+msgstr "Вилучити Ñкрипт Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ вузла."
#: editor/scene_tree_dock.cpp
msgid "Remote"
-msgstr ""
+msgstr "Віддалений"
#: editor/scene_tree_dock.cpp
msgid "Local"
-msgstr ""
+msgstr "Локальний"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance? (No Undo!)"
-msgstr ""
+msgstr "Вилучити уÑпадковуваннÑ? (Без можливоÑті ÑкаÑувати!)"
#: editor/scene_tree_dock.cpp
msgid "Clear!"
-msgstr ""
+msgstr "Вилучено!"
#: editor/scene_tree_editor.cpp
msgid "Toggle Spatial Visible"
-msgstr ""
+msgstr "Перемкнути проÑторову видиміÑть"
#: editor/scene_tree_editor.cpp
msgid "Toggle CanvasItem Visible"
-msgstr ""
+msgstr "Перемкнути видиміÑть CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ð°:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Вузол міÑтить з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ– групи\n"
+"Клацніть, щоб переглÑнути панель Ñигналів."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Вузол міÑтить з'єднаннÑ\n"
+"Клацніть, щоб переглÑнути панель Ñигналів."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"Вузол належить групам.\n"
+"Клацніть, щоб переглÑнути панель груп."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
-msgstr ""
+msgstr "ЕкземплÑÑ€:"
#: editor/scene_tree_editor.cpp
msgid "Open script"
@@ -6765,14 +6857,16 @@ msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Дочірні об'єкти не можна позначити.\n"
+"Клацніть, щоб зробити Ñ—Ñ… придатними до позначеннÑ"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
-msgstr ""
+msgstr "Перемкнути видиміÑть"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
-msgstr ""
+msgstr "Ðекоректна назва вузла. Ðе можна викориÑтовувати такі Ñимволи:"
#: editor/scene_tree_editor.cpp
msgid "Rename Node"
@@ -6780,11 +6874,11 @@ msgstr "Перейменувати вузол"
#: editor/scene_tree_editor.cpp
msgid "Scene Tree (Nodes):"
-msgstr ""
+msgstr "Дерево Ñцени (вузли):"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ñ–Ð²!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -6792,15 +6886,15 @@ msgstr "Виберіть вузол"
#: editor/script_create_dialog.cpp
msgid "Error loading template '%s'"
-msgstr ""
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити шаблон «%s»"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
-msgstr ""
+msgstr "Помилка: не вдалоÑÑ Ñтворити Ñкрипт у файловій ÑиÑтемі."
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
-msgstr ""
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби завантажити Ñкрипт з %s"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -6808,31 +6902,31 @@ msgstr "Ð/З"
#: editor/script_create_dialog.cpp
msgid "Path is empty"
-msgstr ""
+msgstr "Порожній шлÑÑ…"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
-msgstr ""
+msgstr "ШлÑÑ… не Ñ” локальним"
#: editor/script_create_dialog.cpp
msgid "Invalid base path"
-msgstr ""
+msgstr "Ðекоректний базовий шлÑÑ…"
#: editor/script_create_dialog.cpp
msgid "Directory of the same name exists"
-msgstr ""
+msgstr "Каталог із такою назвою вже Ñ–Ñнує"
#: editor/script_create_dialog.cpp
msgid "File exists, will be reused"
-msgstr ""
+msgstr "Файл вже Ñ–Ñнує, його буде викориÑтано повторно"
#: editor/script_create_dialog.cpp
msgid "Invalid extension"
-msgstr ""
+msgstr "Ðекоректний ÑуфікÑ"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Вибрано некоректний ÑуфікÑ"
#: editor/script_create_dialog.cpp
msgid "Invalid Path"
@@ -6840,23 +6934,23 @@ msgstr "Ðеправильний шлÑÑ…"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
-msgstr ""
+msgstr "Ðекоректна назва клаÑу"
#: editor/script_create_dialog.cpp
msgid "Invalid inherited parent name or path"
-msgstr ""
+msgstr "Ðекоректна назва або шлÑÑ… до уÑпадкованого батьківÑького елемента"
#: editor/script_create_dialog.cpp
msgid "Script valid"
-msgstr ""
+msgstr "Скрипт є коректним"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "Можна викориÑтовувати: a-z, A-Z, 0-9 Ñ– _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Вбудований (до файла Ñцени) Ñкрипт"
#: editor/script_create_dialog.cpp
msgid "Create new script file"
@@ -6872,31 +6966,31 @@ msgstr "Мова"
#: editor/script_create_dialog.cpp
msgid "Inherits"
-msgstr ""
+msgstr "УÑпадковує"
#: editor/script_create_dialog.cpp
msgid "Class Name"
-msgstr ""
+msgstr "Ðазва клаÑу"
#: editor/script_create_dialog.cpp
msgid "Template"
-msgstr ""
+msgstr "Шаблон"
#: editor/script_create_dialog.cpp
msgid "Built-in Script"
-msgstr ""
+msgstr "Вбудований Ñкрипт"
#: editor/script_create_dialog.cpp
msgid "Attach Node Script"
-msgstr ""
+msgstr "Долучити Ñкрипт вузла"
#: editor/script_editor_debugger.cpp
msgid "Remote "
-msgstr ""
+msgstr "Віддалений "
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
-msgstr ""
+msgstr "Байтів:"
#: editor/script_editor_debugger.cpp
msgid "Warning"
@@ -6916,27 +7010,31 @@ msgstr "ФункціÑ:"
#: editor/script_editor_debugger.cpp
msgid "Pick one or more items from the list to display the graph."
-msgstr ""
+msgstr "Виберіть один або декілька пунктів зі ÑпиÑку Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду графу."
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "Помилки"
#: editor/script_editor_debugger.cpp
msgid "Child Process Connected"
-msgstr ""
+msgstr "З'єднано дочірній процеÑ"
+
+#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "Помилка копіюваннÑ"
#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
-msgstr ""
+msgstr "ІнÑпектувати попередній екземплÑÑ€"
#: editor/script_editor_debugger.cpp
msgid "Inspect Next Instance"
-msgstr ""
+msgstr "ІнÑпектувати наÑтупний екземплÑÑ€"
#: editor/script_editor_debugger.cpp
msgid "Stack Frames"
-msgstr ""
+msgstr "СтоÑувати кадри"
#: editor/script_editor_debugger.cpp
msgid "Variable"
@@ -6948,91 +7046,91 @@ msgstr "Помилки:"
#: editor/script_editor_debugger.cpp
msgid "Stack Trace (if applicable):"
-msgstr ""
+msgstr "ТраÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтека (Ñкщо заÑтоÑовне):"
#: editor/script_editor_debugger.cpp
msgid "Profiler"
-msgstr ""
+msgstr "ЗаÑіб профілюваннÑ"
#: editor/script_editor_debugger.cpp
msgid "Monitor"
-msgstr ""
+msgstr "Монітор"
#: editor/script_editor_debugger.cpp
msgid "Value"
-msgstr ""
+msgstr "ЗначеннÑ"
#: editor/script_editor_debugger.cpp
msgid "Monitors"
-msgstr ""
+msgstr "Монітори"
#: editor/script_editor_debugger.cpp
msgid "List of Video Memory Usage by Resource:"
-msgstr ""
+msgstr "СпиÑок викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾Ð¿Ð°Ð¼'Ñті за реÑурÑами:"
#: editor/script_editor_debugger.cpp
msgid "Total:"
-msgstr ""
+msgstr "Загалом:"
#: editor/script_editor_debugger.cpp
msgid "Video Mem"
-msgstr ""
+msgstr "Відеопам'Ñть"
#: editor/script_editor_debugger.cpp
msgid "Resource Path"
-msgstr ""
+msgstr "ШлÑÑ… до реÑурÑу"
#: editor/script_editor_debugger.cpp
msgid "Type"
-msgstr ""
+msgstr "Тип"
#: editor/script_editor_debugger.cpp
msgid "Format"
-msgstr ""
+msgstr "Формат"
#: editor/script_editor_debugger.cpp
msgid "Usage"
-msgstr ""
+msgstr "ВикориÑтаннÑ"
#: editor/script_editor_debugger.cpp
msgid "Misc"
-msgstr ""
+msgstr "Інше"
#: editor/script_editor_debugger.cpp
msgid "Clicked Control:"
-msgstr ""
+msgstr "ÐатиÑнутий елемент керуваннÑ:"
#: editor/script_editor_debugger.cpp
msgid "Clicked Control Type:"
-msgstr ""
+msgstr "ÐатиÑнутий тип керуваннÑ:"
#: editor/script_editor_debugger.cpp
msgid "Live Edit Root:"
-msgstr ""
+msgstr "Корінь інтерактивного редагуваннÑ:"
#: editor/script_editor_debugger.cpp
msgid "Set From Tree"
-msgstr ""
+msgstr "Ð’Ñтановити з дерева"
#: editor/settings_config_dialog.cpp
msgid "Shortcuts"
-msgstr ""
+msgstr "Клавіатурні ÑкороченнÑ"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "Палітурка"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
-msgstr ""
+msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ð¾ÑвітленнÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Змінити кут Ð²Ð¸Ð¿Ñ€Ð¾Ð¼Ñ–Ð½ÑŽÐ²Ð°Ð½Ð½Ñ AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
-msgstr ""
+msgstr "Змінити поле зору камери"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera Size"
@@ -7040,74 +7138,71 @@ msgstr "Змінити розмір камери"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Sphere Shape Radius"
-msgstr ""
+msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñферичної форми"
#: editor/spatial_editor_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 Ray Shape Length"
-msgstr ""
+msgstr "Змінити довжину форми променÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier Extents"
-msgstr ""
+msgstr "Змінити розміри заÑобу ÑповіщеннÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Змінити AABB чаÑток"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
-msgstr ""
+msgstr "Змінити розміри зонду"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "Виберіть динамічну бібліотеку Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ запиÑу"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "Виберіть залежноÑті бібліотеки Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ запиÑу"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "Видалити точку кривої"
+msgstr "Видалити поточне поле"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "Двічі клацніть Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ запиÑу"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "Платформа:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform"
-msgstr ""
+msgstr "Платформа"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "Бібліотека"
+msgstr "Динамічна бібліотека"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "Додати Ð·Ð°Ð¿Ð¸Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "Бібліотека"
+msgstr "Бібліотека GDNative"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
msgid "Library"
@@ -7123,25 +7218,26 @@ msgstr "Бібліотеки: "
#: modules/gdnative/register_types.cpp
msgid "GDNative"
-msgstr ""
+msgstr "GD Native"
#: modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
+"Ðекоректний аргумент типу у convert(), Ñлід викориÑтовувати Ñталі TYPE_*."
#: modules/gdscript/gdscript_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
-msgstr ""
+msgstr "ÐедоÑтатньо байтів Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ вказано некоректний формат."
#: modules/gdscript/gdscript_functions.cpp
msgid "step argument is zero!"
-msgstr ""
+msgstr "аргумент кроку дорівнює нулеві!"
#: modules/gdscript/gdscript_functions.cpp
msgid "Not a script with an instance"
-msgstr ""
+msgstr "Ðе Ñкрипт з екземплÑром"
#: modules/gdscript/gdscript_functions.cpp
msgid "Not based on a script"
@@ -7153,181 +7249,229 @@ msgstr "Ðе заÑнований на файлі реÑурÑів"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
-msgstr ""
+msgstr "Ðекоректний формат Ñловника екземплÑра (пропущено @path)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary format (can't load script at @path)"
msgstr ""
+"Ðекоректний формат Ñловника екземплÑра (не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñкрипт у "
+"@path)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary format (invalid script at @path)"
-msgstr ""
+msgstr "Ðекоректний формат Ñловника екземплÑра (некоректний Ñкрипт у @path)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
+msgstr "Ðекоректний Ñловник екземплÑра (некоректні підклаÑи)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Об'єкт не може надавати довжину."
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Delete Selection"
-msgstr ""
+msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Duplicate Selection"
-msgstr ""
+msgstr "Ð”ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Floor:"
-msgstr ""
+msgstr "Поверх:"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
-msgstr ""
+msgstr "Карта Ñітки"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
-msgstr ""
+msgstr "Миттєвий переглÑд"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Previous Floor"
-msgstr ""
+msgstr "Попередній поверх"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
-msgstr ""
+msgstr "ÐаÑтупний поверх"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Disabled"
-msgstr ""
+msgstr "ÐžÐ±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Обрізати вище"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Обрізати нижче"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Редагувати віÑÑŒ X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Редагувати віÑÑŒ Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Редагувати віÑÑŒ Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate X"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Y"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Z"
-msgstr ""
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Зворотне Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° навколо Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "ЗнÑти Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· вказівника"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Create Area"
-msgstr ""
+msgstr "Створити облаÑть"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Create Exterior Connector"
-msgstr ""
+msgstr "Створити зовнішнє з'єднаннÑ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Erase Area"
-msgstr ""
+msgstr "Витерти облаÑть"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clear Selection"
-msgstr "ОчиÑтити виділене"
+msgstr "ОчиÑтити позначене"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Settings"
-msgstr ""
+msgstr "Параметри GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Pick Distance:"
-msgstr ""
+msgstr "ВідÑтань вибору:"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð²'Ñзку..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "Створюємо проект C#..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "Ðе вдалоÑÑ Ñтворити розв'Ñзок."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ розв'Ñзок."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "Зроблено"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "Ðе вдалоÑÑ Ñтворити проект C#."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Моно"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "Створити розв'Ñзок C#"
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
-msgstr ""
+msgstr "ЗбираннÑ"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "Зібрати проект"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "ПопередженнÑ"
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
"properly!"
msgstr ""
+"Вузол відпрацював без робочої пам'Ñті. Будь лаÑка, ознайомтеÑÑ Ñ–Ð· "
+"документацією щодо правильного ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²ÑƒÐ·Ð»Ñ–Ð²!"
#: modules/visual_script/visual_script.cpp
msgid ""
"Node yielded, but did not return a function state in the first working "
"memory."
msgstr ""
+"Вузол відпрацював, але не повернув Ñтану функції у першій робочій пам'Ñті."
#: modules/visual_script/visual_script.cpp
msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
msgstr ""
+"Повернуте Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°Ñ” бути пов'Ñзано із першим елементом у робочій пам'Ñті "
+"вузла! Будь лаÑка, виправте ваш вузол."
#: modules/visual_script/visual_script.cpp
msgid "Node returned an invalid sequence output: "
-msgstr ""
+msgstr "Вузлом повернуто некоректну поÑлідовніÑть даних: "
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
msgstr ""
+"ВиÑвлено біт поÑлідовноÑті, але не вузол у Ñтеку. Повідомте про цю ваду!"
#: modules/visual_script/visual_script.cpp
msgid "Stack overflow with stack depth: "
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтека, глибина Ñтека: "
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
-msgstr ""
+msgstr "Змірити аргументи Ñигналу"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument Type"
-msgstr ""
+msgstr "Змінити тип аргументу"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Argument name"
-msgstr ""
+msgstr "Змінити назву аргументу"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Default Value"
-msgstr ""
+msgstr "Ð’Ñтановити типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—"
#: modules/visual_script/visual_script_editor.cpp
msgid "Set Variable Type"
-msgstr ""
+msgstr "Ð’Ñтановити тип змінної"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7339,11 +7483,11 @@ msgstr "Змінні:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name is not a valid identifier:"
-msgstr ""
+msgstr "Ðазва не Ñ” коректним ідентифікатором:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
-msgstr ""
+msgstr "Ðазва вже викориÑтовуєтьÑÑ Ñ–Ð½ÑˆÐ¾ÑŽ функцією, змінною чи Ñигналом:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Function"
@@ -7379,35 +7523,39 @@ msgstr "Додати вузол"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove VisualScript Nodes"
-msgstr ""
+msgstr "Вилучити вузли VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Duplicate VisualScript Nodes"
-msgstr ""
+msgstr "Дублювати вузли VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"Утримуйте натиÑнутою %s, щоб Ñкинути отримувач. Утримуйте натиÑнутою Shift, "
+"щоб Ñкинути Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð´Ð¶ÐµÐ½ÐµÑ€Ñ–ÐºÐ°."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr ""
+"Утримуйте натиÑнутою Ctrl, щоб Ñкинути отримувач. Утримуйте натиÑнутою "
+"Shift, щоб Ñкинути Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð´Ð¶ÐµÐ½ÐµÑ€Ñ–ÐºÐ°."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a simple reference to the node."
-msgstr ""
+msgstr "Утримуйте натиÑнутою %s, щоб Ñкинути проÑте поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вузол."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a simple reference to the node."
-msgstr ""
+msgstr "Утримуйте натиÑнутою Ctrl, щоб Ñкинути проÑте поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° вузол."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold %s to drop a Variable Setter."
-msgstr ""
+msgstr "Утримуйте натиÑнутою %s, щоб Ñкинути вÑтановлювач змінної."
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Variable Setter."
-msgstr ""
+msgstr "Утримуйте натиÑнутою Ctrl, щоб Ñкинути вÑтановлювач змінної."
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Preload Node"
@@ -7415,15 +7563,15 @@ msgstr "Додати попередньо завантажений вузол"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
-msgstr ""
+msgstr "Додати вузли з дерева"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Getter Property"
-msgstr ""
+msgstr "Додати влаÑтивіÑть отримувача"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Setter Property"
-msgstr ""
+msgstr "Додати влаÑтивіÑть вÑтановлювача"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Base Type"
@@ -7431,11 +7579,11 @@ msgstr "Змінити базовий тип"
#: modules/visual_script/visual_script_editor.cpp
msgid "Move Node(s)"
-msgstr ""
+msgstr "ПереÑунути вузли"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove VisualScript Node"
-msgstr ""
+msgstr "Вилучити вузол VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Connect Nodes"
@@ -7443,11 +7591,11 @@ msgstr "Приєднати вузли"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
-msgstr ""
+msgstr "Умова"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
-msgstr ""
+msgstr "ПоÑлідовніÑть"
#: modules/visual_script/visual_script_editor.cpp
msgid "Switch"
@@ -7475,7 +7623,7 @@ msgstr "Отримати"
#: modules/visual_script/visual_script_editor.cpp
msgid "Script already has function '%s'"
-msgstr ""
+msgstr "Скрипт уже має функцію '%s'"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
@@ -7487,11 +7635,11 @@ msgstr "Ðеможливо Ñкопіювати вузол функції."
#: modules/visual_script/visual_script_editor.cpp
msgid "Clipboard is empty!"
-msgstr ""
+msgstr "Буфер обміну порожній!"
#: modules/visual_script/visual_script_editor.cpp
msgid "Paste VisualScript Nodes"
-msgstr ""
+msgstr "Ð’Ñтавити вузли (Візуального Ñкриптингу) VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
@@ -7587,7 +7735,7 @@ msgstr "ШлÑÑ… не веде до вузла!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr ""
+msgstr "Ðекоректна назва влаÑтивоÑті індекÑу, «%s», у вузлі %s."
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -7599,21 +7747,23 @@ msgstr ": ÐеприпуÑтимі аргументи: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
-msgstr ""
+msgstr "Ðе знайдено VariableGet у Ñкрипті: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableSet not found in script: "
-msgstr ""
+msgstr "Ðе знайдено VariableSet у Ñкрипті: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
+msgstr "У нетиповому вузлі немає методу _step(). Обробка графу неможлива."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
+"_step() повертає некоректне значеннÑ. ЗначеннÑм має бути ціле чиÑло (seq "
+"out) або Ñ€Ñдок (error)."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -7624,36 +7774,55 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Виконати екÑпортований HTML у браузері за умовчаннÑм ÑиÑтеми."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:\n"
+msgid "Could not write file:"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:\n"
+msgid "Invalid export template:"
+msgstr "Ðеправильний шаблон екÑпорту:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "Ðеправильний шаблон екÑпорту:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñпеціальну оболонку HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñпеціальну оболонку HTML:\n"
+msgid "Could not read boot splash image file:"
+msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
-msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:\n"
+msgid "Using default boot splash image."
+msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ файлу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки."
#: scene/2d/animated_sprite.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
"order for AnimatedSprite to display frames."
msgstr ""
+"Щоб AnimatedSprite могла показувати кадри, має бути Ñтворено або вÑтановлено "
+"у влаÑтивоÑті «Frames» реÑÑƒÑ€Ñ SpriteFrames."
#: scene/2d/canvas_modulate.cpp
msgid ""
"Only one visible CanvasModulate is allowed per scene (or set of instanced "
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+"У Ñцені (або наборі екземплÑрів Ñцен) може бути лише один видимий "
+"CanvasModulate. Працюватиме перший зі Ñтворених, решту буде проігноровано."
+
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"У цього вузла немає дочірніх форм, отже він не може взаємодіÑти із "
+"проÑтором.\n"
+"Спробуйте додати дочірні вузли CollisionShape2D або CollisionPolygon2D Ð´Ð»Ñ "
+"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ форми."
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -7661,10 +7830,13 @@ msgid ""
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
+"CollisionPolygon2D призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному "
+"вузлу CollisionObject2D. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент "
+"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D тощо, щоб надати їм форми."
#: scene/2d/collision_polygon_2d.cpp
msgid "An empty CollisionPolygon2D has no effect on collision."
-msgstr ""
+msgstr "Порожній CollisionPolygon2D ніÑк не вплине на зіткненнÑ."
#: scene/2d/collision_shape_2d.cpp
msgid ""
@@ -7672,118 +7844,155 @@ msgid ""
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
+"CollisionShape2D призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному "
+"вузлу CollisionObject2D. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент "
+"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D тощо, щоб надати їм форми."
#: scene/2d/collision_shape_2d.cpp
msgid ""
"A shape must be provided for CollisionShape2D to function. Please create a "
"shape resource for it!"
msgstr ""
+"Ð”Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾Ñті CollisionShape2D Ñлід надати форму. Будь "
+"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!"
#: scene/2d/light_2d.cpp
msgid ""
"A texture with the shape of the light must be supplied to the 'texture' "
"property."
-msgstr ""
+msgstr "Ð”Ð»Ñ Ð²Ð»Ð°ÑтивоÑті «texture» Ñлід надати текÑтуру із формою оÑвітленнÑ."
#: scene/2d/light_occluder_2d.cpp
msgid ""
"An occluder polygon must be set (or drawn) for this occluder to take effect."
msgstr ""
+"Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб ефект затулÑÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð², Ñлід вÑтановити (або намалювати) "
+"багатокутник затулÑннÑ."
#: scene/2d/light_occluder_2d.cpp
msgid "The occluder polygon for this occluder is empty. Please draw a polygon!"
msgstr ""
+"Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ затулÑÐ½Ð½Ñ Ð±Ð°Ð³Ð°Ñ‚Ð¾ÐºÑƒÑ‚Ð½Ð¸Ðº Ñ” порожнім. Будь лаÑка, намалюйте "
+"багатокутник!"
#: scene/2d/navigation_polygon.cpp
msgid ""
"A NavigationPolygon resource must be set or created for this node to work. "
"Please set a property or draw a polygon."
msgstr ""
+"Щоб забезпечити працездатніÑть цього вузла, Ñлід вÑтановити або Ñтворити "
+"реÑÑƒÑ€Ñ NavigationPolygon. Будь лаÑка, вÑтановіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті або "
+"намалюйте багатокутник."
#: scene/2d/navigation_polygon.cpp
msgid ""
"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
"node. It only provides navigation data."
msgstr ""
+"NavigationPolygonInstance має бути дочірнім елементом вузла Navigation2D або "
+"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані."
#: scene/2d/parallax_layer.cpp
msgid ""
"ParallaxLayer node only works when set as child of a ParallaxBackground node."
msgstr ""
+"Вузол ParallaxLayer працює, лише Ñкщо його вÑтановлено Ñк дочірній Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð° "
+"ParallaxBackground."
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Ðе визначено матеріалу Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ чаÑток, тому ніÑкої поведінки не "
+"відтворюватиметьÑÑ."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr ""
+msgstr "PathFollow2D працюватиме лише Ñк дочірній елемент вузла Path2D."
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Зміни розмірів RigidBody2D (у режимах character або rigid) буде "
+"перевизначено фізичним рушієм під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
+"ЗаміÑть цієї зміни, вам варто змінити розміри дочірніх форм зіткненнÑ."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr ""
+"Щоб уÑе працювало Ñк Ñлід, влаÑтивіÑть шлÑху (path) має вказувати на "
+"коректний вузол Node2D."
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
"VisibilityEnable2D works best when used with the edited scene root directly "
"as parent."
msgstr ""
+"VisibilityEnable2D найкраще працюватиме, Ñкщо його викориÑтано із "
+"безпоÑереднім батьківÑьким елементом — редагованим коренем Ñцени."
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera повинен мати батьківÑьким вузлом вузол ARVROrigin"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController повинен мати батьківÑьким вузлом вузол ARVROrigin"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"Ідентифікатором контролера має бути значеннÑ, Ñке Ñ” відмінним від 0, інакше "
+"цей контролер не буде пов'Ñзано із Ñправжнім елементом керуваннÑ"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor повинен мати батьківÑьким вузлом вузол ARVROrigin"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The anchor id must not be 0 or this anchor will not be bound to an actual "
"anchor"
msgstr ""
+"Ідентифікатором прив'Ñзки має бути значеннÑ, Ñке Ñ” відмінним від 0, інакше "
+"цю прив'Ñзку не буде пов'Ñзано із Ñправжньою прив'Ñзкою"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin повинен мати дочірній вузол ARVRCamera"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Meshes: "
-msgstr "Побудова Ñітки"
+msgstr "Побудова Ñітки: "
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Plotting Lights:"
-msgstr "Побудова Ñітки"
+msgstr "Побудова Ñвітла:"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Finishing Plot"
msgstr "Завершальна ділÑнка"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Lighting Meshes: "
-msgstr "Побудова Ñітки"
+msgstr "ОÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ Ñітки: "
+
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"У цього вузла немає дочірніх форм, отже він не може взаємодіÑти із "
+"проÑтором.\n"
+"Спробуйте додати дочірні вузли CollisionShape або CollisionPolygon Ð´Ð»Ñ "
+"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ форми."
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7791,10 +8000,13 @@ msgid ""
"CollisionObject derived node. Please only use it as a child of Area, "
"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
msgstr ""
+"CollisionPolygon призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному "
+"вузлу CollisionObject. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент "
+"Area, StaticBody, RigidBody, KinematicBody тощо, щоб надати їм форми."
#: scene/3d/collision_polygon.cpp
msgid "An empty CollisionPolygon has no effect on collision."
-msgstr ""
+msgstr "Порожній CollisionPolygon ніÑк не вплине на зіткненнÑ."
#: scene/3d/collision_shape.cpp
msgid ""
@@ -7802,12 +8014,17 @@ msgid ""
"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
"KinematicBody, etc. to give them a shape."
msgstr ""
+"CollisionShape призначено лише Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ похідному "
+"вузлу CollisionObject. Будь лаÑка, викориÑтовуйте його Ñк дочірній елемент "
+"Area, StaticBody, RigidBody, KinematicBody тощо, щоб надати їм форми."
#: scene/3d/collision_shape.cpp
msgid ""
"A shape must be provided for CollisionShape to function. Please create a "
"shape resource for it!"
msgstr ""
+"Ð”Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾Ñті CollisionShape Ñлід надати форму. Будь "
+"лаÑка, Ñтворіть реÑÑƒÑ€Ñ Ñ„Ð¾Ñ€Ð¼Ð¸ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ елемента!"
#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
@@ -7824,39 +8041,53 @@ msgid ""
"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
"It only provides navigation data."
msgstr ""
+"NavigationMeshInstance має бути дочірнім елементом вузла Navigation або "
+"елементом ще нижчої підпорÑдкованоÑті. Він надає лише навігаційні дані."
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Ðічого не видно, оÑкільки Ñітки не було пов'Ñзано із проходами малюваннÑ."
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Зміни розмірів RigidBody (у режимах character або rigid) буде перевизначено "
+"фізичним рушієм під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸.\n"
+"ЗаміÑть цієї зміни, вам варто змінити розміри дочірніх форм зіткненнÑ."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
msgstr ""
+"Щоб уÑе працювало Ñк Ñлід, влаÑтивіÑть шлÑху (path) має вказувати на "
+"коректний вузол Spatial."
#: scene/3d/scenario_fx.cpp
msgid ""
"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
msgstr ""
+"У Ñцені (або наборі екземплÑрів Ñцен) може бути лише один елемент "
+"WorldEnvironment."
#: scene/3d/sprite_3d.cpp
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
"order for AnimatedSprite3D to display frames."
msgstr ""
+"Щоб AnimatedSprite могла показувати кадри, має бути Ñтворено або вÑтановлено "
+"у влаÑтивоÑті «Frames» реÑÑƒÑ€Ñ SpriteFrames."
#: scene/3d/vehicle_body.cpp
msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
+"VehicleWheel Ñлугує Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ ÑиÑтеми ÐºÐ¾Ð»Ñ–Ñ Ñƒ VehicleBody. "
+"Будь лаÑка, викориÑтовуйте цей елемент Ñк дочірній елемент вузла VehicleBody."
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
@@ -7864,15 +8095,15 @@ msgstr "Raw (Ñирий) режим"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Додати поточний колір в ÑкоÑті преÑету"
#: scene/gui/dialogs.cpp
msgid "Alert!"
-msgstr "СповіщеннÑ!"
+msgstr "Увага!"
#: scene/gui/dialogs.cpp
msgid "Please Confirm..."
-msgstr "Будь-лаÑка підтвердіть..."
+msgstr "Будь лаÑка, підтвердьте..."
#: scene/gui/file_dialog.cpp
msgid "Select this Folder"
@@ -7884,6 +8115,9 @@ msgid ""
"functions. Making them visible for editing is fine though, but they will "
"hide upon running."
msgstr ""
+"КонтекÑтні підказки типово буде приховано, Ñкщо ви не викличете popup() або "
+"ÑкуÑÑŒ із функцій popup*(). Втім, робити Ñ—Ñ… видимими Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ â€” звична "
+"практика. Втім, Ñлід пам'Ñтати, що під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку Ñ—Ñ… буде приховано."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -7891,6 +8125,10 @@ msgid ""
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"ScrollContainer призначено Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ із одинарним дочірнім заÑобом "
+"керуваннÑ.\n"
+"СкориÑтайтеÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð¾Ð¼ Ñк дочірнім об'єктом (VBox, HBox тощо) або вузлом "
+"Control Ñ– вÑтановіть нетиповий мінімальний розмір вручну."
#: scene/gui/tree.cpp
msgid "(Other)"
@@ -7898,9 +8136,11 @@ msgstr "(Інші)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ типове Ñередовище, Ñк його визначено у параметрах "
+"проекту (Обробка -> Середовище -> Типове Ñередовище)."
#: scene/main/viewport.cpp
msgid ""
@@ -7909,6 +8149,10 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
+"Ð¦Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ показу не Ñ” ціллю обробки зображеннÑ. Якщо ви хочете, щоб Ñ—Ñ— вміÑÑ‚ "
+"було безпоÑередньо показано на екрані, зробіть Ñ—Ñ— дочірньою Ð´Ð»Ñ Ð²ÑƒÐ·Ð»Ð° "
+"Control, щоб у неї був розмір. Крім того, можна зробити її RenderTarget і "
+"пов'Ñзати Ñ—Ñ— внутрішню текÑтуру з одним із вузлів Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ."
#: scene/resources/dynamic_font.cpp
msgid "Error initializing FreeType."
@@ -7924,7 +8168,28 @@ msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ."
#: scene/resources/dynamic_font.cpp
msgid "Invalid font size."
-msgstr "ÐедійÑний розмір шрифту."
+msgstr "Ðекоректний розмір шрифту."
+
+#~ msgid "Next"
+#~ msgstr "Далі"
+
+#~ msgid "Not found!"
+#~ msgstr "Ðе знайдено!"
+
+#~ msgid "Replace By"
+#~ msgstr "Замінити на"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "ЧутливіÑть регіÑтра"
+
+#~ msgid "Backwards"
+#~ msgstr "Ðазад"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "Запитувати при заміні"
+
+#~ msgid "Skip"
+#~ msgstr "ПропуÑтити"
#~ msgid "Move Add Key"
#~ msgstr "ПоÑунути ключ"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 8876d52ace..9fae520b55 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -197,8 +197,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr ""
@@ -375,14 +374,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -391,47 +382,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -549,6 +508,15 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
#, fuzzy
msgid "Create New %s"
msgstr "سب سکریپشن بنائیں"
@@ -655,7 +623,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -738,8 +706,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -824,7 +792,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1136,7 +1104,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1351,6 +1319,17 @@ msgid "Description"
msgstr "سب سکریپشن بنائیں"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1383,6 +1362,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1394,6 +1377,11 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "سب سکریپشن بنائیں"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1402,8 +1390,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1457,7 +1445,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2011,6 +2000,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2391,7 +2387,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2548,9 +2544,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2558,19 +2552,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3209,6 +3203,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3374,6 +3372,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3679,19 +3678,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4065,7 +4067,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4458,14 +4460,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4542,6 +4546,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4973,83 +4981,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5064,6 +5072,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5137,15 +5149,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5425,10 +5433,18 @@ msgstr "ایکشن منتقل کریں"
msgid "Move (After)"
msgstr "ایکشن منتقل کریں"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5454,14 +5470,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5601,6 +5620,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5702,6 +5725,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5809,9 +5856,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5823,6 +5868,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5864,14 +5918,27 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5888,10 +5955,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5937,6 +6000,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6064,11 +6131,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6448,10 +6510,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6536,7 +6594,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6836,7 +6894,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6845,6 +6903,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7195,10 +7257,51 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "سب سکریپشن بنائیں"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7548,23 +7651,28 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+#, fuzzy
+msgid "Could not write file:"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read boot splash image file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7579,6 +7687,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7647,7 +7762,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7706,6 +7821,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7751,8 +7873,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7817,8 +7939,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7845,8 +7967,5 @@ msgstr ""
msgid "Invalid font size."
msgstr ""
-#~ msgid "Create Subscription"
-#~ msgstr "سب سکریپشن بنائیں"
-
#~ msgid "Samples"
#~ msgstr "نمونے"
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 89b1200f6b..018883dc91 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -3,6 +3,7 @@
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
+# Dlean Jeans <dleanjeans@gmail.com>, 2018.
# Hai Le <dark.hades.1102@gmail.com>, 2017.
# Nguyễn Tuấn Anh <anhnt.fami@gmail.com>, 2017.
# Tung Le <tungkradle@gmail.com>, 2017.
@@ -10,18 +11,17 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-11-25 13:51+0000\n"
-"Last-Translator: Hai Le <dark.hades.1102@gmail.com>\n"
+"PO-Revision-Date: 2018-01-24 12:35+0000\n"
+"Last-Translator: Dlean Jeans <dleanjeans@gmail.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/"
"godot/vi/>\n"
"Language: vi\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Disabled"
msgstr "Tắt"
@@ -30,34 +30,32 @@ msgid "All Selection"
msgstr "Chá»n tất cả"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "Äổi giá trị"
+msgstr "Äổi thá»i gian khung hình"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr ""
+msgstr "Äổi Transition Animation"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr ""
+msgstr "Äổi Transform Animation"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "Äổi giá trị"
+msgstr "Äổi giá trị khung hình"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr ""
+msgstr "Äổi Function Gá»i Animation"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr ""
+msgstr "Thêm Track Animation"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr ""
+msgstr "Nhân đôi Các Key của Animation"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
@@ -73,7 +71,7 @@ msgstr "Xóa Anim Track"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
-msgstr ""
+msgstr "Äặt Transtions thành:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
@@ -106,7 +104,7 @@ msgstr "Xóa phím Anim"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr ""
+msgstr "Nhân đôi lá»±a chá»n"
#: editor/animation_editor.cpp
msgid "Duplicate Transposed"
@@ -163,7 +161,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "In"
-msgstr ""
+msgstr "Trong"
#: editor/animation_editor.cpp
msgid "Out"
@@ -201,8 +199,7 @@ msgstr ""
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "Tạo"
@@ -240,7 +237,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
-msgstr ""
+msgstr "Thêm Track Gá»i Function"
#: editor/animation_editor.cpp
msgid "Animation zoom."
@@ -248,7 +245,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr ""
+msgstr "Äá»™ dài (giây):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
@@ -292,7 +289,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr ""
+msgstr "Tối ưu hóa Animation"
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
@@ -312,7 +309,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
-msgstr ""
+msgstr "Chá»n má»™t AnimationPlayer từ Scene Tree để chỉnh sá»­a animation."
#: editor/animation_editor.cpp
msgid "Key"
@@ -379,14 +376,6 @@ msgid "Replaced %d occurrence(s)."
msgstr ""
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr ""
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr ""
@@ -395,47 +384,15 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr ""
-
-#: editor/code_editor.cpp
-msgid "Backwards"
+msgid "Replace"
msgstr ""
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
+msgid "Replace All"
msgstr ""
#: editor/code_editor.cpp
-msgid "Skip"
+msgid "Selection Only"
msgstr ""
#: editor/code_editor.cpp
@@ -553,9 +510,17 @@ msgid "Signals"
msgstr ""
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "Tạo"
+msgstr "Tạo %s Mới"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -641,7 +606,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp scene/gui/file_dialog.cpp
msgid "Open"
-msgstr ""
+msgstr "Mở"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
@@ -659,7 +624,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -712,7 +677,7 @@ msgstr ""
#: editor/project_export.cpp editor/project_settings_editor.cpp
#: editor/scene_tree_dock.cpp
msgid "Delete"
-msgstr ""
+msgstr "Xóa"
#: editor/dictionary_property_edit.cpp
msgid "Change Dictionary Key"
@@ -728,7 +693,7 @@ msgstr ""
#: editor/editor_about.cpp
msgid "Thanks!"
-msgstr ""
+msgstr "Cảm ơn!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -742,8 +707,8 @@ msgstr ""
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
+#: editor/editor_about.cpp
+msgid "Project Manager "
msgstr ""
#: editor/editor_about.cpp
@@ -828,7 +793,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1135,7 +1100,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1347,6 +1312,17 @@ msgid "Description"
msgstr ""
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1378,6 +1354,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1389,6 +1369,10 @@ msgstr ""
msgid "Clear"
msgstr ""
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1397,8 +1381,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1452,7 +1436,8 @@ msgstr ""
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -1588,7 +1573,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
+msgstr "Scene hiện tại chưa được lưu, hãy lưu nó trước khi chạy."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
@@ -1620,7 +1605,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr ""
+msgstr "Lưu Scene với tên.."
#: editor/editor_node.cpp
msgid "No"
@@ -1632,7 +1617,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "Scene này chưa được lưu. Lưu trước khi chạy?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
@@ -1692,11 +1677,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Lưu thay đổi trong các scene sau trước khi thoát?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
-msgstr ""
+msgstr "Lưu thay đổi trong các scene sau trước khi mở Project Manager?"
#: editor/editor_node.cpp
msgid ""
@@ -1734,6 +1719,8 @@ msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
+"Scene '%s' được load tự động, vì vậy không thể chỉnh sửa.\n"
+"Tạo một scene con để chỉnh sửa."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1797,7 +1784,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Add a new scene."
-msgstr ""
+msgstr "Thêm một scene mới."
#: editor/editor_node.cpp
msgid "Scene"
@@ -1825,11 +1812,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr ""
+msgstr "Tạo Scene Mới"
#: editor/editor_node.cpp
msgid "New Inherited Scene.."
-msgstr ""
+msgstr "Tạo Scene Con.."
#: editor/editor_node.cpp
msgid "Open Scene.."
@@ -2005,6 +1992,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2124,7 +2118,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
#: editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "Nhập từ bên ngoài"
#: editor/editor_node.cpp
msgid "Node"
@@ -2144,7 +2138,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
-msgstr ""
+msgstr "Nhập Template từ file ZIP"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
@@ -2323,7 +2317,7 @@ msgstr ""
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
-msgstr ""
+msgstr "Chá»n Node để Nhập"
#: editor/editor_sub_scene.cpp
msgid "Scene Path:"
@@ -2331,7 +2325,7 @@ msgstr ""
#: editor/editor_sub_scene.cpp
msgid "Import From Node:"
-msgstr ""
+msgstr "Nhập từ Node:"
#: editor/export_template_manager.cpp
msgid "Re-Download"
@@ -2363,7 +2357,7 @@ msgstr ""
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "Xóa template phiên bản '%s'?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
@@ -2384,7 +2378,7 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
+msgid "Error creating path for templates:"
msgstr ""
#: editor/export_template_manager.cpp
@@ -2538,9 +2532,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2548,19 +2540,19 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr ""
+msgid "Error moving:"
+msgstr "Lỗi di chuyển:"
#: editor/filesystem_dock.cpp
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2577,79 +2569,79 @@ msgstr ""
#: editor/filesystem_dock.cpp
msgid "Name contains invalid characters."
-msgstr ""
+msgstr "Tên có kí tự không hợp lệ."
#: editor/filesystem_dock.cpp
msgid "A file or folder with this name already exists."
-msgstr ""
+msgstr "Äã có má»™t file hoặc folder trùng tên."
#: editor/filesystem_dock.cpp
msgid "Renaming file:"
-msgstr ""
+msgstr "Äổi tên file:"
#: editor/filesystem_dock.cpp
msgid "Renaming folder:"
-msgstr ""
+msgstr "Äổi tên folder:"
#: editor/filesystem_dock.cpp
msgid "Duplicating file:"
-msgstr ""
+msgstr "Tạo bản sao file:"
#: editor/filesystem_dock.cpp
msgid "Duplicating folder:"
-msgstr ""
+msgstr "Tạo bản sao folder:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
-msgstr ""
+msgstr "Mở rộng tất cả"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
-msgstr ""
+msgstr "Thu gá»n tất cả"
#: editor/filesystem_dock.cpp
msgid "Rename.."
-msgstr ""
+msgstr "Äổi tên..."
#: editor/filesystem_dock.cpp
msgid "Move To.."
-msgstr ""
+msgstr "Di chuyển đến..."
#: editor/filesystem_dock.cpp
msgid "Open Scene(s)"
-msgstr ""
+msgstr "Mở Scene"
#: editor/filesystem_dock.cpp
msgid "Instance"
-msgstr ""
+msgstr "Thêm vào scene"
#: editor/filesystem_dock.cpp
msgid "Edit Dependencies.."
-msgstr ""
+msgstr "Chỉnh sửa các File phụ thuộc.."
#: editor/filesystem_dock.cpp
msgid "View Owners.."
-msgstr ""
+msgstr "Xem các scene sở hữu.."
#: editor/filesystem_dock.cpp
msgid "Duplicate.."
-msgstr ""
+msgstr "Nhân đôi..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
-msgstr ""
+msgstr "Thư mục trước"
#: editor/filesystem_dock.cpp
msgid "Next Directory"
-msgstr ""
+msgstr "Thư mục tiếp theo"
#: editor/filesystem_dock.cpp
msgid "Re-Scan Filesystem"
-msgstr ""
+msgstr "Quét lại hệ thống tập tin"
#: editor/filesystem_dock.cpp
msgid "Toggle folder status as Favorite"
-msgstr ""
+msgstr "(Bá») Chá»n thư mục Hay sá»­ dụng"
#: editor/filesystem_dock.cpp
msgid "Instance the selected scene(s) as child of the selected node."
@@ -2660,23 +2652,25 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Äang quét file,\n"
+"ChỠmôt chút.."
#: editor/filesystem_dock.cpp
msgid "Move"
-msgstr ""
+msgstr "Di chuyển"
#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
#: editor/project_manager.cpp
msgid "Rename"
-msgstr ""
+msgstr "Äổi tên"
#: editor/groups_editor.cpp
msgid "Add to Group"
-msgstr ""
+msgstr "Thêm vào Nhóm"
#: editor/groups_editor.cpp
msgid "Remove from Group"
-msgstr ""
+msgstr "Xóa khá»i Nhóm"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
@@ -2684,31 +2678,31 @@ msgstr ""
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Animations"
-msgstr ""
+msgstr "Load với các Animation riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Load với các Material riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Load với các Object riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Load với các Object+Material riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Animations"
-msgstr ""
+msgstr "Load với các Object+Animation riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials+Animations"
-msgstr ""
+msgstr "Load với Material+Animation riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials+Animations"
-msgstr ""
+msgstr "Load với các Object+Material+Animation riêng biệt"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
@@ -2855,85 +2849,85 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Remove Animation"
-msgstr ""
+msgstr "Xóa Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Invalid animation name!"
-msgstr ""
+msgstr "LỖI: Tên animation không hợp lệ!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: Animation name already exists!"
-msgstr ""
+msgstr "LỖI: Tên animation trùng lặp!"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Rename Animation"
-msgstr ""
+msgstr "Äổi tên Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Add Animation"
-msgstr ""
+msgstr "Thêm Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Blend Next Changed"
-msgstr ""
+msgstr "Chuyển đổi animation Tiếp theo Thay đổi"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Change Blend Time"
-msgstr ""
+msgstr "Äổi Thá»i gian Chuyển Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load Animation"
-msgstr ""
+msgstr "Load Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Duplicate Animation"
-msgstr ""
+msgstr "Tạo Animation bản sao"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation to copy!"
-msgstr ""
+msgstr "LỖI: Không có animation để copy!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation resource on clipboard!"
-msgstr ""
+msgstr "LỖI: Không có animation trên clipboard!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Pasted Animation"
-msgstr ""
+msgstr "Animation đã Dán"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Paste Animation"
-msgstr ""
+msgstr "Dán Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "ERROR: No animation to edit!"
-msgstr ""
+msgstr "LỖI: Không có animation để chỉnh!"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
+msgstr "Chạy animation ngược lại từ vị trí hiện tại. (A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr ""
+msgstr "Chạy animation ngược lại từ cuối. (Shift+A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Stop animation playback. (S)"
-msgstr ""
+msgstr "Ngưng chạy animation. (S)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from start. (Shift+D)"
-msgstr ""
+msgstr "Chạy animation từ đầu. (Shift+D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from current pos. (D)"
-msgstr ""
+msgstr "Chạy animation từ vị trí hiện tại. (D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation position (in seconds)."
-msgstr ""
+msgstr "Vị trí animation (đơn vị giây)."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Scale animation playback globally for the node."
@@ -2941,35 +2935,35 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create new animation in player."
-msgstr ""
+msgstr "Tạo animation mới trong player."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load animation from disk."
-msgstr ""
+msgstr "Load animation từ disk."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Load an animation from disk."
-msgstr ""
+msgstr "Load một animation từ disk."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
-msgstr ""
+msgstr "Lưu animation này"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
-msgstr ""
+msgstr "Hiển thị danh sách các animation trong player."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Autoplay on Load"
-msgstr ""
+msgstr "Tự động chạy khi Load"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Target Blend Times"
-msgstr ""
+msgstr "Chỉnh Thá»i gian Chuyển Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation Tools"
-msgstr ""
+msgstr "Các Công cụ Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Copy Animation"
@@ -2977,11 +2971,11 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Onion Skinning"
-msgstr ""
+msgstr "Khung hình Liên tiếp"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Enable Onion Skinning"
-msgstr ""
+msgstr "Xem Khung hình Liên tiếp"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Directions"
@@ -3197,6 +3191,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3362,6 +3360,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3662,19 +3661,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4045,7 +4047,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4434,14 +4436,16 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
+msgid "Close and save changes?"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
@@ -4517,6 +4521,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -4933,7 +4941,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Plane Transform."
-msgstr ""
+msgstr "Xem Transform cá»§a Plane."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
@@ -4948,83 +4956,83 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
+msgid "Material Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Right View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5039,6 +5047,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5112,15 +5124,11 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5395,10 +5403,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5424,14 +5440,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5569,6 +5588,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -5669,6 +5692,30 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5776,9 +5823,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5790,6 +5835,14 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5830,14 +5883,26 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "Tạo & Sửa"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5854,10 +5919,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5903,42 +5964,48 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
+msgid "Project List"
+msgstr "List Project"
+
+#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "Quét"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr ""
+msgstr "Chá»n má»™t Folder để Quét"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "Tạo Project"
#: editor/project_manager.cpp
msgid "Templates"
-msgstr ""
+msgstr "Khung project"
#: editor/project_manager.cpp
msgid "Exit"
-msgstr ""
+msgstr "Thoát"
#: editor/project_manager.cpp
msgid "Restart Now"
-msgstr ""
+msgstr "Restart ngay"
#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr ""
+msgstr "Không thể chạy project"
#: editor/project_manager.cpp
msgid ""
"You don't currently have any projects.\n"
"Would you like to explore the official example projects in the Asset Library?"
msgstr ""
+"Hiện giỠbạn không có project nào.\n"
+"Bạn có muốn xem các project official ví dụ trên Asset Library không?"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6029,11 +6096,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6411,10 +6473,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6499,7 +6557,7 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -6790,7 +6848,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6799,6 +6857,10 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7144,10 +7206,50 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7452,7 +7554,7 @@ msgstr ""
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
-msgstr ""
+msgstr "Path không chỉ đến Node!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
@@ -7493,23 +7595,27 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
msgstr ""
#: scene/2d/animated_sprite.cpp
@@ -7524,6 +7630,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7592,7 +7705,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7651,6 +7764,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7696,8 +7816,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7740,7 +7860,7 @@ msgstr "Xin hãy xác nhận..."
#: scene/gui/file_dialog.cpp
msgid "Select this Folder"
-msgstr ""
+msgstr "Chá»n folder này"
#: scene/gui/popup.cpp
msgid ""
@@ -7748,6 +7868,9 @@ msgid ""
"functions. Making them visible for editing is fine though, but they will "
"hide upon running."
msgstr ""
+"Các popup sẽ mặc định là ẩn trừ khi bạn gá»i popup() hoặc bất kì function nào "
+"có dạng popup*(). Có thể để popup nhìn thấy được để chỉnh sửa, nhưng chúng "
+"sẽ ẩn khi chạy."
#: scene/gui/scroll_container.cpp
msgid ""
@@ -7762,8 +7885,8 @@ msgstr "(Khác)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index e1ee53bf94..debb1d60f3 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -1,4 +1,4 @@
-# Chinese (China) translation of the Godot Engine editor
+# Chinese (Simplified) translation of the Godot Engine editor
# Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.
# Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
@@ -9,7 +9,7 @@
# ageazrael <ageazrael@gmail.com>, 2016.
# Bruce Guo <guoboism@hotmail.com>, 2016.
# dragonandy <dragonandy@foxmail.com>, 2017.
-# Geequlim <geequlim@gmail.com>, 2016-2017.
+# Geequlim <geequlim@gmail.com>, 2016-2018.
# lalalaring <783482203@qq.com>, 2017.
# Luo Jun <vipsbpig@gmail.com>, 2016-2017.
# oberon-tonya <360119124@qq.com>, 2016.
@@ -21,9 +21,9 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Godot Engine editor\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-12-10 10:33+0000\n"
+"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
+"POT-Creation-Date: 2018-01-20 12:15+0200\n"
+"PO-Revision-Date: 2018-01-20 12:54+0000\n"
"Last-Translator: Geequlim <geequlim@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -32,7 +32,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 2.18-dev\n"
+"X-Generator: Weblate 2.19-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -43,9 +43,8 @@ msgid "All Selection"
msgstr "所有选中项"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Time"
-msgstr "修改动画值"
+msgstr "修改动画关键帧的时间"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -56,9 +55,8 @@ msgid "Anim Change Transform"
msgstr "ä¿®æ”¹å˜æ¢"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Keyframe Value"
-msgstr "修改动画值"
+msgstr "修改动画关键帧的值"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
@@ -214,8 +212,7 @@ msgstr "创建%d个新轨é“å¹¶æ’入关键帧?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "创建"
@@ -392,14 +389,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "替æ¢äº†%d项。"
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "替æ¢"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "全部替æ¢"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "大å°å†™åŒ¹é…"
@@ -408,48 +397,16 @@ msgid "Whole Words"
msgstr "全字匹é…"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "仅选中"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœç´¢"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "查找"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "下一项"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "未找到ï¼"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
+msgid "Replace"
msgstr "替æ¢"
#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "区分大å°å†™"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr "å‘åŽ"
-
-#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "æ›´æ¢æ—¶æç¤º"
+msgid "Replace All"
+msgstr "全部替æ¢"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "跳过"
+msgid "Selection Only"
+msgstr "仅选中"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -546,30 +503,37 @@ msgstr "连接'%s'到'%s'"
#: editor/connections_dialog.cpp
msgid "Connecting Signal:"
-msgstr "连接事件:"
+msgstr "连接信å·:"
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Disconnect '%s' from '%s'"
-msgstr "连接'%s'到'%s'"
+msgstr "å–æ¶ˆ'%s'的连接'%s'"
#: editor/connections_dialog.cpp
msgid "Connect.."
-msgstr "连接事件。"
+msgstr "连接信å·.."
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Disconnect"
-msgstr "删除事件连接"
+msgstr "删除信å·è¿žæŽ¥"
#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "ä¿¡å·"
#: editor/create_dialog.cpp
-#, fuzzy
+msgid "Change %s Type"
+msgstr "更改%s类型"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr "更改"
+
+#: editor/create_dialog.cpp
msgid "Create New %s"
-msgstr "新建"
+msgstr "创建新的 %s"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
@@ -673,8 +637,8 @@ msgid ""
msgstr "è¦åˆ é™¤çš„æ–‡ä»¶è¢«å…¶ä»–èµ„æºæ‰€ä¾èµ–,ä»ç„¶è¦åˆ é™¤å—?(无法撤销)"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
-msgstr "无法移除:\n"
+msgid "Cannot remove:"
+msgstr "无法移除:"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -756,9 +720,9 @@ msgstr "项目创始人"
msgid "Lead Developer"
msgstr "主è¦å¼€å‘者"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr "项目管ç†å‘˜"
+#: editor/editor_about.cpp
+msgid "Project Manager "
+msgstr "项目管ç†å‘˜ "
#: editor/editor_about.cpp
msgid "Developers"
@@ -844,7 +808,7 @@ msgid "Success!"
msgstr "完æˆï¼"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "安装"
@@ -865,9 +829,8 @@ msgid "Rename Audio Bus"
msgstr "é‡å‘½å音频总线(Audio Bus)"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Change Audio Bus Volume"
-msgstr "切æ¢éŸ³é¢‘独å¥"
+msgstr "修改音频Bus音é‡"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
@@ -932,7 +895,7 @@ msgstr "删除效果"
#: editor/editor_audio_buses.cpp
msgid "Audio"
-msgstr ""
+msgstr "音频"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
@@ -1107,13 +1070,12 @@ msgid "Updating scene.."
msgstr "更新场景中.."
#: editor/editor_data.cpp
-#, fuzzy
msgid "[empty]"
-msgstr "(空)"
+msgstr "[空]"
#: editor/editor_data.cpp
msgid "[unsaved]"
-msgstr ""
+msgstr "[ä½ä¿å­˜]"
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
@@ -1153,8 +1115,8 @@ msgid "Packing"
msgstr "打包中"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:\n"
+msgid "Template file not found:"
+msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1338,7 +1300,7 @@ msgstr "GUI主题:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
-msgstr "事件:"
+msgstr "ä¿¡å·:"
#: editor/editor_help.cpp
msgid "Enumerations"
@@ -1365,6 +1327,19 @@ msgid "Description"
msgstr "æè¿°"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr "在线教程:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+"暂时没有此类型的说明。请帮通过[color=$color][url=$url] 补充文档或æäº¤è¯·æ±‚ [/"
+"url][/color]的方å¼å¸®åŠ©æˆ‘ä»¬å®Œå–„æ–‡æ¡£!"
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr "属性"
@@ -1400,6 +1375,10 @@ msgstr ""
msgid "Search Text"
msgstr "æœç´¢æ–‡æœ¬"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "查找"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "输出:"
@@ -1411,6 +1390,10 @@ msgstr "输出:"
msgid "Clear"
msgstr "清除"
+#: editor/editor_log.cpp
+msgid "Clear Output"
+msgstr "清空输出"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr "ä¿å­˜èµ„æºå‡ºé”™ï¼"
@@ -1419,8 +1402,8 @@ msgstr "ä¿å­˜èµ„æºå‡ºé”™ï¼"
msgid "Save Resource As.."
msgstr "资æºå¦å­˜ä¸º.."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "好å§.."
@@ -1474,8 +1457,9 @@ msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
-msgstr "无法ä¿å­˜åœºæ™¯ï¼Œä¾èµ–项(实例)验è¯å¤±è´¥ã€‚"
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
+msgstr "无法ä¿å­˜åœºæ™¯ï¼Œä¾èµ–项(实例或基类)验è¯å¤±è´¥ã€‚"
#: editor/editor_node.cpp
msgid "Failed to load resource."
@@ -2055,6 +2039,13 @@ msgstr "帮助"
msgid "Classes"
msgstr "类型"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœç´¢"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr "在线文档"
@@ -2326,14 +2317,12 @@ msgid "Frame #:"
msgstr "帧åºå·:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
-msgstr "æ—¶é—´:"
+msgstr "æ—¶é—´"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
-msgstr "调用到"
+msgstr "调用次数"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
@@ -2438,8 +2427,8 @@ msgid "No version.txt found inside templates."
msgstr "模æ¿ä¸­æ²¡æœ‰æ‰¾åˆ°version.txt文件。"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr "无法将模æ¿ä¿å­˜åˆ°ä»¥ä¸‹æ–‡ä»¶:\n"
+msgid "Error creating path for templates:"
+msgstr "åˆ›å»ºæ¨¡æ¿æ–‡ä»¶è·¯å¾„出错:"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2472,9 +2461,8 @@ msgstr "æ— å“应。"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Request Failed."
-msgstr "请求失败."
+msgstr "请求失败。"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -2520,7 +2508,6 @@ msgid "Connecting.."
msgstr "连接中.."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Can't Connect"
msgstr "无法连接"
@@ -2594,33 +2581,28 @@ msgid "View items as a list"
msgstr "将项目作为列表查看"
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
-msgstr ""
-"\n"
-"状æ€: å¯¼å…¥æ–‡ä»¶å¤±è´¥ã€‚è¯·æ‰‹åŠ¨ä¿®å¤æ–‡ä»¶å’Œå¯¼å…¥ã€‚"
+msgid "Status: Import of file failed. Please fix file and reimport manually."
+msgstr "状æ€: å¯¼å…¥æ–‡ä»¶å¤±è´¥ã€‚è¯·æ‰‹åŠ¨ä¿®å¤æ–‡ä»¶åŽé‡æ–°å¯¼å…¥ã€‚"
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
msgstr "无法移动/é‡å‘½å根资æºã€‚"
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
-msgstr "无法将文件夹移动到其自身。\n"
+msgid "Cannot move a folder into itself."
+msgstr "无法将文件夹移动到其自身。"
#: editor/filesystem_dock.cpp
-msgid "Error moving:\n"
-msgstr "移动时出错:\n"
+msgid "Error moving:"
+msgstr "移动出错:"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error duplicating:\n"
-msgstr "加载出错:"
+msgid "Error duplicating:"
+msgstr "å¤åˆ¶å‡ºé”™:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
-msgstr "无法更新ä¾èµ–关系:\n"
+msgid "Unable to update dependencies:"
+msgstr "无法更新ä¾èµ–:"
#: editor/filesystem_dock.cpp
msgid "No name provided"
@@ -2651,14 +2633,12 @@ msgid "Renaming folder:"
msgstr "é‡å‘½å文件夹:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating file:"
-msgstr "æ‹·è´"
+msgstr "æ‹·è´æ–‡ä»¶:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicating folder:"
-msgstr "é‡å‘½å文件夹:"
+msgstr "å¤åˆ¶æ–‡ä»¶å¤¹:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2677,7 +2657,6 @@ msgid "Move To.."
msgstr "移动.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Open Scene(s)"
msgstr "打开场景"
@@ -2694,9 +2673,8 @@ msgid "View Owners.."
msgstr "查看所有者.."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Duplicate.."
-msgstr "æ‹·è´"
+msgstr "æ‹·è´.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2793,14 +2771,12 @@ msgid "Importing Scene.."
msgstr "导入场景.."
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating Lightmaps"
-msgstr "转移到光照贴图:"
+msgstr "正在生æˆå…‰ç…§è´´å›¾"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Generating for Mesh: "
-msgstr "正在生æˆAABB"
+msgstr "正在生æˆMesh"
#: editor/import/resource_importer_scene.cpp
msgid "Running Custom Script.."
@@ -3063,9 +3039,8 @@ msgid "Past"
msgstr "穿过"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Future"
-msgstr "功能"
+msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Depth"
@@ -3085,7 +3060,7 @@ msgstr "3æ­¥"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Differences Only"
-msgstr ""
+msgstr "ä»…ä¸åŒ"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Force White Modulate"
@@ -3093,7 +3068,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Include Gizmos (3D)"
-msgstr ""
+msgstr "包括3D控制器"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Create New Animation"
@@ -3269,6 +3244,10 @@ msgstr "编辑节点筛选"
msgid "Filters.."
msgstr "筛选.."
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr "动画树"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr "释放"
@@ -3418,23 +3397,26 @@ msgid ""
"Save your scene (for images to be saved in the same dir), or pick a save "
"path from the BakedLightmap properties."
msgstr ""
+"无法确定光照贴图的ä¿å­˜è·¯å¾„。\n"
+"请先ä¿å­˜åœºæ™¯ï¼ˆå…‰ç…§è´´å›¾å°†è¢«å­˜åœ¨åŒä¸€ç›®å½•ä¸‹ï¼‰æˆ–ä»Žå±žæ€§é¢æ¿ä¸­æ‰‹åЍä¿å­˜ "
+"`BakedLightmap` 属性。"
#: 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 ""
+msgstr "没有å¯çƒ˜ç„™çš„Mesh。请确ä¿Mesh包å«UV2通é“并且勾选'Bake Light'选项。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
-msgstr ""
+msgstr "åˆ›å»ºå…‰ç…§è´´å›¾å¤±è´¥ï¼Œåˆ‡ç¡®ä¿æ–‡ä»¶æ˜¯å¯å†™çš„。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid "Bake Lightmaps"
-msgstr "转移到光照贴图:"
+msgstr "烘焙光照贴图"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr "预览"
@@ -3469,12 +3451,10 @@ msgid "Move Action"
msgstr "移动动作"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Move vertical guide"
msgstr "移动垂直标尺"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Create new vertical guide"
msgstr "创建新的垂直标尺"
@@ -3670,7 +3650,6 @@ msgid "Show Grid"
msgstr "显示网格"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show helpers"
msgstr "显示辅助线"
@@ -3679,9 +3658,8 @@ msgid "Show rulers"
msgstr "显示标尺"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show guides"
-msgstr "显示标尺"
+msgstr "显示标尺 "
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3739,6 +3717,14 @@ msgstr "添加(Add) %s"
msgid "Adding %s..."
msgstr "添加(Adding) %s..."
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "好的"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
@@ -3750,11 +3736,6 @@ msgid "Error instancing scene from %s"
msgstr "从%s实例化场景出错"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
-msgstr "æ­¤æ“作åªèƒ½åº”用于å•个选中节点。"
-
-#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change default type"
msgstr "修改默认值"
@@ -3802,9 +3783,8 @@ msgid "Flat0"
msgstr "Flat0"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Flat1"
-msgstr "Flat1"
+msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
msgid "Ease in"
@@ -3815,9 +3795,8 @@ msgid "Ease out"
msgstr "æ¸å‡º"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Smoothstep"
-msgstr "圆滑级别"
+msgstr "圆滑级别 "
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
@@ -3950,7 +3929,7 @@ msgstr "创建导航Mesh(网格)"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "包å«çš„Mesh䏿˜¯ArrayMesh类型。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
@@ -3958,11 +3937,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "没有è¦è°ƒè¯•çš„mesh。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Model has no UV in this layer"
-msgstr ""
+msgstr "模型在此层上没有UV图"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
@@ -4005,14 +3984,12 @@ msgid "Create Outline Mesh.."
msgstr "创建轮廓网格(Outline Mesh).."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV1"
-msgstr "视图"
+msgstr "查看UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "View UV2"
-msgstr "视图"
+msgstr "查看UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
@@ -4128,11 +4105,11 @@ msgstr "å¡«å……"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Bake!"
-msgstr "烘培ï¼"
+msgstr "烘焙ï¼"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
-msgstr "烘焙导航网格(mesh).\n"
+msgid "Bake the navigation mesh."
+msgstr "烘焙导航网格(mesh)。"
#: editor/plugins/navigation_mesh_editor_plugin.cpp
msgid "Clear the navigation mesh."
@@ -4147,50 +4124,42 @@ msgid "Calculating grid size..."
msgstr "正在计算网格大å°..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Creating heightfield..."
-msgstr "创建高度图..."
+msgstr "正在创建高度图..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Marking walkable triangles..."
msgstr "标记å¯ç§»åŠ¨ä¸‰è§’å½¢..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Constructing compact heightfield..."
-msgstr "构建紧凑高度图..."
+msgstr "构建紧凑高度图... "
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Eroding walkable area..."
msgstr "正在计算å¯è¡ŒåŒºåŸŸ..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Partitioning..."
-msgstr "分区中..."
+msgstr "分区中... "
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Creating contours..."
-msgstr "正在创建轮廓..."
+msgstr "正在创建轮廓... "
#: editor/plugins/navigation_mesh_generator.cpp
msgid "Creating polymesh..."
msgstr "创建多边形网格..."
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Converting to native navigation mesh..."
-msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼(mesh)..."
+msgstr "转æ¢ä¸ºå¯¼èˆªç½‘æ ¼(mesh)... "
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Navigation Mesh Generator Setup:"
-msgstr "导航网格生æˆè®¾ç½®:"
+msgstr "导航网格(Mesh)生æˆè®¾ç½®:"
#: editor/plugins/navigation_mesh_generator.cpp
-#, fuzzy
msgid "Parsing Geometry..."
msgstr "è§£æžå¤šè¾¹å½¢ä¸­..."
@@ -4395,19 +4364,16 @@ msgid "Curve Point #"
msgstr "曲线定点 #"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Set Curve Point Position"
-msgstr "è®¾ç½®æ›²çº¿é¡¶ç‚¹åæ ‡"
+msgstr "è®¾ç½®æ›²çº¿çš„é¡¶ç‚¹åæ ‡"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Set Curve In Position"
-msgstr "设置的曲线开始ä½ç½®ï¼ˆPos)"
+msgstr "设置曲线的内控制点"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Set Curve Out Position"
-msgstr "设置曲线结æŸä½ç½®ï¼ˆPos)"
+msgstr "设置曲线外控制点"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4531,17 +4497,17 @@ msgstr "加载资æº"
msgid "Paste"
msgstr "粘贴"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ResourcePreloader"
+msgstr "预加载资æº"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "清ç†å½“剿–‡ä»¶"
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
-"关闭并ä¿å­˜æ›´æ”¹å—?\n"
-"\""
+msgid "Close and save changes?"
+msgstr "关闭并ä¿å­˜æ›´æ”¹å—?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4612,9 +4578,13 @@ msgid "Soft Reload Script"
msgstr "软é‡è½½è„šæœ¬"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Copy Script Path"
-msgstr "æ‹·è´è·¯å¾„"
+msgstr "æ‹·è´è„šæœ¬è·¯å¾„"
+
+#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "在资æºç®¡ç†å™¨ä¸­å±•示"
#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
@@ -4645,7 +4615,6 @@ msgid "Close All"
msgstr "关闭全部"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close Other Tabs"
msgstr "关闭其他标签页"
@@ -4806,9 +4775,8 @@ msgid "Clone Down"
msgstr "æ‹·è´åˆ°ä¸‹ä¸€è¡Œ"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Fold/Unfold Line"
-msgstr "å–æ¶ˆæŠ˜å è¡Œ"
+msgstr "切æ¢å è¡Œ"
#: editor/plugins/script_text_editor.cpp
msgid "Fold All Lines"
@@ -5044,7 +5012,6 @@ msgid "Scaling: "
msgstr "缩放: "
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translating: "
msgstr "语言:"
@@ -5053,84 +5020,84 @@ msgid "Rotating %s degrees."
msgstr "旋转%s度。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
-msgstr "仰视图(Bottom View)。"
+msgid "Keying is disabled (no key inserted)."
+msgstr "键控被ç¦ç”¨ï¼ˆæœªæ’入键)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
-msgstr "底部"
+msgid "Animation Key Inserted."
+msgstr "æ’入动画键。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
-msgstr "俯视图(Top View)。"
+msgid "Objects Drawn"
+msgstr "绘制的对象"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr "åŽè§†å›¾ã€‚"
+msgid "Material Changes"
+msgstr "æè´¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr "åŽæ–¹"
+msgid "Shader Changes"
+msgstr "ç€è‰²å™¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr "正视图。"
+msgid "Surface Changes"
+msgstr "表é¢å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
-msgstr "å‰é¢"
+msgid "Draw Calls"
+msgstr "绘制调用(Draw Calls)"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
-msgstr "左视图。"
+msgid "Vertices"
+msgstr "顶点"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
-msgstr "左方"
+msgid "FPS"
+msgstr "帧数"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
-msgstr "å³è§†å›¾ã€‚"
+msgid "Top View."
+msgstr "俯视图(Top View)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
-msgstr "峿–¹"
+msgid "Bottom View."
+msgstr "仰视图(Bottom View)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
-msgstr "键控被ç¦ç”¨ï¼ˆæœªæ’入键)。"
+msgid "Bottom"
+msgstr "底部"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
-msgstr "æ’入动画键。"
+msgid "Left View."
+msgstr "左视图。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
-msgstr "绘制的对象"
+msgid "Left"
+msgstr "左方"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr "æè´¨å˜æ›´"
+msgid "Right View."
+msgstr "å³è§†å›¾ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr "ç€è‰²å™¨å˜æ›´"
+msgid "Right"
+msgstr "峿–¹"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr "表é¢å˜æ›´"
+msgid "Front View."
+msgstr "正视图。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr "绘制调用(Draw Calls)"
+msgid "Front"
+msgstr "å‰é¢"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
-msgstr "顶点"
+msgid "Rear View."
+msgstr "åŽè§†å›¾ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
-msgstr "帧数"
+msgid "Rear"
+msgstr "åŽæ–¹"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5144,6 +5111,10 @@ msgstr "好å§"
msgid "No parent to instance a child at."
msgstr "æ²¡æœ‰é€‰ä¸­èŠ‚ç‚¹æ¥æ·»åŠ å®žä¾‹ã€‚"
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr "æ­¤æ“作åªèƒ½åº”用于å•个选中节点。"
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr "显示法线"
@@ -5177,7 +5148,6 @@ msgid "View FPS"
msgstr "查看帧率"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Half Resolution"
msgstr "一åŠåˆ†è¾¨çއ"
@@ -5218,16 +5188,12 @@ msgid "Freelook Speed Modifier"
msgstr "自由视图速度调整"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "preview"
-msgstr "预览"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XFormå¯¹è¯æ¡†"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr "é€‰æ‹©æ¨¡å¼ (Q)\n"
+msgid "Select Mode (Q)"
+msgstr "é€‰æ‹©æ¨¡å¼ (Q)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5256,14 +5222,12 @@ msgid "Local Coords"
msgstr "æœ¬åœ°åæ ‡"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Local Space Mode (%s)"
-msgstr "缩放模å¼ï¼ˆR)"
+msgstr "æœ¬åœ°ç©ºé—´æ¨¡å¼ (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Mode (%s)"
-msgstr "å¸é™„模å¼:"
+msgstr "å¸é™„æ¨¡å¼ (%s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
@@ -5326,9 +5290,8 @@ msgid "Tool Scale"
msgstr "缩放工具"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Freelook"
-msgstr "开关自由观察模å¼"
+msgstr "切æ¢è‡ªç”±è§‚察模å¼"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
@@ -5381,21 +5344,19 @@ msgstr "设置"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Skeleton Gizmo visibility"
-msgstr ""
+msgstr "骨骼控制器å¯è§"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Snap Settings"
msgstr "å¸é™„设置"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate Snap:"
msgstr "移动å¸é™„:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Snap (deg.):"
-msgstr "旋转å¸é™„(度):"
+msgstr "旋转å¸é™„(度):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scale Snap (%):"
@@ -5509,10 +5470,18 @@ msgstr "å¾€å‰ç§»åЍ"
msgid "Move (After)"
msgstr "å¾€åŽç§»åЍ"
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr "动画帧"
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox预览:"
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr "æ ·å¼"
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr "设置纹ç†åŒºåŸŸ"
@@ -5538,14 +5507,17 @@ msgid "Auto Slice"
msgstr "自动è£å‰ª"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr "网格åç§»é‡:"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr "步长(秒):"
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr "分隔:"
@@ -5607,9 +5579,8 @@ msgid "Create Empty Editor Template"
msgstr "创建空编辑器主题模æ¿"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Create From Current Editor Theme"
-msgstr "从现有编辑器主题模æ¿åˆ›å»º"
+msgstr "从当å‰ç¼–辑器主题创建"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio1"
@@ -5684,6 +5655,10 @@ msgstr "字体"
msgid "Color"
msgstr "颜色"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr "主题"
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr "擦除选中"
@@ -5769,9 +5744,8 @@ msgid "Merge from scene?"
msgstr "确定è¦åˆå¹¶åœºæ™¯ï¼Ÿ"
#: editor/plugins/tile_set_editor_plugin.cpp
-#, fuzzy
msgid "Tile Set"
-msgstr "ç –å—集.."
+msgstr "ç –å—集"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Create from Scene"
@@ -5785,26 +5759,52 @@ msgstr "从场景中åˆå¹¶"
msgid "Error"
msgstr "错误"
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+"请选择一个å­åœ°ç –(sub-tile)作为图标,此图标还会被绑定为无效的地砖(autotile)。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+"鼠标左键: å¯ç”¨bit.\n"
+"é¼ æ ‡å³é”®ï¼š ç¦ç”¨bit"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select current edited sub-tile."
+msgstr "ä¿å­˜å½“å‰ç¼–辑的å­åœ°ç –(sub-tile)。"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr "选择è¦ä¿®æ”¹ä¼˜å…ˆçº§çš„å­åœ°ç –(sub-tile)。"
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "å–æ¶ˆ"
#: editor/project_export.cpp
msgid "Runnable"
-msgstr "å¯ç”¨"
+msgstr "坿‰§è¡Œçš„"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete patch '%s' from list?"
-msgstr "删除Patch''%s'"
+msgstr "确认è¦ä»Žåˆ—表中删除Patch '%s' å—?"
#: editor/project_export.cpp
msgid "Delete preset '%s'?"
-msgstr "删除选中的 '%s'?"
+msgstr "删除当å‰çš„ '%s' ?"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing/corrupted: "
-msgstr "没有下列平å°çš„导出模æ¿: "
+msgstr "该平å°çš„导出模æ¿ç¼ºå¤±æˆ–å·²ç»æŸå: "
#: editor/project_export.cpp
msgid "Presets"
@@ -5893,10 +5893,8 @@ msgid "Please choose a 'project.godot' file."
msgstr "请选择一个'project.godot'文件。"
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
-msgstr "您的工程在éžç©ºæ–‡ä»¶å¤¹ä¸­åˆ›å»º (您å¯èƒ½éœ€è¦å»ºç«‹ä¸€ä¸ªæ–°æ–‡ä»¶å¤¹)。"
+msgid "Please choose an empty folder."
+msgstr "请选择一个空目录。"
#: editor/project_manager.cpp
msgid "Please choose a folder that does not contain a 'project.godot' file."
@@ -5907,6 +5905,14 @@ msgid "Imported Project"
msgstr "已导入的项目"
#: editor/project_manager.cpp
+msgid "Couldn't create folder."
+msgstr "无法创建文件夹。"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr "已存在与给定å称相åŒçš„目录。"
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr "ä¸ºé¡¹ç›®å‘½åæ˜¯ä¸€ä¸ªå¥½ä¸»æ„。"
@@ -5947,14 +5953,26 @@ msgid "Import Existing Project"
msgstr "导入现有项目"
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr "导入|打开"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "新建项目"
#: editor/project_manager.cpp
+msgid "Create & Edit"
+msgstr "创建|编辑"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr "安装项目:"
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr "安装|编辑"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "项目åç§°:"
@@ -5971,10 +5989,6 @@ msgid "Browse"
msgstr "æµè§ˆ"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr "碉堡了ï¼"
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr "未命å项目"
@@ -6026,6 +6040,10 @@ msgid ""
msgstr "æ‚¨ç¡®è®¤è¦æ‰«æ%s目录下现有的Godot项目å—?"
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr "项目管ç†å‘˜"
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr "项目列表"
@@ -6154,11 +6172,6 @@ msgid "Button 9"
msgstr "按键 9"
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr "更改"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr "手柄摇æ†åºå·:"
@@ -6171,7 +6184,6 @@ msgid "Joypad Button Index:"
msgstr "手柄按钮:"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Erase Input Action"
msgstr "移除输入事件"
@@ -6229,7 +6241,7 @@ msgstr "'%s'是内置设定,ä¸èƒ½åˆ é™¤ã€‚"
#: editor/project_settings_editor.cpp
msgid "Delete Item"
-msgstr "删除输入事件"
+msgstr "删除æ¡ç›®"
#: editor/project_settings_editor.cpp
msgid "Can't contain '/' or ':'"
@@ -6284,9 +6296,8 @@ msgid "Remove Resource Remap Option"
msgstr "移除资æºé‡å®šå‘选项"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Changed Locale Filter"
-msgstr "更改区域设置筛选模å¼"
+msgstr "修改区域设置筛选模å¼"
#: editor/project_settings_editor.cpp
msgid "Changed Locale Filter Mode"
@@ -6353,12 +6364,10 @@ msgid "Locale"
msgstr "地区"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Locales Filter"
msgstr "区域筛选器"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Show all locales"
msgstr "显示所有区域设置"
@@ -6412,11 +6421,11 @@ msgstr "目录.."
#: editor/property_editor.cpp
msgid "Assign"
-msgstr "分é…(Assign)"
+msgstr "分é…"
#: editor/property_editor.cpp
msgid "Select Node"
-msgstr "选择一个节点"
+msgstr "选择节点"
#: editor/property_editor.cpp
msgid "New Script"
@@ -6424,7 +6433,7 @@ msgstr "新建脚本"
#: editor/property_editor.cpp
msgid "New %s"
-msgstr ""
+msgstr "新建%s"
#: editor/property_editor.cpp
msgid "Make Unique"
@@ -6476,9 +6485,8 @@ msgid "Select Property"
msgstr "选择属性"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Virtual Method"
-msgstr "选择虚拟方法"
+msgstr "选择虚拟方法 "
#: editor/property_selector.cpp
msgid "Select Method"
@@ -6498,7 +6506,7 @@ msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹"
#: editor/reparent_dialog.cpp
msgid "Reparent Location (Select new Parent):"
-msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©çˆ¶èŠ‚ç‚¹ï¼‰:"
+msgstr "é‡è®¾ä½ç½®ï¼ˆé€‰æ‹©æ–°çš„父节点):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
@@ -6542,10 +6550,6 @@ msgid "Error loading scene from %s"
msgstr "从%s加载场景出错"
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "好的"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6597,7 +6601,7 @@ msgstr "加载为å ä½ç¬¦"
#: editor/scene_tree_dock.cpp
msgid "Discard Instancing"
-msgstr "废弃实例化"
+msgstr "放弃实例化"
#: editor/scene_tree_dock.cpp
msgid "Makes Sense!"
@@ -6630,8 +6634,8 @@ msgid "Error duplicating scene to save it."
msgstr "å¤åˆ¶åœºæ™¯å‡ºé”™ã€‚"
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr "å­èµ„æº:"
+msgid "Sub-Resources"
+msgstr "å­èµ„æº"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6826,7 +6830,7 @@ msgstr "文件路径为空"
#: editor/script_create_dialog.cpp
msgid "Path is not local"
-msgstr "必须是项目路径"
+msgstr "必须是项目内的路径"
#: editor/script_create_dialog.cpp
msgid "Invalid base path"
@@ -6837,9 +6841,8 @@ msgid "Directory of the same name exists"
msgstr "存在åŒå目录"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "File exists, will be reused"
-msgstr "文件存在, 将被é‡ç”¨"
+msgstr "文件存在,将被é‡ç”¨"
#: editor/script_create_dialog.cpp
msgid "Invalid extension"
@@ -6934,7 +6937,7 @@ msgstr "函数:"
msgid "Pick one or more items from the list to display the graph."
msgstr "从列表中选å–一个或多个项目以显示图形。"
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "错误"
@@ -6943,6 +6946,10 @@ msgid "Child Process Connected"
msgstr "å­è¿›ç¨‹å·²è¿žæŽ¥"
#: editor/script_editor_debugger.cpp
+msgid "Copy Error"
+msgstr "å¤åˆ¶é”™è¯¯ä¿¡æ¯"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr "编辑上一个实例"
@@ -6952,7 +6959,7 @@ msgstr "编辑下一个实例"
#: editor/script_editor_debugger.cpp
msgid "Stack Frames"
-msgstr "堆栈帧(Frames)"
+msgstr "堆栈帧(Stack Frames)"
#: editor/script_editor_debugger.cpp
msgid "Variable"
@@ -6964,7 +6971,7 @@ msgstr "错误:"
#: editor/script_editor_debugger.cpp
msgid "Stack Trace (if applicable):"
-msgstr "调用堆栈:"
+msgstr "调用堆栈(若适用):"
#: editor/script_editor_debugger.cpp
msgid "Profiler"
@@ -7036,7 +7043,7 @@ msgstr "å¿«æ·é”®"
#: editor/settings_config_dialog.cpp
msgid "Binding"
-msgstr ""
+msgstr "绑定"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"
@@ -7088,46 +7095,41 @@ msgstr "修改探针(Probe)范围"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select the dynamic library for this entry"
-msgstr ""
+msgstr "选择该平å°çš„动æ€é“¾æŽ¥åº“"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Select dependencies of the library for this entry"
-msgstr ""
+msgstr "选择该链接库的ä¾èµ–项"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Remove current entry"
-msgstr "移除路径顶点"
+msgstr "删除当å‰é…置项"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Double click to create a new entry"
-msgstr ""
+msgstr "åŒå‡»æ·»åŠ æ–°çš„å¹³å°æž¶æž„é…置项"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "å¹³å°:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Platform"
-msgstr "å¤åˆ¶åˆ°å¹³å°.."
+msgstr "å¹³å°"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "Dynamic Library"
-msgstr "库"
+msgstr "动æ€é“¾æŽ¥åº“"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Add an architecture entry"
-msgstr ""
+msgstr "添加CPU架构项"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
-#, fuzzy
msgid "GDNativeLibrary"
-msgstr "GDNative"
+msgstr "动æ€é“¾æŽ¥åº“"
#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
msgid "Library"
msgstr "库"
@@ -7167,7 +7169,7 @@ msgstr "没有基于脚本"
#: modules/gdscript/gdscript_functions.cpp
msgid "Not based on a resource file"
-msgstr "æ²¡æœ‰åŸºäºŽä¸€ä¸ªèµ„æºæ–‡ä»¶"
+msgstr "æ²¡æœ‰åŸºäºŽèµ„æºæ–‡ä»¶"
#: modules/gdscript/gdscript_functions.cpp
msgid "Invalid instance dictionary format (missing @path)"
@@ -7187,11 +7189,11 @@ msgstr "éžæ³•çš„å­—å…¸å®žä¾‹ï¼ˆæ´¾ç”Ÿç±»éžæ³•)"
#: modules/gdscript/gdscript_functions.cpp
msgid "Object can't provide a length."
-msgstr "对象ä¸èƒ½æä¾›é•¿åº¦ã€‚"
+msgstr "对象无法æä¾›é•¿åº¦ã€‚"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Delete Selection"
-msgstr "删除选择的栅格图"
+msgstr "删除选择的GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Duplicate Selection"
@@ -7199,7 +7201,7 @@ msgstr "å¤åˆ¶é€‰ä¸­é¡¹"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Floor:"
-msgstr "地æ¿:"
+msgstr "层:"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7217,7 +7219,7 @@ msgstr "上一个目录"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Floor"
-msgstr "下一个目录"
+msgstr "下一层"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Disabled"
@@ -7284,22 +7286,61 @@ msgid "Erase Area"
msgstr "擦除区域"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clear Selection"
-msgstr "清除选中"
+msgstr "清空选中"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Settings"
-msgstr "栅格图设置"
+msgstr "GridMap设置"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Pick Distance:"
msgstr "拾å–è·ç¦»:"
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr "正在创生æˆå†³æ–¹æ¡ˆ... "
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr "正在生æˆC#项目..."
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create solution."
+msgstr "创建解决方案失败。"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr "ä¿å­˜è§£å†³æ–¹æ¡ˆå¤±è´¥ã€‚"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr "完æˆ"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr "创建C#项目失败"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr "创建C#解决方案"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr "构建"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Build Project"
+msgstr "构建项目"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr "警告"
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7365,7 +7406,7 @@ msgstr "åç§°ä¸æ˜¯æœ‰æ•ˆçš„æ ‡è¯†ç¬¦ï¼š"
#: modules/visual_script/visual_script_editor.cpp
msgid "Name already in use by another func/var/signal:"
-msgstr "åç§°å·²ç»è¢«å…¶ä»–的函数/å˜é‡/事件å ç”¨ï¼š"
+msgstr "åç§°å·²ç»è¢«å…¶ä»–的函数/å˜é‡/ä¿¡å·å ç”¨ï¼š"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Function"
@@ -7377,7 +7418,7 @@ msgstr "é‡å‘½åå˜é‡"
#: modules/visual_script/visual_script_editor.cpp
msgid "Rename Signal"
-msgstr "é‡å‘½å事件"
+msgstr "é‡å‘½åä¿¡å·"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Function"
@@ -7389,7 +7430,7 @@ msgstr "添加å˜é‡"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Signal"
-msgstr "添加事件"
+msgstr "添加信å·"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Expression"
@@ -7408,27 +7449,24 @@ msgid "Duplicate VisualScript Nodes"
msgstr "å¤åˆ¶ VisualScript 节点"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Hold %s to drop a Getter. Hold Shift to drop a generic signature."
-msgstr "按ä½%s放置一个Getter节点,按ä½Shift键放置一个通用签å。"
+msgstr "æŒ‰ä½ %s 放置一个Getter节点,按ä½Shift键放置一个通用签å。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
msgstr "按ä½Ctrl键放置一个Getter节点。按ä½Shift键放置一个通用签å。"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Hold %s to drop a simple reference to the node."
-msgstr "按ä½%s放置一个场景节点的引用节点。"
+msgstr "æŒ‰ä½ %s 放置一个场景节点的引用节点。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a simple reference to the node."
msgstr "按ä½Ctrl键放置一个场景节点的引用节点。"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Hold %s to drop a Variable Setter."
-msgstr "按ä½%s放置å˜é‡çš„Setter节点。"
+msgstr "æŒ‰ä½ %s 放置å˜é‡çš„Setter节点。"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Ctrl to drop a Variable Setter."
@@ -7440,15 +7478,15 @@ msgstr "添加Preload节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
-msgstr "从场景导入节点"
+msgstr "从树中添加节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Getter Property"
-msgstr "添加 Getter Property"
+msgstr "添加属性Getter"
#: modules/visual_script/visual_script_editor.cpp
msgid "Add Setter Property"
-msgstr "添加 Setter Property"
+msgstr "添加属性Setter"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Base Type"
@@ -7468,31 +7506,31 @@ msgstr "连接节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
-msgstr "æ¡ä»¶èŠ‚ç‚¹ï¼ˆCondition)"
+msgstr "æ¡ä»¶ï¼ˆCondition)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Sequence"
-msgstr "åºåˆ—节点(Sequence)"
+msgstr "åºåˆ—(Sequence)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Switch"
-msgstr "选择节点(Switch)"
+msgstr "选择(Switch)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Iterator"
-msgstr "é历节点(Iterator)"
+msgstr "é历(Iterator)"
#: modules/visual_script/visual_script_editor.cpp
msgid "While"
-msgstr "æ¡ä»¶å¾ªçŽ¯èŠ‚ç‚¹ï¼ˆWhile)"
+msgstr "æ¡ä»¶å¾ªçŽ¯ï¼ˆWhile)"
#: modules/visual_script/visual_script_editor.cpp
msgid "Return"
-msgstr "返回节点(Return)"
+msgstr "返回"
#: modules/visual_script/visual_script_editor.cpp
msgid "Call"
-msgstr "调用到"
+msgstr "调用"
#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
@@ -7504,7 +7542,7 @@ msgstr "脚本已存在函数 '%s'"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "更改输入的值"
+msgstr "更改输入值"
#: modules/visual_script/visual_script_editor.cpp
msgid "Can't copy the function node."
@@ -7536,7 +7574,7 @@ msgstr "编辑信å·"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
-msgstr "删除事件"
+msgstr "删除信å·"
#: modules/visual_script/visual_script_editor.cpp
msgid "Editing Variable:"
@@ -7544,7 +7582,7 @@ msgstr "编辑å˜é‡ï¼š"
#: modules/visual_script/visual_script_editor.cpp
msgid "Editing Signal:"
-msgstr "编辑事件:"
+msgstr "编辑信å·:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Base Type:"
@@ -7556,11 +7594,11 @@ msgstr "有效节点:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Select or create a function to edit graph"
-msgstr "选择或创建一个函数æ¥ç¼–辑图"
+msgstr "选择或创建一个函数æ¥ç¼–辑"
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit Signal Arguments:"
-msgstr "ç¼–è¾‘äº‹ä»¶å‚æ•°:"
+msgstr "编辑信å·å‚æ•°:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Edit Variable:"
@@ -7568,7 +7606,7 @@ msgstr "编辑å˜é‡:"
#: modules/visual_script/visual_script_editor.cpp
msgid "Delete Selected"
-msgstr "删除选择的节点"
+msgstr "删除已选中"
#: modules/visual_script/visual_script_editor.cpp
msgid "Find Node Type"
@@ -7612,7 +7650,7 @@ msgstr "路径必须指å‘节点ï¼"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr "节点 '%s' çš„ '%s' 为无效索引属性å。"
+msgstr "'%s'这个属性å的在节点'%s'中ä¸å­˜åœ¨ã€‚"
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -7646,29 +7684,31 @@ msgstr "在æµè§ˆå™¨ä¸­è¿è¡Œ"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr "使用默认æµè§ˆå™¨æ‰“开导出的HTML文件."
+msgstr "使用默认æµè§ˆå™¨æ‰“开导出的HTML文件。"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr "无法写入文件:\n"
+msgid "Could not write file:"
+msgstr "无法写入文件:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr "无法打开导出模æ¿ï¼š\n"
+msgid "Could not open template for export:"
+msgstr "无法打开导出模æ¿ï¼š"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
-msgstr "无效的导出模æ¿ï¼š\n"
+msgid "Invalid export template:"
+msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not read custom HTML shell:\n"
-msgstr "无法读å–自定义HTML命令:\n"
+msgid "Could not read custom HTML shell:"
+msgstr "无法读å–自定义HTML命令:"
#: platform/javascript/export/export.cpp
-#, fuzzy
-msgid "Could not read boot splash image file:\n"
-msgstr "无法读å–å¯åŠ¨å›¾ç‰‡æ–‡ä»¶:\n"
+msgid "Could not read boot splash image file:"
+msgstr "无法读å–å¯åŠ¨å›¾ç‰‡:"
+
+#: platform/javascript/export/export.cpp
+msgid "Using default boot splash image."
+msgstr "使用默认å¯åŠ¨å›¾ç‰‡ã€‚"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7686,6 +7726,15 @@ msgstr ""
"æ¯ä¸ªåœºæ™¯ä¸­åªå…许有一个CanvasModulate类型的节点,场景中的第一个CanvasModulate"
"节点能正常工作,其余的将被忽略。"
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+"该节点没有æè¿°å…¶å½¢çŠ¶çš„å­èŠ‚ç‚¹ï¼Œå› æ­¤å®ƒå°†æ— æ³•è¿›è¡Œç¢°æ’žäº¤äº’ã€‚\n"
+"请添加CollisionShape2D或CollisionPolygon2D类型的å­èŠ‚ç‚¹æ¥å®šä¹‰å®ƒçš„形状。"
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7758,21 +7807,21 @@ msgstr "ç²’å­æè´¨æ²¡æœ‰æŒ‡å®šï¼Œè¯¥è¡Œä¸ºæ— æ•ˆã€‚"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
-msgstr "PathFollow2Dç±»åž‹çš„èŠ‚ç‚¹åªæœ‰æ”¾åœ¨Path2D节点下æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+msgstr "PathFollow2Dç±»åž‹çš„èŠ‚ç‚¹åªæœ‰ä½œä¸ºPath2Dçš„å­èŠ‚ç‚¹èŠ‚æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody2D (character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°"
-"尺寸。\n"
-"修改å­èŠ‚ç‚¹ç¢°æ’žå½¢çŠ¶çš„å¤§å°ä½œä¸ºä»£æ›¿ã€‚"
+"对RigidBody2D (在character或rigidæ¨¡å¼æƒ³ï¼‰çš„尺寸修改在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•擎的覆"
+"盖。\n"
+"建议您修改å­èŠ‚ç‚¹çš„ç¢°æ’žå½¢çŠ¶ã€‚"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
-msgstr "path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Node2D节点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+msgstr "Path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Node2D节点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -7827,6 +7876,15 @@ msgstr "正在完æˆåˆ’分"
msgid "Lighting Meshes: "
msgstr "正在绘制网格"
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+"该节点没有æè¿°å…¶å½¢çŠ¶çš„å­èŠ‚ç‚¹ï¼Œå› æ­¤å®ƒå°†æ— æ³•è¿›è¡Œç¢°æ’žäº¤äº’ã€‚\n"
+"请添加CollisionShape或CollisionPolygon类型的å­èŠ‚ç‚¹æ¥å®šä¹‰å®ƒçš„形状。"
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7863,7 +7921,7 @@ msgstr "正在绘制网格"
#: scene/3d/navigation_mesh.cpp
msgid "A NavigationMesh resource must be set or created for this node to work."
-msgstr "此节点需è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½å·¥ä½œã€‚"
+msgstr "此节点需è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/3d/navigation_mesh.cpp
msgid ""
@@ -7875,17 +7933,17 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr "ç²’å­ä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshes)指定到绘制通é“(draw passes)。"
+msgstr "ç²’å­ä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshe)指定到绘制通é“(draw passes)。"
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
-"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody(character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°å°º"
-"寸。\n"
-"修改å­èŠ‚ç‚¹ç¢°æ’žå½¢çŠ¶çš„å¤§å°ä½œä¸ºä»£æ›¿ã€‚"
+"对RigidBody(在character或rigid模å¼ä¸‹ï¼‰çš„尺寸修改,在è¿è¡Œæ—¶ä¼šè¢«ç‰©ç†å¼•擎的覆"
+"盖。\n"
+"建议您修改å­èŠ‚ç‚¹çš„ç¢°æ’žå½¢çŠ¶ã€‚"
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7909,7 +7967,8 @@ msgid ""
"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
"it as a child of a VehicleBody."
msgstr ""
-"VehicleWheel 为 VehicleBody æä¾›ä¸€ä¸ªè½¦è½®ç³»ç»Ÿã€‚请将它作为VehicleBodyçš„å­èŠ‚ç‚¹ã€‚"
+"VehicleWheel 为 VehicleBody æä¾›ä¸€ä¸ªè½¦è½®ç³»ç»Ÿï¼ˆWheel System)。请将它作为"
+"VehicleBodyçš„å­èŠ‚ç‚¹ã€‚"
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
@@ -7928,9 +7987,8 @@ msgid "Please Confirm..."
msgstr "请确认..."
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Select this Folder"
-msgstr "选择方å¼"
+msgstr "选择当å‰ç›®å½•"
#: scene/gui/popup.cpp
msgid ""
@@ -7938,8 +7996,8 @@ msgid ""
"functions. Making them visible for editing is fine though, but they will "
"hide upon running."
msgstr ""
-"Popupå¯¹è±¡é»˜è®¤ä¿æŒéšè—,除éžä½ è°ƒç”¨popup()方法。编辑时å¯ä»¥è®©å®ƒä»¬ä¿æŒå¯è§ï¼Œä½†è¿"
-"行时它们会自动éšè—。"
+"Popupå¯¹è±¡é»˜è®¤ä¿æŒéšè—,除éžä½ è°ƒç”¨popup()或其他popup相关方法。编辑时å¯ä»¥è®©å®ƒä»¬"
+"ä¿æŒå¯è§ï¼Œä½†å®ƒåœ¨è¿è¡Œæ—¶ä»¬ä¼šè‡ªåЍéšè—。"
#: scene/gui/scroll_container.cpp
msgid ""
@@ -7948,8 +8006,7 @@ msgid ""
"minimum size manually."
msgstr ""
"ScrollContainer旨在与å•ä¸ªå­æŽ§ä»¶é…åˆä½¿ç”¨ã€‚\n"
-"使用Container(VBox,HBoxç­‰ï¼‰ä½œä¸ºå…¶å­æŽ§ä»¶å¹¶æ‰‹åŠ¨æˆ–è®¾ç½®Control的自定义最å°å°º"
-"寸。"
+"请使用Container(VBox,HBoxç­‰ï¼‰ä½œä¸ºå…¶å­æŽ§ä»¶æˆ–æ‰‹åŠ¨è®¾ç½®Control的最å°å°ºå¯¸ã€‚"
#: scene/gui/tree.cpp
msgid "(Other)"
@@ -7957,9 +8014,9 @@ msgstr "(其它)"
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
-msgstr "项目设置中的默认环境无法加载,详è§ï¼ˆæ¸²æŸ“->视图->默认环境) 。"
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
+msgstr "无法加载项目设置中的默认环境,详è§ï¼ˆæ¸²æŸ“->视图->默认环境)。"
#: scene/main/viewport.cpp
msgid ""
@@ -7968,9 +8025,9 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
-"这个Viewport未设置为render targetã€‚å¦‚æžœä½ åˆ»æ„æ‰“算让其直接在å±å¹•上显示其内容,"
-"使其æˆä¸ºå­æŽ§ä»¶çš„æ‰€ä»¥å®ƒå¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender target,并将其"
-"内部纹ç†åˆ†é…给一些节点以显示。"
+"这个Viewport未设置为渲染目标(render target)ã€‚å¦‚æžœä½ åˆ»æ„æ‰“算让其直接在å±å¹•上显"
+"示其内容,使其æˆä¸ºå­æŽ§ä»¶çš„æ‰€ä»¥å®ƒå¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender "
+"target,并将其内部纹ç†åˆ†é…给一些节点以显示。"
#: scene/resources/dynamic_font.cpp
msgid "Error initializing FreeType."
@@ -7988,6 +8045,38 @@ msgstr "加载字体出错。"
msgid "Invalid font size."
msgstr "字体大å°éžæ³•。"
+#~ msgid "Next"
+#~ msgstr "下一项"
+
+#~ msgid "Not found!"
+#~ msgstr "未找到ï¼"
+
+#~ msgid "Replace By"
+#~ msgstr "替æ¢"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "区分大å°å†™"
+
+#~ msgid "Backwards"
+#~ msgstr "å‘åŽ"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "æ›´æ¢æ—¶æç¤º"
+
+#~ msgid "Skip"
+#~ msgstr "跳过"
+
+#~ msgid ""
+#~ "Your project will be created in a non empty folder (you might want to "
+#~ "create a new folder)."
+#~ msgstr "您的工程在éžç©ºæ–‡ä»¶å¤¹ä¸­åˆ›å»º (您å¯èƒ½éœ€è¦å»ºç«‹ä¸€ä¸ªæ–°æ–‡ä»¶å¤¹)。"
+
+#~ msgid "That's a BINGO!"
+#~ msgstr "碉堡了ï¼"
+
+#~ msgid "preview"
+#~ msgstr "预览"
+
#~ msgid "Move Add Key"
#~ msgstr "移动已添加关键帧"
@@ -8084,9 +8173,6 @@ msgstr "字体大å°éžæ³•。"
#~ msgid "' parsing of config failed."
#~ msgstr "' è§£æžé…置失败。"
-#~ msgid "Theme"
-#~ msgstr "主题"
-
#~ msgid "Method List For '%s':"
#~ msgstr "'%s'的方法列表:"
@@ -8354,9 +8440,6 @@ msgstr "字体大å°éžæ³•。"
#~ msgid "Import Anyway"
#~ msgstr "ä»ç„¶å¯¼å…¥"
-#~ msgid "Import & Open"
-#~ msgstr "导入|打开"
-
#~ msgid "Edited scene has not been saved, open imported scene anyway?"
#~ msgstr "正在编辑的场景尚未ä¿å­˜ï¼Œä»ç„¶è¦æ‰“开导入的场景å—?"
@@ -8609,9 +8692,6 @@ msgstr "字体大å°éžæ³•。"
#~ msgid "Stereo"
#~ msgstr "立体声"
-#~ msgid "Mono"
-#~ msgstr "å•声é“"
-
#~ msgid "Pitch"
#~ msgstr "音调"
@@ -8778,9 +8858,6 @@ msgstr "字体大å°éžæ³•。"
#~ msgid "Alerts when an external resource has changed."
#~ msgstr "å¤–éƒ¨èµ„æºæ”¹å˜åŽå¼¹å‡ºæç¤ºã€‚"
-#~ msgid "Tutorials"
-#~ msgstr "教程"
-
#~ msgid "Open https://godotengine.org at tutorials section."
#~ msgstr "打开 https://godotengine.org 中的教程."
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index a4fd11fc40..3b380305d0 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -208,8 +208,7 @@ msgstr "新增 %d 個新軌跡並æ’入關éµå¹€ï¼Ÿ"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
#, fuzzy
msgid "Create"
msgstr "新增"
@@ -411,15 +410,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "å–代了 %d 個。"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Replace"
-msgstr "å–代"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "全部å–代"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "符åˆå¤§å°å¯«"
@@ -428,52 +418,17 @@ msgid "Whole Words"
msgstr "完整詞語"
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "åªé™é¸ä¸­"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœå°‹"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "尋找"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "下一個"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "找ä¸åˆ°!"
-
-#: editor/code_editor.cpp
#, fuzzy
-msgid "Replace By"
-msgstr "由這個å–代"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Case Sensitive"
-msgstr "å€åˆ†å¤§å°å¯«"
-
-#: editor/code_editor.cpp
-#, fuzzy
-msgid "Backwards"
-msgstr "å‘後"
+msgid "Replace"
+msgstr "å–代"
#: editor/code_editor.cpp
-#, fuzzy
-msgid "Prompt On Replace"
-msgstr "å–ä»£æ™‚è©¢å•æˆ‘"
+msgid "Replace All"
+msgstr "全部å–代"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "è·³éŽ"
+msgid "Selection Only"
+msgstr "åªé™é¸ä¸­"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -593,6 +548,17 @@ msgstr "訊號"
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "更改動畫循環"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change"
+msgstr "當改變時更新"
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "新增"
@@ -699,7 +665,8 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+#, fuzzy
+msgid "Cannot remove:"
msgstr "無法移除:\n"
#: editor/dependency_editor.cpp
@@ -786,9 +753,10 @@ msgstr "專案設定"
msgid "Lead Developer"
msgstr "開發者"
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
+msgstr "開啟 Project Manager?"
#: editor/editor_about.cpp
msgid "Developers"
@@ -878,7 +846,7 @@ msgid "Success!"
msgstr "æˆåŠŸï¼"
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr "安è£"
@@ -1212,8 +1180,9 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
-msgstr ""
+#, fuzzy
+msgid "Template file not found:"
+msgstr "未找到佈局å稱ï¼"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1438,6 +1407,18 @@ msgid "Description"
msgstr "æè¿°ï¼š"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Online Tutorials:"
+msgstr "關閉場景"
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1470,6 +1451,10 @@ msgstr ""
msgid "Search Text"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "尋找"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr ""
@@ -1481,6 +1466,11 @@ msgstr ""
msgid "Clear"
msgstr "清空"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "下一個腳本"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Error saving resource!"
@@ -1490,8 +1480,8 @@ msgstr "å„²å­˜è³‡æºæ™‚出ç¾éŒ¯èª¤ï¼"
msgid "Save Resource As.."
msgstr "把資æºå¦å­˜ç‚º..."
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "如來如此"
@@ -1552,7 +1542,8 @@ msgstr "ä¸èƒ½åŸ·è¡Œé€™å€‹å‹•作,因為沒有tree root."
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2139,6 +2130,13 @@ msgstr "幫助"
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœå°‹"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Online Docs"
@@ -2533,8 +2531,9 @@ msgid "No version.txt found inside templates."
msgstr "找ä¸åˆ°version.txt inside templates."
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr ""
+#, fuzzy
+msgid "Error creating path for templates:"
+msgstr "載入字形出ç¾éŒ¯èª¤"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2704,9 +2703,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2714,21 +2711,21 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "載入錯誤:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "載入錯誤:"
#: editor/filesystem_dock.cpp
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3385,6 +3382,11 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#, fuzzy
+msgid "AnimationTree"
+msgstr "新增動畫"
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3553,6 +3555,7 @@ msgid "Bake Lightmaps"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3858,19 +3861,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr "Ok"
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4248,7 +4254,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4642,15 +4648,19 @@ msgstr ""
msgid "Paste"
msgstr "貼上"
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "資æº"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
+#, fuzzy
+msgid "Close and save changes?"
+msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å­˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4727,6 +4737,11 @@ msgid "Copy Script Path"
msgstr "複製路徑"
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
+msgid "Show In File System"
+msgstr "檔案系統"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5168,86 +5183,86 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
+#, fuzzy
+msgid "Material Changes"
+msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes"
+msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
-msgstr ""
+#, fuzzy
+msgid "Surface Changes"
+msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "當改變時更新"
+msgid "Right View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Shader Changes"
-msgstr "當改變時更新"
+msgid "Right"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Surface Changes"
-msgstr "當改變時更新"
+msgid "Front View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5262,6 +5277,10 @@ msgstr "OK :("
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5339,17 +5358,12 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "é è¦½:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Select Mode (Q)\n"
+msgid "Select Mode (Q)"
msgstr "鏿“‡æ¨¡å¼"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5629,10 +5643,18 @@ msgstr "移動模å¼"
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5658,14 +5680,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5805,6 +5830,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5908,6 +5937,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr "å–æ¶ˆ"
@@ -6022,9 +6076,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -6036,6 +6088,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "無法新增資料夾"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -6077,14 +6138,29 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import & Edit"
+msgstr "å°Žå…¥"
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "新增"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Install & Edit"
+msgstr "安è£"
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -6102,10 +6178,6 @@ msgid "Browse"
msgstr "ç€è¦½"
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -6152,6 +6224,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6280,12 +6356,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Change"
-msgstr "當改變時更新"
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6675,10 +6745,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr "Ok"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6764,7 +6830,7 @@ msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
-msgid "Sub-Resources:"
+msgid "Sub-Resources"
msgstr "資æº"
#: editor/scene_tree_dock.cpp
@@ -7073,7 +7139,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr "錯誤"
@@ -7082,6 +7148,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "載入錯誤"
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7437,10 +7508,55 @@ msgstr "設定"
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to save solution."
+msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create C# project."
+msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Create C# solution"
+msgstr "縮放selection"
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "專案"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7803,27 +7919,32 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:\n"
+msgid "Could not write file:"
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:\n"
+msgid "Could not open template for export:"
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr "管ç†è¼¸å‡ºç¯„本"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:\n"
+msgid "Could not read custom HTML shell:"
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr "無法新增資料夾"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "無法新增資料夾"
#: scene/2d/animated_sprite.cpp
@@ -7838,6 +7959,13 @@ msgid ""
"scenes). The first created one will work, while the rest will be ignored."
msgstr ""
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7906,7 +8034,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7965,6 +8093,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -8010,8 +8145,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -8077,8 +8212,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -8105,6 +8240,35 @@ msgstr "載入字形出ç¾éŒ¯èª¤"
msgid "Invalid font size."
msgstr "無效字型"
+#~ msgid "Next"
+#~ msgstr "下一個"
+
+#~ msgid "Not found!"
+#~ msgstr "找ä¸åˆ°!"
+
+#, fuzzy
+#~ msgid "Replace By"
+#~ msgstr "由這個å–代"
+
+#, fuzzy
+#~ msgid "Case Sensitive"
+#~ msgstr "å€åˆ†å¤§å°å¯«"
+
+#, fuzzy
+#~ msgid "Backwards"
+#~ msgstr "å‘後"
+
+#, fuzzy
+#~ msgid "Prompt On Replace"
+#~ msgstr "å–ä»£æ™‚è©¢å•æˆ‘"
+
+#~ msgid "Skip"
+#~ msgstr "è·³éŽ"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "é è¦½:"
+
#, fuzzy
#~ msgid "Move Add Key"
#~ msgstr "移動"
@@ -8153,9 +8317,6 @@ msgstr "無效字型"
#~ msgid "Ctrl+"
#~ msgstr "Ctrl+"
-#~ msgid "Close scene? (Unsaved changes will be lost)"
-#~ msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å­˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰"
-
#~ msgid ""
#~ "Open Project Manager? \n"
#~ "(Unsaved changes will be lost)"
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index 1cd5d9a4a7..abdbf6dc2b 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -203,8 +203,7 @@ msgstr "創建 %d 個新軌並æ’入畫格?"
#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
-#: editor/script_create_dialog.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/script_create_dialog.cpp
msgid "Create"
msgstr "新增"
@@ -381,14 +380,6 @@ msgid "Replaced %d occurrence(s)."
msgstr "å–代了 %d 個"
#: editor/code_editor.cpp
-msgid "Replace"
-msgstr "å–代"
-
-#: editor/code_editor.cpp
-msgid "Replace All"
-msgstr "å–代全部"
-
-#: editor/code_editor.cpp
msgid "Match Case"
msgstr "符åˆå¤§å°å¯«"
@@ -397,48 +388,16 @@ msgid "Whole Words"
msgstr ""
#: editor/code_editor.cpp
-msgid "Selection Only"
-msgstr "åƒ…é¸æ“‡å€åŸŸ"
-
-#: editor/code_editor.cpp editor/editor_node.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœå°‹"
-
-#: editor/code_editor.cpp editor/editor_help.cpp
-msgid "Find"
-msgstr "尋找"
-
-#: editor/code_editor.cpp
-msgid "Next"
-msgstr "下一個"
-
-#: editor/code_editor.cpp
-msgid "Not found!"
-msgstr "找ä¸åˆ°!"
-
-#: editor/code_editor.cpp
-msgid "Replace By"
-msgstr "用...å–代"
-
-#: editor/code_editor.cpp
-msgid "Case Sensitive"
-msgstr "å€åˆ†å¤§å°å¯«"
-
-#: editor/code_editor.cpp
-msgid "Backwards"
-msgstr ""
+msgid "Replace"
+msgstr "å–代"
#: editor/code_editor.cpp
-msgid "Prompt On Replace"
-msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我"
+msgid "Replace All"
+msgstr "å–代全部"
#: editor/code_editor.cpp
-msgid "Skip"
-msgstr "è·³éŽ"
+msgid "Selection Only"
+msgstr "åƒ…é¸æ“‡å€åŸŸ"
#: editor/code_editor.cpp
msgid "Zoom In"
@@ -557,6 +516,16 @@ msgstr ""
#: editor/create_dialog.cpp
#, fuzzy
+msgid "Change %s Type"
+msgstr "變更é¡é ­å°ºå¯¸"
+
+#: editor/create_dialog.cpp editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/create_dialog.cpp
+#, fuzzy
msgid "Create New %s"
msgstr "新增"
@@ -666,7 +635,7 @@ msgstr ""
"此動作無法復原, 確定è¦åˆªé™¤å—Ž?"
#: editor/dependency_editor.cpp
-msgid "Cannot remove:\n"
+msgid "Cannot remove:"
msgstr ""
#: editor/dependency_editor.cpp
@@ -749,9 +718,10 @@ msgstr "專案創始人"
msgid "Lead Developer"
msgstr ""
-#: editor/editor_about.cpp editor/project_manager.cpp
-msgid "Project Manager"
-msgstr ""
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Project Manager "
+msgstr "專案創始人"
#: editor/editor_about.cpp
msgid "Developers"
@@ -836,7 +806,7 @@ msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Install"
msgstr ""
@@ -1149,7 +1119,7 @@ msgid "Packing"
msgstr ""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
-msgid "Template file not found:\n"
+msgid "Template file not found:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1364,6 +1334,17 @@ msgid "Description"
msgstr "æè¿°:"
#: editor/editor_help.cpp
+msgid "Online Tutorials:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There are currently no tutorials for this class, you can [color=$color][url="
+"$url]contribute one[/url][/color] or [color=$color][url=$url2]request one[/"
+"url][/color]."
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Properties"
msgstr ""
@@ -1395,6 +1376,10 @@ msgstr ""
msgid "Search Text"
msgstr "æœå°‹è©žå½™"
+#: editor/editor_help.cpp
+msgid "Find"
+msgstr "尋找"
+
#: editor/editor_log.cpp
msgid "Output:"
msgstr "輸出:"
@@ -1406,6 +1391,11 @@ msgstr "輸出:"
msgid "Clear"
msgstr "清除"
+#: editor/editor_log.cpp
+#, fuzzy
+msgid "Clear Output"
+msgstr "輸出:"
+
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Error saving resource!"
msgstr ""
@@ -1414,8 +1404,8 @@ msgstr ""
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/spatial_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "我知é“了"
@@ -1470,7 +1460,8 @@ msgstr "æ­¤æ“作無法復原, 確定è¦é‚„原嗎?"
#: editor/editor_node.cpp
msgid ""
-"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+"Couldn't save scene. Likely dependencies (instances or inheritance) couldn't "
+"be satisfied."
msgstr ""
#: editor/editor_node.cpp
@@ -2032,6 +2023,13 @@ msgstr ""
msgid "Classes"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœå°‹"
+
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
msgstr ""
@@ -2412,8 +2410,9 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:\n"
-msgstr ""
+#, fuzzy
+msgid "Error creating path for templates:"
+msgstr "載入場景時發生錯誤"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2576,9 +2575,7 @@ msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Import of file failed. Please fix file and reimport manually."
+msgid "Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2586,22 +2583,22 @@ msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Cannot move a folder into itself.\n"
+msgid "Cannot move a folder into itself."
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving:\n"
+msgid "Error moving:"
msgstr "載入時發生錯誤:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error duplicating:\n"
+msgid "Error duplicating:"
msgstr "載入時發生錯誤:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Unable to update dependencies:\n"
+msgid "Unable to update dependencies:"
msgstr "場景缺少了æŸäº›è³‡æºä»¥è‡³æ–¼ç„¡æ³•載入"
#: editor/filesystem_dock.cpp
@@ -3246,6 +3243,10 @@ msgstr ""
msgid "Filters.."
msgstr ""
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "AnimationTree"
+msgstr ""
+
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Free"
msgstr ""
@@ -3414,6 +3415,7 @@ msgid "Bake Lightmaps"
msgstr "變更光æºåŠå¾‘"
#: editor/plugins/camera_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3716,19 +3718,22 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
+#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Create Node"
+msgid "Cannot instantiate multiple nodes without root."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "Error instancing scene from %s"
+msgid "Create Node"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
-msgid "This operation requires a single selected node."
+msgid "Error instancing scene from %s"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -4105,7 +4110,7 @@ msgid "Bake!"
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
-msgid "Bake the navigation mesh.\n"
+msgid "Bake the navigation mesh."
msgstr ""
#: editor/plugins/navigation_mesh_editor_plugin.cpp
@@ -4498,15 +4503,19 @@ msgstr ""
msgid "Paste"
msgstr ""
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#, fuzzy
+msgid "ResourcePreloader"
+msgstr "資æºè·¯å¾‘"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid ""
-"Close and save changes?\n"
-"\""
-msgstr ""
+#, fuzzy
+msgid "Close and save changes?"
+msgstr "沒有儲存的變更都會éºå¤±, 確定è¦é—œé–‰?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4582,6 +4591,10 @@ msgid "Copy Script Path"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+msgid "Show In File System"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "History Prev"
msgstr ""
@@ -5019,84 +5032,84 @@ msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom View."
+msgid "Keying is disabled (no key inserted)."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Bottom"
+msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top View."
+msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear View."
-msgstr ""
+#, fuzzy
+msgid "Material Changes"
+msgstr "正在儲存變更.."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Rear"
+msgid "Shader Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front View."
+msgid "Surface Changes"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Front"
+msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left View."
+msgid "Vertices"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Left"
+msgid "FPS"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right View."
+msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Right"
+msgid "Bottom View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Keying is disabled (no key inserted)."
+msgid "Bottom"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Animation Key Inserted."
+msgid "Left View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Left"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Material Changes"
-msgstr "正在儲存變更.."
+msgid "Right View."
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Front View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Front"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Rear View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "FPS"
+msgid "Rear"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5111,6 +5124,10 @@ msgstr ""
msgid "No parent to instance a child at."
msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Normal"
msgstr ""
@@ -5187,17 +5204,13 @@ msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "preview"
-msgstr "é è¦½:"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Select Mode (Q)\n"
-msgstr ""
+#, fuzzy
+msgid "Select Mode (Q)"
+msgstr "åƒ…é¸æ“‡å€åŸŸ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -5472,10 +5485,18 @@ msgstr ""
msgid "Move (After)"
msgstr ""
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "SpriteFrames"
+msgstr ""
+
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr ""
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox"
+msgstr ""
+
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Set Region Rect"
msgstr ""
@@ -5501,14 +5522,17 @@ msgid "Auto Slice"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Offset:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Separation:"
msgstr ""
@@ -5647,6 +5671,10 @@ msgstr ""
msgid "Color"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme"
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5749,6 +5777,31 @@ msgstr ""
msgid "Error"
msgstr ""
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Autotiles"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"Select sub-tile to use as icon, this will be also used on invalid autotile "
+"bindings."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid ""
+"LMB: set bit on.\n"
+"RMB: set bit off."
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+#, fuzzy
+msgid "Select current edited sub-tile."
+msgstr "新增資料夾"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Select sub-tile to change its priority."
+msgstr ""
+
#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
msgid "Cancel"
msgstr ""
@@ -5859,9 +5912,7 @@ msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Your project will be created in a non empty folder (you might want to create "
-"a new folder)."
+msgid "Please choose an empty folder."
msgstr ""
#: editor/project_manager.cpp
@@ -5873,6 +5924,15 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't create folder."
+msgstr "無法新增資料夾"
+
+#: editor/project_manager.cpp
+msgid "There is already a folder in this path with the specified name."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "It would be a good idea to name your project."
msgstr ""
@@ -5914,14 +5974,27 @@ msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Create & Edit"
+msgstr "新增"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Install & Edit"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project Name:"
msgstr ""
@@ -5939,10 +6012,6 @@ msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "That's a BINGO!"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Unnamed Project"
msgstr ""
@@ -5989,6 +6058,10 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Project List"
msgstr ""
@@ -6116,11 +6189,6 @@ msgid "Button 9"
msgstr ""
#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Change"
-msgstr ""
-
-#: editor/project_settings_editor.cpp
msgid "Joypad Axis Index:"
msgstr ""
@@ -6504,10 +6572,6 @@ msgid "Error loading scene from %s"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Ok"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot instance the scene '%s' because the current scene exists within one "
"of its nodes."
@@ -6592,8 +6656,9 @@ msgid "Error duplicating scene to save it."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Sub-Resources:"
-msgstr ""
+#, fuzzy
+msgid "Sub-Resources"
+msgstr "複製資æº"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6891,7 +6956,7 @@ msgstr ""
msgid "Pick one or more items from the list to display the graph."
msgstr ""
-#: editor/script_editor_debugger.cpp
+#: editor/script_editor_debugger.cpp modules/mono/editor/mono_bottom_panel.cpp
msgid "Errors"
msgstr ""
@@ -6900,6 +6965,11 @@ msgid "Child Process Connected"
msgstr ""
#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Copy Error"
+msgstr "連接..."
+
+#: editor/script_editor_debugger.cpp
msgid "Inspect Previous Instance"
msgstr ""
@@ -7263,10 +7333,52 @@ msgstr "專案設定"
msgid "Pick Distance:"
msgstr ""
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating solution..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Generating C# project..."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+#, fuzzy
+msgid "Failed to create solution."
+msgstr "無法新增資料夾"
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to save solution."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Done"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Failed to create C# project."
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Mono"
+msgstr ""
+
+#: modules/mono/editor/godotsharp_editor.cpp
+msgid "Create C# solution"
+msgstr ""
+
#: modules/mono/editor/mono_bottom_panel.cpp
msgid "Builds"
msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+#, fuzzy
+msgid "Build Project"
+msgstr "專案設定"
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Warnings"
+msgstr ""
+
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
@@ -7616,24 +7728,32 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not write file:"
+msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not open template for export:"
+msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:\n"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:\n"
-msgstr ""
+#, fuzzy
+msgid "Could not read custom HTML shell:"
+msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:\n"
+msgid "Could not read boot splash image file:"
+msgstr "無法新增資料夾"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Using default boot splash image."
msgstr "無法新增資料夾"
#: scene/2d/animated_sprite.cpp
@@ -7650,6 +7770,13 @@ msgstr ""
"æ¯å€‹å ´æ™¯ä¸­åƒ…å…許一個å¯è¦‹çš„CanvasModulateï¼Œåªæœ‰ç¬¬ä¸€å€‹CanvasModulate會有作用,"
"其餘的將被忽略。"
+#: scene/2d/collision_object_2d.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape2D or CollisionPolygon2D children nodes to "
+"define its shape."
+msgstr ""
+
#: scene/2d/collision_polygon_2d.cpp
msgid ""
"CollisionPolygon2D only serves to provide a collision shape to a "
@@ -7722,7 +7849,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp
msgid ""
-"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"Size changes to RigidBody2D (in character or rigid modes) will be overridden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7781,6 +7908,13 @@ msgstr ""
msgid "Lighting Meshes: "
msgstr ""
+#: scene/3d/collision_object.cpp
+msgid ""
+"This node has no children shapes, so it can't interact with the space.\n"
+"Consider adding CollisionShape or CollisionPolygon children nodes to define "
+"its shape."
+msgstr ""
+
#: scene/3d/collision_polygon.cpp
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
@@ -7826,8 +7960,8 @@ msgstr ""
#: scene/3d/physics_body.cpp
msgid ""
-"Size changes to RigidBody (in character or rigid modes) will be overriden by "
-"the physics engine when running.\n"
+"Size changes to RigidBody (in character or rigid modes) will be overridden "
+"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
@@ -7893,8 +8027,8 @@ msgstr ""
#: scene/main/scene_tree.cpp
msgid ""
-"Default Environment as specified in Project Setings (Rendering -> Viewport -"
-"> Default Environment) could not be loaded."
+"Default Environment as specified in Project Settings (Rendering -> "
+"Environment -> Default Environment) could not be loaded."
msgstr ""
#: scene/main/viewport.cpp
@@ -7921,6 +8055,28 @@ msgstr "讀å–字體錯誤。"
msgid "Invalid font size."
msgstr "無效的字體大å°ã€‚"
+#~ msgid "Next"
+#~ msgstr "下一個"
+
+#~ msgid "Not found!"
+#~ msgstr "找ä¸åˆ°!"
+
+#~ msgid "Replace By"
+#~ msgstr "用...å–代"
+
+#~ msgid "Case Sensitive"
+#~ msgstr "å€åˆ†å¤§å°å¯«"
+
+#~ msgid "Prompt On Replace"
+#~ msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我"
+
+#~ msgid "Skip"
+#~ msgstr "è·³éŽ"
+
+#, fuzzy
+#~ msgid "preview"
+#~ msgstr "é è¦½:"
+
#~ msgid "List:"
#~ msgstr "列表:"
@@ -7946,9 +8102,6 @@ msgstr "無效的字體大å°ã€‚"
#~ msgid "Ctrl+"
#~ msgstr "Ctrl+"
-#~ msgid "Close scene? (Unsaved changes will be lost)"
-#~ msgstr "沒有儲存的變更都會éºå¤±, 確定è¦é—œé–‰?"
-
#~ msgid ""
#~ "Open Project Manager? \n"
#~ "(Unsaved changes will be lost)"
diff --git a/main/input_default.cpp b/main/input_default.cpp
index 5026b8bb39..fb831b7647 100644
--- a/main/input_default.cpp
+++ b/main/input_default.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "input_default.h"
#include "input_map.h"
@@ -497,26 +498,16 @@ bool InputDefault::is_emulating_touchscreen() const {
return emulate_touch;
}
-void InputDefault::set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot) {
- /* no longer supported, leaving this for reference to anyone who might want to implement hardware cursors
+void InputDefault::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ if (Engine::get_singleton()->is_editor_hint())
+ return;
+
if (custom_cursor == p_cursor)
return;
custom_cursor = p_cursor;
- if (p_cursor.is_null()) {
- set_mouse_mode(MOUSE_MODE_VISIBLE);
- //removed, please insist us to implement hardare cursors
- //VisualServer::get_singleton()->cursor_set_visible(false);
- } else {
- Ref<AtlasTexture> atex = custom_cursor;
- Rect2 region = atex.is_valid() ? atex->get_region() : Rect2();
- set_mouse_mode(MOUSE_MODE_HIDDEN);
- VisualServer::get_singleton()->cursor_set_visible(true);
- VisualServer::get_singleton()->cursor_set_texture(custom_cursor->get_rid(), p_hotspot, 0, region);
- VisualServer::get_singleton()->cursor_set_pos(get_mouse_position());
- }
- */
+ OS::get_singleton()->set_custom_mouse_cursor(p_cursor, (OS::CursorShape)p_shape, p_hotspot);
}
void InputDefault::set_mouse_in_window(bool p_in_window) {
diff --git a/main/input_default.h b/main/input_default.h
index 62ba0b0c32..0479fdc0ff 100644
--- a/main/input_default.h
+++ b/main/input_default.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INPUT_DEFAULT_H
#define INPUT_DEFAULT_H
@@ -225,7 +226,7 @@ public:
void set_emulate_touch(bool p_emulate);
virtual bool is_emulating_touchscreen() const;
- virtual void set_custom_mouse_cursor(const RES &p_cursor, const Vector2 &p_hotspot = Vector2());
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape = Input::CURSOR_ARROW, const Vector2 &p_hotspot = Vector2());
virtual void set_mouse_in_window(bool p_in_window);
void parse_mapping(String p_mapping);
diff --git a/main/main.cpp b/main/main.cpp
index 5936a323d4..f6a8391447 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main.h"
#include "app_icon.gen.h"
@@ -664,6 +665,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
GLOBAL_DEF("memory/limits/multithreaded_server/rid_pool_prealloc", 60);
GLOBAL_DEF("network/limits/debugger_stdout/max_chars_per_second", 2048);
+ GLOBAL_DEF("network/limits/debugger_stdout/max_messages_per_frame", 10);
+ GLOBAL_DEF("network/limits/debugger_stdout/max_errors_per_frame", 10);
if (debug_mode == "remote") {
@@ -900,12 +903,12 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->set_screen_orientation(OS::SCREEN_LANDSCAPE);
}
- Engine::get_singleton()->set_iterations_per_second(GLOBAL_DEF("physics/common/fixed_fps", 60));
+ Engine::get_singleton()->set_iterations_per_second(GLOBAL_DEF("physics/common/physics_fps", 60));
Engine::get_singleton()->set_target_fps(GLOBAL_DEF("debug/settings/fps/force_fps", 0));
GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose());
- if (!OS::get_singleton()->_verbose_stdout) //overrided
+ if (!OS::get_singleton()->_verbose_stdout) //overridden
OS::get_singleton()->_verbose_stdout = GLOBAL_DEF("debug/settings/stdout/verbose_stdout", false);
if (frame_delay == 0) {
@@ -983,7 +986,10 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
Thread::_main_thread_id = p_main_tid_override;
}
- OS::get_singleton()->initialize(video_mode, video_driver_idx, audio_driver_idx);
+ Error err = OS::get_singleton()->initialize(video_mode, video_driver_idx, audio_driver_idx);
+ if (err != OK) {
+ return err;
+ }
if (init_use_custom_pos) {
OS::get_singleton()->set_window_position(init_custom_pos);
}
@@ -1107,7 +1113,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
if (cursor.is_valid()) {
//print_line("loaded ok");
Vector2 hotspot = ProjectSettings::get_singleton()->get("display/mouse_cursor/custom_image_hotspot");
- Input::get_singleton()->set_custom_mouse_cursor(cursor, hotspot);
+ Input::get_singleton()->set_custom_mouse_cursor(cursor, Input::CURSOR_ARROW, hotspot);
}
}
#ifdef TOOLS_ENABLED
@@ -1769,7 +1775,7 @@ bool Main::iteration() {
if (frame > 1000000) {
- if (GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose())) {
+ if (GLOBAL_DEF("debug/settings/stdout/print_fps", OS::get_singleton()->is_stdout_verbose()) && !editor) {
print_line("FPS: " + itos(frames));
};
@@ -1816,6 +1822,9 @@ void Main::cleanup() {
ERR_FAIL_COND(!_start_success);
+ message_queue->flush();
+ memdelete(message_queue);
+
if (script_debugger) {
if (use_debug_profiler) {
script_debugger->profiling_end();
@@ -1839,11 +1848,6 @@ void Main::cleanup() {
EditorNode::unregister_editor_types();
#endif
- if (audio_server) {
- audio_server->finish();
- memdelete(audio_server);
- }
-
if (arvr_server) {
// cleanup now before we pull the rug from underneath...
memdelete(arvr_server);
@@ -1855,6 +1859,11 @@ void Main::cleanup() {
unregister_scene_types();
unregister_server_types();
+ if (audio_server) {
+ audio_server->finish();
+ memdelete(audio_server);
+ }
+
OS::get_singleton()->finalize();
finalize_physics();
@@ -1873,9 +1882,6 @@ void Main::cleanup() {
if (engine)
memdelete(engine);
- message_queue->flush();
- memdelete(message_queue);
-
unregister_core_driver_types();
unregister_core_types();
diff --git a/main/main.h b/main/main.h
index 4455f4b8ec..1165c79494 100644
--- a/main/main.h
+++ b/main/main.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MAIN_H
#define MAIN_H
diff --git a/main/performance.cpp b/main/performance.cpp
index 0ff2f5d540..fc915e2e76 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "performance.h"
#include "message_queue.h"
#include "os/os.h"
diff --git a/main/performance.h b/main/performance.h
index 0c8406e464..464226b517 100644
--- a/main/performance.h
+++ b/main/performance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PERFORMANCE_H
#define PERFORMANCE_H
diff --git a/main/tests/test_gdscript.cpp b/main/tests/test_gdscript.cpp
index 1580a8e664..5c7633a0cf 100644
--- a/main/tests/test_gdscript.cpp
+++ b/main/tests/test_gdscript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_gdscript.h"
#include "os/file_access.h"
diff --git a/main/tests/test_gdscript.h b/main/tests/test_gdscript.h
index 218f7a21a0..91e0be1238 100644
--- a/main/tests/test_gdscript.h
+++ b/main/tests/test_gdscript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_GDSCRIPT_H
#define TEST_GDSCRIPT_H
diff --git a/main/tests/test_gui.cpp b/main/tests/test_gui.cpp
index e9bbd2489e..b7b6c21692 100644
--- a/main/tests/test_gui.cpp
+++ b/main/tests/test_gui.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef _3D_DISABLED
#include "test_gui.h"
diff --git a/main/tests/test_gui.h b/main/tests/test_gui.h
index 156b3ed182..3ed9dae522 100644
--- a/main/tests/test_gui.h
+++ b/main/tests/test_gui.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_GUI_H
#define TEST_GUI_H
diff --git a/main/tests/test_image.cpp b/main/tests/test_image.cpp
index eb7b4f8076..cb87458a93 100644
--- a/main/tests/test_image.cpp
+++ b/main/tests/test_image.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_image.h"
#include "io/image_loader.h"
diff --git a/main/tests/test_image.h b/main/tests/test_image.h
index ce1dabb433..d45b4e4e15 100644
--- a/main/tests/test_image.h
+++ b/main/tests/test_image.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_IMAGE_H
#define TEST_IMAGE_H
diff --git a/main/tests/test_io.cpp b/main/tests/test_io.cpp
index 42d79ba1f6..08dc374ed1 100644
--- a/main/tests/test_io.cpp
+++ b/main/tests/test_io.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_io.h"
#ifdef MINIZIP_ENABLED
diff --git a/main/tests/test_io.h b/main/tests/test_io.h
index 2cc1bfefaf..76567829e7 100644
--- a/main/tests/test_io.h
+++ b/main/tests/test_io.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_IO_H
#define TEST_IO_H
diff --git a/main/tests/test_main.cpp b/main/tests/test_main.cpp
index 41eae89c9e..c9431a1a09 100644
--- a/main/tests/test_main.cpp
+++ b/main/tests/test_main.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "list.h"
#include "os/main_loop.h"
diff --git a/main/tests/test_main.h b/main/tests/test_main.h
index 6f78127521..d319391070 100644
--- a/main/tests/test_main.h
+++ b/main/tests/test_main.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_MAIN_H
#define TEST_MAIN_H
diff --git a/main/tests/test_math.cpp b/main/tests/test_math.cpp
index 515b43a38a..8b71c5dc70 100644
--- a/main/tests/test_math.cpp
+++ b/main/tests/test_math.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_math.h"
#include "camera_matrix.h"
diff --git a/main/tests/test_math.h b/main/tests/test_math.h
index e3b74e94de..26a33aa164 100644
--- a/main/tests/test_math.h
+++ b/main/tests/test_math.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_MATH_H
#define TEST_MATH_H
diff --git a/main/tests/test_oa_hash_map.cpp b/main/tests/test_oa_hash_map.cpp
index 47ae8912b2..ac65fdf19c 100644
--- a/main/tests/test_oa_hash_map.cpp
+++ b/main/tests/test_oa_hash_map.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* test_oa_hash_map.h */
+/* test_oa_hash_map.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
diff --git a/main/tests/test_oa_hash_map.h b/main/tests/test_oa_hash_map.h
index c2812cebb7..a63da537d8 100644
--- a/main/tests/test_oa_hash_map.h
+++ b/main/tests/test_oa_hash_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_OA_HASH_MAP_H
#define TEST_OA_HASH_MAP_H
diff --git a/main/tests/test_ordered_hash_map.cpp b/main/tests/test_ordered_hash_map.cpp
index b57bc0bcc9..668a8788ff 100644
--- a/main/tests/test_ordered_hash_map.cpp
+++ b/main/tests/test_ordered_hash_map.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/main/tests/test_ordered_hash_map.h b/main/tests/test_ordered_hash_map.h
index a327e4e18b..6723e70b79 100644
--- a/main/tests/test_ordered_hash_map.h
+++ b/main/tests/test_ordered_hash_map.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_ORDERED_HASH_MAP_H
#define TEST_ORDERED_HASH_MAP_H
diff --git a/main/tests/test_physics.cpp b/main/tests/test_physics.cpp
index 275f67cd86..475663dabe 100644
--- a/main/tests/test_physics.cpp
+++ b/main/tests/test_physics.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_physics.h"
#include "map.h"
diff --git a/main/tests/test_physics.h b/main/tests/test_physics.h
index 2b51899394..4d62f3a0cf 100644
--- a/main/tests/test_physics.h
+++ b/main/tests/test_physics.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_PHYSICS_H
#define TEST_PHYSICS_H
diff --git a/main/tests/test_physics_2d.cpp b/main/tests/test_physics_2d.cpp
index 0af74a656e..482a858650 100644
--- a/main/tests/test_physics_2d.cpp
+++ b/main/tests/test_physics_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_physics_2d.h"
#include "map.h"
diff --git a/main/tests/test_physics_2d.h b/main/tests/test_physics_2d.h
index e927a595ea..1031aa7f71 100644
--- a/main/tests/test_physics_2d.h
+++ b/main/tests/test_physics_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_PHYSICS_2D_H
#define TEST_PHYSICS_2D_H
diff --git a/main/tests/test_render.cpp b/main/tests/test_render.cpp
index fa415e9bca..9340e69bc5 100644
--- a/main/tests/test_render.cpp
+++ b/main/tests/test_render.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_render.h"
#include "math_funcs.h"
diff --git a/main/tests/test_render.h b/main/tests/test_render.h
index c79d9edcc7..9084b57067 100644
--- a/main/tests/test_render.h
+++ b/main/tests/test_render.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_RENDER_H
#define TEST_RENDER_H
diff --git a/main/tests/test_shader_lang.cpp b/main/tests/test_shader_lang.cpp
index 1ca43686d4..63032597ed 100644
--- a/main/tests/test_shader_lang.cpp
+++ b/main/tests/test_shader_lang.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "test_shader_lang.h"
#include "os/file_access.h"
diff --git a/main/tests/test_shader_lang.h b/main/tests/test_shader_lang.h
index 9dd4958c55..235bf10463 100644
--- a/main/tests/test_shader_lang.h
+++ b/main/tests/test_shader_lang.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_SHADER_LANG_H
#define TEST_SHADER_LANG_H
diff --git a/main/tests/test_string.cpp b/main/tests/test_string.cpp
index 129adc5477..af948556c4 100644
--- a/main/tests/test_string.cpp
+++ b/main/tests/test_string.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ustring.h"
#include <wchar.h>
//#include "math_funcs.h"
@@ -892,7 +893,7 @@ TestFunc test_funcs[] = {
MainLoop *test() {
- /** A character length != wchar_t may be forced, so the tests wont work */
+ /** A character length != wchar_t may be forced, so the tests won't work */
ERR_FAIL_COND_V(sizeof(CharType) != sizeof(wchar_t), NULL);
diff --git a/main/tests/test_string.h b/main/tests/test_string.h
index 5e34929ff1..110e115309 100644
--- a/main/tests/test_string.h
+++ b/main/tests/test_string.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEST_STRING_H
#define TEST_STRING_H
diff --git a/methods.py b/methods.py
index f9da6c8dd5..f4d33fb6d8 100644
--- a/methods.py
+++ b/methods.py
@@ -1274,6 +1274,8 @@ def detect_modules():
for x in files:
if (not os.path.isdir(x)):
continue
+ if (not os.path.exists(x + "/config.py")):
+ continue
x = x.replace("modules/", "") # rest of world
x = x.replace("modules\\", "") # win32
module_list.append(x)
@@ -1475,7 +1477,7 @@ def use_windows_spawn_fix(self, platform=None):
self['SPAWN'] = mySpawn
-def split_lib(self, libname):
+def split_lib(self, libname, src_list = None, env_lib = None):
import string
env = self
@@ -1485,7 +1487,13 @@ def split_lib(self, libname):
list = []
lib_list = []
- for f in getattr(env, libname + "_sources"):
+ if src_list == None:
+ src_list = getattr(env, libname + "_sources")
+
+ if type(env_lib) == type(None):
+ env_lib = env
+
+ for f in src_list:
fname = ""
if type(f) == type(""):
fname = env.File(f).path
@@ -1495,26 +1503,26 @@ def split_lib(self, libname):
base = string.join(fname.split("/")[:2], "/")
if base != cur_base and len(list) > max_src:
if num > 0:
- lib = env.add_library(libname + str(num), list)
+ lib = env_lib.add_library(libname + str(num), list)
lib_list.append(lib)
list = []
num = num + 1
cur_base = base
list.append(f)
- lib = env.add_library(libname + str(num), list)
+ lib = env_lib.add_library(libname + str(num), list)
lib_list.append(lib)
if len(lib_list) > 0:
import os, sys
if os.name == 'posix' and sys.platform == 'msys':
env.Replace(ARFLAGS=['rcsT'])
- lib = env.add_library(libname + "_collated", lib_list)
+ lib = env_lib.add_library(libname + "_collated", lib_list)
lib_list = [lib]
lib_base = []
- env.add_source_files(lib_base, "*.cpp")
- lib = env.add_library(libname, lib_base)
+ env_lib.add_source_files(lib_base, "*.cpp")
+ lib = env_lib.add_library(libname, lib_base)
lib_list.insert(0, lib)
env.Prepend(LIBS=lib_list)
@@ -1547,18 +1555,26 @@ def save_active_platforms(apnames, ap):
def no_verbose(sys, env):
- # If the output is not a terminal, do nothing
- if not sys.stdout.isatty():
- return
-
colors = {}
- colors['cyan'] = '\033[96m'
- colors['purple'] = '\033[95m'
- colors['blue'] = '\033[94m'
- colors['green'] = '\033[92m'
- colors['yellow'] = '\033[93m'
- colors['red'] = '\033[91m'
- colors['end'] = '\033[0m'
+
+ # Colors are disabled in non-TTY environments such as pipes. This means
+ # that if output is redirected to a file, it will not contain color codes
+ if sys.stdout.isatty():
+ colors['cyan'] = '\033[96m'
+ colors['purple'] = '\033[95m'
+ colors['blue'] = '\033[94m'
+ colors['green'] = '\033[92m'
+ colors['yellow'] = '\033[93m'
+ colors['red'] = '\033[91m'
+ colors['end'] = '\033[0m'
+ else:
+ colors['cyan'] = ''
+ colors['purple'] = ''
+ colors['blue'] = ''
+ colors['green'] = ''
+ colors['yellow'] = ''
+ colors['red'] = ''
+ colors['end'] = ''
compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end'])
java_compile_source_message = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end'])
@@ -1588,10 +1604,10 @@ def detect_visual_c_compiler_version(tools_env):
# and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect
# the proper vc version that will be called
- # These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
+ # There is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
# There are many different cl.exe files that are run, and each one compiles & links to a different architecture
# As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program()
- # is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns:
+ # is to check the PATH variable and figure out which one will be called first. Code bellow does that and returns:
# the following string values:
# "" Compiler not detected
diff --git a/misc/dist/html/default.html b/misc/dist/html/default.html
index 0f78fc640e..a1a4e89d02 100644
--- a/misc/dist/html/default.html
+++ b/misc/dist/html/default.html
@@ -350,7 +350,7 @@ $GODOT_HEAD_INCLUDE
};
function printError(text) {
- if (!text.startsWith('**ERROR**: ')) {
+ if (!String.prototype.trim.call(text).startsWith('**ERROR**: ')) {
text = '**ERROR**: ' + text;
}
print(text);
diff --git a/misc/dist/ios_xcode/godot_ios/dummy.cpp b/misc/dist/ios_xcode/godot_ios/dummy.cpp
index 78ec87fc10..61de772b44 100644
--- a/misc/dist/ios_xcode/godot_ios/dummy.cpp
+++ b/misc/dist/ios_xcode/godot_ios/dummy.cpp
@@ -1 +1 @@
-$cpp_code \ No newline at end of file
+$cpp_code
diff --git a/misc/dist/linux/godot.6 b/misc/dist/linux/godot.6
index 946fa6c913..22836e03ed 100644
--- a/misc/dist/linux/godot.6
+++ b/misc/dist/linux/godot.6
@@ -1,4 +1,4 @@
-.TH GODOT "6" "September 2017" "godot 3.0-alpha" "Games"
+.TH GODOT "6" "January 2018" "godot 3.0" "Games"
.SH NAME
godot \- multi\-platform 2D and 3D game engine with a feature\-rich editor
.SH SYNOPSIS
@@ -37,6 +37,9 @@ Use a specific locale (<locale> being a two\-letter code).
\fB\-\-path\fR <directory>
Path to a project (<directory> must contain a 'project.godot' file).
.TP
+\fB\-u\fR, \fB\-\-upwards\fR
+Scan folders upwards for project.godot file.
+.TP
\fB\-\-main\-pack\fR <file>
Path to a pack (.pck) file to load.
.TP
@@ -133,17 +136,17 @@ Generate JSON dump of the Godot API for GDNative bindings.
\fB\-\-test\fR <test>
Run a unit test ('string', 'containers', 'math', 'render', 'multimesh', 'gui', 'io', 'shaderlang', 'physics', 'oa_hash_map').
.SH FILES
-~/.godot/
+XDG_DATA_CONFIG/godot/ or ~/.config/godot/
.RS
-User\-specific configuration and cache folder, contains persistent editor and game configuration and saved files, temporary metadata, etc.
+User\-specific configuration folder, contains persistent editor settings, script and text editor templates and projects metadata.
.RE
-~/.godot/app_userdata/
+XDG_DATA_HOME/godot/ or ~/.local/share/godot/
.RS
-Contains the default configuration and user data folders for Godot\-made games (\fIuser://\fR path).
+Contains the default configuration and user data folders for Godot\-made games (\fIuser://\fR path), as well as export templates.
.RE
-~/.godot/templates/
+XDG_DATA_CACHE/godot or ~/.cache/godot/
.RS
-Installation folder for "export templates", compiled binaries of the engine to deploy on the many supported platforms.
+Cache folder for generated thumbnails and scene previews, as well as temporary location for downloads.
.RE
/usr/share/doc/godot/
.RS
diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist
index 2a4914ec75..828a40206d 100755
--- a/misc/dist/osx_tools.app/Contents/Info.plist
+++ b/misc/dist/osx_tools.app/Contents/Info.plist
@@ -9,7 +9,7 @@
<key>CFBundleName</key>
<string>Godot</string>
<key>CFBundleGetInfoString</key>
- <string>(c) 2007-2018 Juan Linietsky, Ariel Manzur./string>
+ <string>(c) 2007-2018 Juan Linietsky, Ariel Manzur.</string>
<key>CFBundleIconFile</key>
<string>Godot.icns</string>
<key>CFBundleIdentifier</key>
@@ -19,13 +19,13 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>3.0-dev</string>
+ <string>3.0</string>
<key>CFBundleSignature</key>
<string>godot</string>
<key>CFBundleVersion</key>
- <string>3.0-dev</string>
+ <string>3.0</string>
<key>NSHumanReadableCopyright</key>
- <string>© 2007-2018 Juan Linietsky, Ariel Manzur./string>
+ <string>© 2007-2018 Juan Linietsky, Ariel Manzur.</string>
<key>LSMinimumSystemVersion</key>
<string>10.9.0</string>
<key>LSMinimumSystemVersionByArchitecture</key>
diff --git a/misc/scripts/addheader.py b/misc/scripts/fix_headers.py
index 58d9fa35a3..809820c20f 100644
--- a/misc/scripts/addheader.py
+++ b/misc/scripts/fix_headers.py
@@ -1,3 +1,6 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
header = """\
/*************************************************************************/
/* $filename */
@@ -30,22 +33,21 @@ header = """\
/*************************************************************************/
"""
-f = open("files", "rb")
+files = open("files", "rb")
+
+fname = files.readline()
-fname = f.readline()
while (fname != ""):
- fr = open(fname.strip(), "rb")
- l = fr.readline()
- bc = False
+ # Handle replacing $filename with actual filename and keep alignment
fsingle = fname.strip()
-
if (fsingle.find("/") != -1):
fsingle = fsingle[fsingle.rfind("/") + 1:]
rep_fl = "$filename"
rep_fi = fsingle
len_fl = len(rep_fl)
len_fi = len(rep_fi)
+ # Pad with spaces to keep alignment
if (len_fi < len_fl):
for x in range(len_fl - len_fi):
rep_fi += " "
@@ -56,16 +58,43 @@ while (fname != ""):
text = header.replace(rep_fl, rep_fi)
else:
text = header.replace("$filename", fsingle)
+ text += "\n"
+
+ # We now have the proper header, so we want to ignore the one in the original file
+ # and potentially empty lines and badly formatted lines, while keeping comments that
+ # come after the header, and then keep everything non-header unchanged.
+ # To do so, we skip empty lines that may be at the top in a first pass.
+ # In a second pass, we skip all consecutive comment lines starting with "/*",
+ # then we can append the rest (step 2).
+
+ fileread = open(fname.strip(), "rb")
+ line = fileread.readline()
+ header_done = False
+
+ while (line.strip() == ""): # Skip empty lines at the top
+ line = fileread.readline()
+
+ if (line.find("/**********") == -1): # Godot header starts this way
+ # Maybe starting with a non-Godot comment, abort header magic
+ header_done = True
+
+ while (not header_done): # Handle header now
+ if (line.find("/*") != 0): # No more starting with a comment
+ header_done = True
+ if (line.strip() != ""):
+ text += line
+ line = fileread.readline()
+
+ while (line != ""): # Dump everything until EOF
+ text += line
+ line = fileread.readline()
+
+ fileread.close()
- while (l != ""):
- if ((l.find("//") != 0 and l.find("/*") != 0 and l.strip() != "") or bc):
- text += l
- bc = True
- l = fr.readline()
+ # Write
+ fileread = open(fname.strip(), "wb")
+ fileread.write(text)
+ fileread.close()
- fr.close()
- fr = open(fname.strip(), "wb")
- fr.write(text)
- fr.close()
- # print(text)
- fname = f.readline()
+ # Next file
+ fname = files.readline()
diff --git a/modules/SCsub b/modules/SCsub
index e3c535e981..74a5267355 100644
--- a/modules/SCsub
+++ b/modules/SCsub
@@ -17,6 +17,10 @@ for x in env.module_list:
env_modules.Append(CPPFLAGS=["-DMODULE_" + x.upper() + "_ENABLED"])
SConscript(x + "/SCsub")
-lib = env_modules.add_library("modules", env.modules_sources)
+if env.split_modules:
+ env.split_lib("modules", env_lib = env_modules)
+else:
-env.Prepend(LIBS=[lib])
+ lib = env_modules.add_library("modules", env.modules_sources)
+
+ env.Prepend(LIBS=[lib])
diff --git a/modules/bullet/SCsub b/modules/bullet/SCsub
index 0967bca3f2..d8d0b930a5 100644
--- a/modules/bullet/SCsub
+++ b/modules/bullet/SCsub
@@ -3,12 +3,15 @@
Import('env')
Import('env_modules')
-# build only version 2
-# Bullet 2.87
-
env_bullet = env_modules.Clone()
-bullet_src__2_x = [
+# Thirdparty source files
+
+if env['builtin_bullet']:
+ # Build only version 2 for now (as of 2.87)
+ thirdparty_dir = "#thirdparty/bullet/"
+
+ bullet2_src = [
# BulletCollision
"BulletCollision/BroadphaseCollision/btAxisSweep3.cpp"
, "BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp"
@@ -179,17 +182,10 @@ bullet_src__2_x = [
, "LinearMath/btVector3.cpp"
]
-thirdparty_dir = "#thirdparty/bullet/"
-thirdparty_src = thirdparty_dir + "src/"
+ thirdparty_sources = [thirdparty_dir + file for file in bullet2_src]
-bullet_sources = [thirdparty_src + file for file in bullet_src__2_x]
-
-# include headers
-env_bullet.Append(CPPPATH=[thirdparty_src])
-
-env_bullet.add_source_files(env.modules_sources, bullet_sources)
+ env_bullet.add_source_files(env.modules_sources, thirdparty_sources)
+ env_bullet.Append(CPPPATH=[thirdparty_dir])
# Godot source files
env_bullet.add_source_files(env.modules_sources, "*.cpp")
-
-Export('env')
diff --git a/modules/bullet/SCsub_with_lib b/modules/bullet/SCsub_with_lib
deleted file mode 100644
index b362a686ff..0000000000
--- a/modules/bullet/SCsub_with_lib
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-thirdparty_dir = "#thirdparty/bullet/"
-thirdparty_lib = thirdparty_dir + "Win64/lib/"
-
-bullet_libs = [
- "Bullet2FileLoader",
- "Bullet3Collision",
- "Bullet3Common",
- "Bullet3Dynamics",
- "Bullet3Geometry",
- "Bullet3OpenCL_clew",
- "BulletCollision",
- "BulletDynamics",
- "BulletInverseDynamics",
- "BulletSoftBody",
- "LinearMath"
- ]
-
-thirdparty_src = thirdparty_dir + "src/"
-# include headers
-env.Append(CPPPATH=[thirdparty_src])
-
-# lib
-env.Append(LIBPATH=[thirdparty_dir + "/Win64/lib/"])
-
-bullet_libs = [file+'.lib' for file in bullet_libs]
-# LIBS doesn't work in windows
-env.Append(LINKFLAGS=bullet_libs)
-
-env.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/bullet/area_bullet.cpp b/modules/bullet/area_bullet.cpp
index 195d89d0c0..648919e612 100644
--- a/modules/bullet/area_bullet.cpp
+++ b/modules/bullet/area_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* area_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,13 +29,19 @@
/*************************************************************************/
#include "area_bullet.h"
-#include "BulletCollision/CollisionDispatch/btGhostObject.h"
-#include "btBulletCollisionCommon.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "collision_object_bullet.h"
#include "space_bullet.h"
+#include <BulletCollision/CollisionDispatch/btGhostObject.h>
+#include <btBulletCollisionCommon.h>
+
+/**
+ @author AndreaCatania
+*/
+
AreaBullet::AreaBullet() :
RigidCollisionObjectBullet(CollisionObjectBullet::TYPE_AREA),
monitorable(true),
@@ -231,7 +236,7 @@ void AreaBullet::set_param(PhysicsServer::AreaParameter p_param, const Variant &
set_spOv_gravityPointAttenuation(p_value);
break;
default:
- print_line("The Bullet areas dosn't suppot this param: " + itos(p_param));
+ print_line("The Bullet areas doesn't suppot this param: " + itos(p_param));
}
}
@@ -254,7 +259,7 @@ Variant AreaBullet::get_param(PhysicsServer::AreaParameter p_param) const {
case PhysicsServer::AREA_PARAM_GRAVITY_POINT_ATTENUATION:
return spOv_gravityPointAttenuation;
default:
- print_line("The Bullet areas dosn't suppot this param: " + itos(p_param));
+ print_line("The Bullet areas doesn't suppot this param: " + itos(p_param));
return Variant();
}
}
diff --git a/modules/bullet/area_bullet.h b/modules/bullet/area_bullet.h
index 3e0913b891..78136d574b 100644
--- a/modules/bullet/area_bullet.h
+++ b/modules/bullet/area_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* area_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -37,6 +36,10 @@
#include "servers/physics_server.h"
#include "space_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class btGhostObject;
class AreaBullet : public RigidCollisionObjectBullet {
diff --git a/modules/bullet/btRayShape.cpp b/modules/bullet/btRayShape.cpp
index 8f6434b46b..4164450cd2 100644
--- a/modules/bullet/btRayShape.cpp
+++ b/modules/bullet/btRayShape.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
-/* btRayShape.h */
-/* Author: AndreaCatania */
+/* btRayShape.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,9 +29,15 @@
/*************************************************************************/
#include "btRayShape.h"
-#include "LinearMath/btAabbUtil2.h"
+
#include "math/math_funcs.h"
+#include <LinearMath/btAabbUtil2.h>
+
+/**
+ @author AndreaCatania
+*/
+
btRayShape::btRayShape(btScalar length) :
btConvexInternalShape(),
m_shapeAxis(0, 0, 1) {
diff --git a/modules/bullet/btRayShape.h b/modules/bullet/btRayShape.h
index be7acaa01f..99a9412dbe 100644
--- a/modules/bullet/btRayShape.h
+++ b/modules/bullet/btRayShape.h
@@ -1,10 +1,9 @@
/*************************************************************************/
-/* btRayShape.h */
-/* Author: AndreaCatania */
+/* btRayShape.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -29,12 +28,16 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-/// IMPORTANT The class name and filename was created by following Bullet writing rules for an easy (eventually ) porting to bullet
+/// IMPORTANT The class name and filename was created by following Bullet writing rules for an easy (eventually) porting to bullet
/// This shape is a custom shape that is not present to Bullet physics engine
#ifndef BTRAYSHAPE_H
#define BTRAYSHAPE_H
-#include "BulletCollision/CollisionShapes/btConvexInternalShape.h"
+#include <BulletCollision/CollisionShapes/btConvexInternalShape.h>
+
+/**
+ @author AndreaCatania
+*/
/// Ray shape around z axis
ATTRIBUTE_ALIGNED16(class)
diff --git a/modules/bullet/bullet_physics_server.cpp b/modules/bullet/bullet_physics_server.cpp
index 679e4def82..51de4998fa 100644
--- a/modules/bullet/bullet_physics_server.cpp
+++ b/modules/bullet/bullet_physics_server.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* bullet_physics_server.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,7 +29,7 @@
/*************************************************************************/
#include "bullet_physics_server.h"
-#include "LinearMath/btVector3.h"
+
#include "bullet_utilities.h"
#include "class_db.h"
#include "cone_twist_joint_bullet.h"
@@ -41,8 +40,15 @@
#include "pin_joint_bullet.h"
#include "shape_bullet.h"
#include "slider_joint_bullet.h"
+
+#include <LinearMath/btVector3.h>
+
#include <assert.h>
+/**
+ @author AndreaCatania
+*/
+
#define CreateThenReturnRID(owner, ridData) \
RID rid = owner.make_rid(ridData); \
ridData->set_self(rid); \
diff --git a/modules/bullet/bullet_physics_server.h b/modules/bullet/bullet_physics_server.h
index 006ad0f821..1c94428a2a 100644
--- a/modules/bullet/bullet_physics_server.h
+++ b/modules/bullet/bullet_physics_server.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* bullet_physics_server.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -41,6 +40,10 @@
#include "soft_body_bullet.h"
#include "space_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class BulletPhysicsServer : public PhysicsServer {
GDCLASS(BulletPhysicsServer, PhysicsServer)
diff --git a/modules/bullet/bullet_types_converter.cpp b/modules/bullet/bullet_types_converter.cpp
index 03247a91ca..a0fe598227 100644
--- a/modules/bullet/bullet_types_converter.cpp
+++ b/modules/bullet/bullet_types_converter.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* bullet_types_converter.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,6 +32,10 @@
#include "bullet_types_converter.h"
+/**
+ @author AndreaCatania
+*/
+
// ++ BULLET to GODOT ++++++++++
void B_TO_G(btVector3 const &inVal, Vector3 &outVal) {
outVal[0] = inVal[0];
@@ -92,3 +95,14 @@ void G_TO_B(Transform const &inVal, btTransform &outVal) {
G_TO_B(inVal.basis, outVal.getBasis());
G_TO_B(inVal.origin, outVal.getOrigin());
}
+
+void UNSCALE_BT_BASIS(btTransform &scaledBasis) {
+ btMatrix3x3 &m(scaledBasis.getBasis());
+ btVector3 column0(m[0][0], m[1][0], m[2][0]);
+ btVector3 column1(m[0][1], m[1][1], m[2][1]);
+ btVector3 column2(m[0][2], m[1][2], m[2][2]);
+ column0.normalize();
+ column1.normalize();
+ column2.normalize();
+ m.setValue(column0[0], column1[0], column2[0], column0[1], column1[1], column2[1], column0[2], column1[2], column2[2]);
+}
diff --git a/modules/bullet/bullet_types_converter.h b/modules/bullet/bullet_types_converter.h
index 5fa30c1d74..84321fe837 100644
--- a/modules/bullet/bullet_types_converter.h
+++ b/modules/bullet/bullet_types_converter.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* bullet_types_converter.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,14 +31,19 @@
#ifndef BULLET_TYPES_CONVERTER_H
#define BULLET_TYPES_CONVERTER_H
-#include "LinearMath/btMatrix3x3.h"
-#include "LinearMath/btTransform.h"
-#include "LinearMath/btVector3.h"
#include "core/math/matrix3.h"
#include "core/math/transform.h"
#include "core/math/vector3.h"
#include "core/typedefs.h"
+#include <LinearMath/btMatrix3x3.h>
+#include <LinearMath/btTransform.h>
+#include <LinearMath/btVector3.h>
+
+/**
+ @author AndreaCatania
+*/
+
// Bullet to Godot
extern void B_TO_G(btVector3 const &inVal, Vector3 &outVal);
extern void INVERT_B_TO_G(btVector3 const &inVal, Vector3 &outVal);
@@ -54,4 +58,5 @@ extern void G_TO_B(Basis const &inVal, btMatrix3x3 &outVal);
extern void INVERT_G_TO_B(Basis const &inVal, btMatrix3x3 &outVal);
extern void G_TO_B(Transform const &inVal, btTransform &outVal);
+extern void UNSCALE_BT_BASIS(btTransform &scaledBasis);
#endif
diff --git a/modules/bullet/bullet_utilities.h b/modules/bullet/bullet_utilities.h
index 1a44f48844..2841dfbe69 100644
--- a/modules/bullet/bullet_utilities.h
+++ b/modules/bullet/bullet_utilities.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* bullet_utilities.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,6 +31,10 @@
#ifndef BULLET_UTILITIES_H
#define BULLET_UTILITIES_H
+/**
+ @author AndreaCatania
+*/
+
#pragma once
#define bulletnew(cl) \
diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp
index 70d604fa70..34aff68a4a 100644
--- a/modules/bullet/collision_object_bullet.cpp
+++ b/modules/bullet/collision_object_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* collision_object_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,21 +29,29 @@
/*************************************************************************/
#include "collision_object_bullet.h"
+
#include "area_bullet.h"
-#include "btBulletCollisionCommon.h"
#include "bullet_physics_server.h"
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "shape_bullet.h"
#include "space_bullet.h"
+#include <btBulletCollisionCommon.h>
+
+/**
+ @author AndreaCatania
+*/
+
#define enableDynamicAabbTree true
#define initialChildCapacity 1
CollisionObjectBullet::ShapeWrapper::~ShapeWrapper() {}
void CollisionObjectBullet::ShapeWrapper::set_transform(const Transform &p_transform) {
+ G_TO_B(p_transform.get_basis().get_scale(), scale);
G_TO_B(p_transform, transform);
+ UNSCALE_BT_BASIS(transform);
}
void CollisionObjectBullet::ShapeWrapper::set_transform(const btTransform &p_transform) {
transform = p_transform;
@@ -57,7 +64,8 @@ CollisionObjectBullet::CollisionObjectBullet(Type p_type) :
collisionsEnabled(true),
m_isStatic(false),
bt_collision_object(NULL),
- body_scale(1., 1., 1.) {}
+ body_scale(1., 1., 1.),
+ force_shape_reset(false) {}
CollisionObjectBullet::~CollisionObjectBullet() {
// Remove all overlapping
@@ -88,6 +96,7 @@ btVector3 CollisionObjectBullet::get_bt_body_scale() const {
}
void CollisionObjectBullet::on_body_scale_changed() {
+ force_shape_reset = true;
}
void CollisionObjectBullet::destroyBulletCollisionObject() {
@@ -151,16 +160,13 @@ int CollisionObjectBullet::get_godot_object_flags() const {
void CollisionObjectBullet::set_transform(const Transform &p_global_transform) {
- btTransform btTrans;
- Basis decomposed_basis;
-
- Vector3 decomposed_scale = p_global_transform.get_basis().rotref_posscale_decomposition(decomposed_basis);
+ set_body_scale(p_global_transform.basis.get_scale());
- G_TO_B(p_global_transform.get_origin(), btTrans.getOrigin());
- G_TO_B(decomposed_basis, btTrans.getBasis());
+ btTransform bt_transform;
+ G_TO_B(p_global_transform, bt_transform);
+ UNSCALE_BT_BASIS(bt_transform);
- set_body_scale(decomposed_scale);
- set_transform__bullet(btTrans);
+ set_transform__bullet(bt_transform);
}
Transform CollisionObjectBullet::get_transform() const {
@@ -228,7 +234,7 @@ void RigidCollisionObjectBullet::set_shape_transform(int p_index, const Transfor
ERR_FAIL_INDEX(p_index, get_shape_count());
shapes[p_index].set_transform(p_transform);
- on_shapes_changed();
+ on_shape_changed(shapes[p_index].shape);
}
void RigidCollisionObjectBullet::remove_shape(ShapeBullet *p_shape) {
@@ -289,27 +295,41 @@ void RigidCollisionObjectBullet::on_shape_changed(const ShapeBullet *const p_sha
void RigidCollisionObjectBullet::on_shapes_changed() {
int i;
+
// Remove all shapes, reverse order for performance reason (Array resize)
for (i = compoundShape->getNumChildShapes() - 1; 0 <= i; --i) {
compoundShape->removeChildShapeByIndex(i);
}
- // Insert all shapes
ShapeWrapper *shpWrapper;
- const int size = shapes.size();
- for (i = 0; i < size; ++i) {
+ const int shapes_size = shapes.size();
+
+ // Reset shape if required
+ if (force_shape_reset) {
+ for (i = 0; i < shapes_size; ++i) {
+ shpWrapper = &shapes[i];
+ bulletdelete(shpWrapper->bt_shape);
+ }
+ force_shape_reset = false;
+ }
+
+ // Insert all shapes
+ btVector3 body_scale(get_bt_body_scale());
+ for (i = 0; i < shapes_size; ++i) {
shpWrapper = &shapes[i];
if (shpWrapper->active) {
if (!shpWrapper->bt_shape) {
- shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape();
+ shpWrapper->bt_shape = shpWrapper->shape->create_bt_shape(shpWrapper->scale * body_scale);
}
- compoundShape->addChildShape(shpWrapper->transform, shpWrapper->bt_shape);
+
+ btTransform scaled_shape_transform(shpWrapper->transform);
+ scaled_shape_transform.getOrigin() *= body_scale;
+ compoundShape->addChildShape(scaled_shape_transform, shpWrapper->bt_shape);
} else {
- compoundShape->addChildShape(shpWrapper->transform, BulletPhysicsServer::get_empty_shape());
+ compoundShape->addChildShape(btTransform(), BulletPhysicsServer::get_empty_shape());
}
}
- compoundShape->setLocalScaling(get_bt_body_scale());
compoundShape->recalculateLocalAabb();
}
diff --git a/modules/bullet/collision_object_bullet.h b/modules/bullet/collision_object_bullet.h
index 4168133e0d..506976eabf 100644
--- a/modules/bullet/collision_object_bullet.h
+++ b/modules/bullet/collision_object_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* collision_object_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,13 +31,18 @@
#ifndef COLLISION_OBJECT_BULLET_H
#define COLLISION_OBJECT_BULLET_H
-#include "LinearMath/btTransform.h"
#include "core/vset.h"
#include "object.h"
#include "shape_owner_bullet.h"
#include "transform.h"
#include "vector3.h"
+#include <LinearMath/btTransform.h>
+
+/**
+ @author AndreaCatania
+*/
+
class AreaBullet;
class ShapeBullet;
class btCollisionObject;
@@ -68,6 +72,7 @@ public:
ShapeBullet *shape;
btCollisionShape *bt_shape;
btTransform transform;
+ btVector3 scale;
bool active;
ShapeWrapper() :
@@ -98,6 +103,7 @@ public:
shape = otherShape.shape;
bt_shape = otherShape.bt_shape;
transform = otherShape.transform;
+ scale = otherShape.scale;
active = otherShape.active;
}
@@ -115,6 +121,7 @@ protected:
bool ray_pickable;
btCollisionObject *bt_collision_object;
Vector3 body_scale;
+ bool force_shape_reset;
SpaceBullet *space;
VSet<RID> exceptions;
diff --git a/modules/bullet/cone_twist_joint_bullet.cpp b/modules/bullet/cone_twist_joint_bullet.cpp
index c8944d23c5..472ad3b52c 100644
--- a/modules/bullet/cone_twist_joint_bullet.cpp
+++ b/modules/bullet/cone_twist_joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* cone_twist_joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,11 +29,17 @@
/*************************************************************************/
#include "cone_twist_joint_bullet.h"
-#include "BulletDynamics/ConstraintSolver/btConeTwistConstraint.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "rigid_body_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btConeTwistConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
ConeTwistJointBullet::ConeTwistJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &rbAFrame, const Transform &rbBFrame) :
JointBullet() {
diff --git a/modules/bullet/cone_twist_joint_bullet.h b/modules/bullet/cone_twist_joint_bullet.h
index 5f0bccbd31..bd6eb49196 100644
--- a/modules/bullet/cone_twist_joint_bullet.h
+++ b/modules/bullet/cone_twist_joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* cone_twist_joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "joint_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class ConeTwistJointBullet : public JointBullet {
diff --git a/modules/bullet/constraint_bullet.cpp b/modules/bullet/constraint_bullet.cpp
index 0c5ba29cb3..b60e89b6fd 100644
--- a/modules/bullet/constraint_bullet.cpp
+++ b/modules/bullet/constraint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* constraint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,9 +29,14 @@
/*************************************************************************/
#include "constraint_bullet.h"
+
#include "collision_object_bullet.h"
#include "space_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
ConstraintBullet::ConstraintBullet() :
space(NULL),
constraint(NULL) {}
diff --git a/modules/bullet/constraint_bullet.h b/modules/bullet/constraint_bullet.h
index a753ee0429..23be5a5063 100644
--- a/modules/bullet/constraint_bullet.h
+++ b/modules/bullet/constraint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* constraint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,10 +31,15 @@
#ifndef CONSTRAINT_BULLET_H
#define CONSTRAINT_BULLET_H
-#include "BulletDynamics/ConstraintSolver/btTypedConstraint.h"
#include "bullet_utilities.h"
#include "rid_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btTypedConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class SpaceBullet;
class btTypedConstraint;
diff --git a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml
index 941a79e8ea..c7909c7d72 100644
--- a/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml
+++ b/modules/bullet/doc_classes/BulletPhysicsDirectBodyState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-beta">
+<class name="BulletPhysicsDirectBodyState" inherits="PhysicsDirectBodyState" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/bullet/doc_classes/BulletPhysicsServer.xml b/modules/bullet/doc_classes/BulletPhysicsServer.xml
index 515f0e292e..a59abb0ebb 100644
--- a/modules/bullet/doc_classes/BulletPhysicsServer.xml
+++ b/modules/bullet/doc_classes/BulletPhysicsServer.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-beta">
+<class name="BulletPhysicsServer" inherits="PhysicsServer" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/bullet/generic_6dof_joint_bullet.cpp b/modules/bullet/generic_6dof_joint_bullet.cpp
index 674b30b23a..151a79a69f 100644
--- a/modules/bullet/generic_6dof_joint_bullet.cpp
+++ b/modules/bullet/generic_6dof_joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* generic_6dof_joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,11 +29,17 @@
/*************************************************************************/
#include "generic_6dof_joint_bullet.h"
-#include "BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "rigid_body_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
Generic6DOFJointBullet::Generic6DOFJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB, bool useLinearReferenceFrameA) :
JointBullet() {
diff --git a/modules/bullet/generic_6dof_joint_bullet.h b/modules/bullet/generic_6dof_joint_bullet.h
index df66892d66..ad06582eac 100644
--- a/modules/bullet/generic_6dof_joint_bullet.h
+++ b/modules/bullet/generic_6dof_joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* generic_6dof_joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "joint_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class Generic6DOFJointBullet : public JointBullet {
diff --git a/modules/bullet/godot_collision_configuration.cpp b/modules/bullet/godot_collision_configuration.cpp
index 6d83a9bccb..f4bb9acbd7 100644
--- a/modules/bullet/godot_collision_configuration.cpp
+++ b/modules/bullet/godot_collision_configuration.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_collision_configuration.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,10 +29,16 @@
/*************************************************************************/
#include "godot_collision_configuration.h"
-#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
-#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
+
#include "godot_ray_world_algorithm.h"
+#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h>
+#include <BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h>
+
+/**
+ @author AndreaCatania
+*/
+
GodotCollisionConfiguration::GodotCollisionConfiguration(const btDiscreteDynamicsWorld *world, const btDefaultCollisionConstructionInfo &constructionInfo) :
btDefaultCollisionConfiguration(constructionInfo) {
diff --git a/modules/bullet/godot_collision_configuration.h b/modules/bullet/godot_collision_configuration.h
index 835edac907..9b30ad0c62 100644
--- a/modules/bullet/godot_collision_configuration.h
+++ b/modules/bullet/godot_collision_configuration.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_collision_configuration.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,7 +31,11 @@
#ifndef GODOT_COLLISION_CONFIGURATION_H
#define GODOT_COLLISION_CONFIGURATION_H
-#include "BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h"
+#include <BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h>
+
+/**
+ @author AndreaCatania
+*/
class btDiscreteDynamicsWorld;
diff --git a/modules/bullet/godot_collision_dispatcher.cpp b/modules/bullet/godot_collision_dispatcher.cpp
index 31a965869e..1815f2152e 100644
--- a/modules/bullet/godot_collision_dispatcher.cpp
+++ b/modules/bullet/godot_collision_dispatcher.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_collision_dispatcher.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,8 +29,13 @@
/*************************************************************************/
#include "godot_collision_dispatcher.h"
+
#include "collision_object_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
const int GodotCollisionDispatcher::CASTED_TYPE_AREA = static_cast<int>(CollisionObjectBullet::TYPE_AREA);
GodotCollisionDispatcher::GodotCollisionDispatcher(btCollisionConfiguration *collisionConfiguration) :
diff --git a/modules/bullet/godot_collision_dispatcher.h b/modules/bullet/godot_collision_dispatcher.h
index ab3ab2af31..2e5a6c2732 100644
--- a/modules/bullet/godot_collision_dispatcher.h
+++ b/modules/bullet/godot_collision_dispatcher.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_collision_dispatcher.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -33,8 +32,13 @@
#define GODOT_COLLISION_DISPATCHER_H
#include "int_types.h"
+
#include <btBulletDynamicsCommon.h>
+/**
+ @author AndreaCatania
+*/
+
/// This class is required to implement custom collision behaviour in the narrowphase
class GodotCollisionDispatcher : public btCollisionDispatcher {
private:
diff --git a/modules/bullet/godot_motion_state.h b/modules/bullet/godot_motion_state.h
index 79f139898c..fe5d8418b7 100644
--- a/modules/bullet/godot_motion_state.h
+++ b/modules/bullet/godot_motion_state.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_motion_state.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,12 +31,17 @@
#ifndef GODOT_MOTION_STATE_H
#define GODOT_MOTION_STATE_H
-#include "LinearMath/btMotionState.h"
#include "rigid_body_bullet.h"
+#include <LinearMath/btMotionState.h>
+
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
-// This clas is responsible to move kinematic actor
+// This class is responsible to move kinematic actor
// and sincronize rendering engine with Bullet
/// DOC:
/// http://www.bulletphysics.org/mediawiki-1.5.8/index.php/MotionStates#What.27s_a_MotionState.3F
diff --git a/modules/bullet/godot_ray_world_algorithm.cpp b/modules/bullet/godot_ray_world_algorithm.cpp
index 3dd10b9ab3..4a511b39a7 100644
--- a/modules/bullet/godot_ray_world_algorithm.cpp
+++ b/modules/bullet/godot_ray_world_algorithm.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_ray_world_algorithm.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,10 +29,18 @@
/*************************************************************************/
#include "godot_ray_world_algorithm.h"
-#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
+
#include "btRayShape.h"
#include "collision_object_bullet.h"
+#include <BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h>
+
+#define RAY_STABILITY_MARGIN 0.1
+
+/**
+ @author AndreaCatania
+*/
+
GodotRayWorldAlgorithm::CreateFunc::CreateFunc(const btDiscreteDynamicsWorld *world) :
m_world(world) {}
@@ -92,10 +99,15 @@ void GodotRayWorldAlgorithm::processCollision(const btCollisionObjectWrapper *bo
m_world->rayTestSingleInternal(ray_transform, to, other_co_wrapper, btResult);
if (btResult.hasHit()) {
- btVector3 ray_normal(to.getOrigin() - ray_transform.getOrigin());
+
+ btVector3 ray_normal(ray_transform.getOrigin() - to.getOrigin());
ray_normal.normalize();
- ray_normal *= -1;
- resultOut->addContactPoint(ray_normal, btResult.m_hitPointWorld, ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1));
+ btScalar depth(ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1));
+
+ if (depth >= -RAY_STABILITY_MARGIN)
+ depth = 0;
+
+ resultOut->addContactPoint(ray_normal, btResult.m_hitPointWorld, depth);
}
}
diff --git a/modules/bullet/godot_ray_world_algorithm.h b/modules/bullet/godot_ray_world_algorithm.h
index f2c9008f58..c716c1d88d 100644
--- a/modules/bullet/godot_ray_world_algorithm.h
+++ b/modules/bullet/godot_ray_world_algorithm.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_ray_world_algorithm.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,9 +31,13 @@
#ifndef GODOT_RAY_WORLD_ALGORITHM_H
#define GODOT_RAY_WORLD_ALGORITHM_H
-#include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h"
-#include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
-#include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
+#include <BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h>
+#include <BulletCollision/CollisionDispatch/btCollisionCreateFunc.h>
+#include <BulletCollision/CollisionDispatch/btCollisionDispatcher.h>
+
+/**
+ @author AndreaCatania
+*/
class btDiscreteDynamicsWorld;
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp
index a91cbec340..8d4ca6d6a7 100644
--- a/modules/bullet/godot_result_callbacks.cpp
+++ b/modules/bullet/godot_result_callbacks.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_result_callbacks.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,10 +29,15 @@
/*************************************************************************/
#include "godot_result_callbacks.h"
+
#include "bullet_types_converter.h"
#include "collision_object_bullet.h"
#include "rigid_body_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
bool GodotFilterCallback::test_collision_filters(uint32_t body0_collision_layer, uint32_t body0_collision_mask, uint32_t body1_collision_layer, uint32_t body1_collision_mask) {
return body0_collision_layer & body1_collision_mask || body1_collision_layer & body0_collision_mask;
}
diff --git a/modules/bullet/godot_result_callbacks.h b/modules/bullet/godot_result_callbacks.h
index 407fb79b9a..b18965a5b8 100644
--- a/modules/bullet/godot_result_callbacks.h
+++ b/modules/bullet/godot_result_callbacks.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* godot_result_callbacks.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,10 +31,15 @@
#ifndef GODOT_RESULT_CALLBACKS_H
#define GODOT_RESULT_CALLBACKS_H
-#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
-#include "btBulletDynamicsCommon.h"
#include "servers/physics_server.h"
+#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h>
+#include <btBulletDynamicsCommon.h>
+
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
/// This class is required to implement custom collision behaviour in the broadphase
diff --git a/modules/bullet/hinge_joint_bullet.cpp b/modules/bullet/hinge_joint_bullet.cpp
index c731a3c134..97ea7ca3df 100644
--- a/modules/bullet/hinge_joint_bullet.cpp
+++ b/modules/bullet/hinge_joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* hinge_joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,11 +29,17 @@
/*************************************************************************/
#include "hinge_joint_bullet.h"
-#include "BulletDynamics/ConstraintSolver/btHingeConstraint.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "rigid_body_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btHingeConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
HingeJointBullet::HingeJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameA, const Transform &frameB) :
JointBullet() {
diff --git a/modules/bullet/hinge_joint_bullet.h b/modules/bullet/hinge_joint_bullet.h
index 72146fca8b..ca87c8dd8c 100644
--- a/modules/bullet/hinge_joint_bullet.h
+++ b/modules/bullet/hinge_joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* hinge_joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "joint_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class HingeJointBullet : public JointBullet {
class btHingeConstraint *hingeConstraint;
diff --git a/modules/bullet/joint_bullet.cpp b/modules/bullet/joint_bullet.cpp
index 8aa15e731d..aaeb9f9ce7 100644
--- a/modules/bullet/joint_bullet.cpp
+++ b/modules/bullet/joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,8 +29,13 @@
/*************************************************************************/
#include "joint_bullet.h"
+
#include "space_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
JointBullet::JointBullet() :
ConstraintBullet() {}
diff --git a/modules/bullet/joint_bullet.h b/modules/bullet/joint_bullet.h
index 2d4f774345..4a5333fb85 100644
--- a/modules/bullet/joint_bullet.h
+++ b/modules/bullet/joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -35,6 +34,10 @@
#include "constraint_bullet.h"
#include "servers/physics_server.h"
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class btTypedConstraint;
diff --git a/modules/bullet/pin_joint_bullet.cpp b/modules/bullet/pin_joint_bullet.cpp
index 7c44548496..c4e5b8cdbe 100644
--- a/modules/bullet/pin_joint_bullet.cpp
+++ b/modules/bullet/pin_joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* pin_joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,10 +29,16 @@
/*************************************************************************/
#include "pin_joint_bullet.h"
-#include "BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h"
+
#include "bullet_types_converter.h"
#include "rigid_body_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
PinJointBullet::PinJointBullet(RigidBodyBullet *p_body_a, const Vector3 &p_pos_a, RigidBodyBullet *p_body_b, const Vector3 &p_pos_b) :
JointBullet() {
if (p_body_b) {
diff --git a/modules/bullet/pin_joint_bullet.h b/modules/bullet/pin_joint_bullet.h
index 5610e6aa05..648010bf78 100644
--- a/modules/bullet/pin_joint_bullet.h
+++ b/modules/bullet/pin_joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* pin_joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "joint_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class PinJointBullet : public JointBullet {
diff --git a/modules/bullet/register_types.cpp b/modules/bullet/register_types.cpp
index 2a420f424b..b119b7720f 100644
--- a/modules/bullet/register_types.cpp
+++ b/modules/bullet/register_types.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* register_types.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,9 +29,14 @@
/*************************************************************************/
#include "register_types.h"
+
#include "bullet_physics_server.h"
#include "class_db.h"
+/**
+ @author AndreaCatania
+*/
+
PhysicsServer *_createBulletPhysicsCallback() {
return memnew(BulletPhysicsServer);
}
diff --git a/modules/bullet/register_types.h b/modules/bullet/register_types.h
index 4edc3fb839..226bcd9402 100644
--- a/modules/bullet/register_types.h
+++ b/modules/bullet/register_types.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* register_types.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,6 +31,10 @@
#ifndef REGISTER_BULLET_TYPES_H
#define REGISTER_BULLET_TYPES_H
+/**
+ @author AndreaCatania
+*/
+
void register_bullet_types();
void unregister_bullet_types();
#endif
diff --git a/modules/bullet/rid_bullet.h b/modules/bullet/rid_bullet.h
index 72859b628e..a9351d7728 100644
--- a/modules/bullet/rid_bullet.h
+++ b/modules/bullet/rid_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* rid_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "core/rid.h"
+/**
+ @author AndreaCatania
+*/
+
class BulletPhysicsServer;
class RIDBullet : public RID_Data {
diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp
index e7342e2ae8..96a53f9f8b 100644
--- a/modules/bullet/rigid_body_bullet.cpp
+++ b/modules/bullet/rigid_body_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
-/* body_bullet.cpp */
-/* Author: AndreaCatania */
+/* rigid_body_bullet.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,18 +29,25 @@
/*************************************************************************/
#include "rigid_body_bullet.h"
-#include "BulletCollision/CollisionDispatch/btGhostObject.h"
-#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h"
-#include "BulletDynamics/Dynamics/btRigidBody.h"
-#include "btBulletCollisionCommon.h"
+
#include "btRayShape.h"
#include "bullet_physics_server.h"
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "godot_motion_state.h"
#include "joint_bullet.h"
+
+#include <BulletCollision/CollisionDispatch/btGhostObject.h>
+#include <BulletCollision/CollisionShapes/btConvexPointCloudShape.h>
+#include <BulletDynamics/Dynamics/btRigidBody.h>
+#include <btBulletCollisionCommon.h>
+
#include <assert.h>
+/**
+ @author AndreaCatania
+*/
+
BulletPhysicsDirectBodyState *BulletPhysicsDirectBodyState::singleton = NULL;
Vector3 BulletPhysicsDirectBodyState::get_total_gravity() const {
@@ -198,48 +204,27 @@ void RigidBodyBullet::KinematicUtilities::copyAllOwnerShapes() {
const CollisionObjectBullet::ShapeWrapper *shape_wrapper;
- btVector3 owner_body_scale(owner->get_bt_body_scale());
+ btVector3 owner_scale(owner->get_bt_body_scale());
for (int i = shapes_count - 1; 0 <= i; --i) {
shape_wrapper = &shapes_wrappers[i];
if (!shape_wrapper->active) {
continue;
}
- shapes[i].transform = shape_wrapper->transform;
-
- btConvexShape *&kin_shape_ref = shapes[i].shape;
+ shapes[i].transform = shape_wrapper->transform;
+ shapes[i].transform.getOrigin() *= owner_scale;
switch (shape_wrapper->shape->get_type()) {
- case PhysicsServer::SHAPE_SPHERE: {
- SphereShapeBullet *sphere = static_cast<SphereShapeBullet *>(shape_wrapper->shape);
- kin_shape_ref = ShapeBullet::create_shape_sphere(sphere->get_radius() * owner_body_scale[0] + safe_margin);
- break;
- }
- case PhysicsServer::SHAPE_BOX: {
- BoxShapeBullet *box = static_cast<BoxShapeBullet *>(shape_wrapper->shape);
- kin_shape_ref = ShapeBullet::create_shape_box((box->get_half_extents() * owner_body_scale) + btVector3(safe_margin, safe_margin, safe_margin));
- break;
- }
- case PhysicsServer::SHAPE_CAPSULE: {
- CapsuleShapeBullet *capsule = static_cast<CapsuleShapeBullet *>(shape_wrapper->shape);
-
- kin_shape_ref = ShapeBullet::create_shape_capsule(capsule->get_radius() * owner_body_scale[0] + safe_margin, capsule->get_height() * owner_body_scale[1] + safe_margin);
- break;
- }
- case PhysicsServer::SHAPE_CONVEX_POLYGON: {
- ConvexPolygonShapeBullet *godot_convex = static_cast<ConvexPolygonShapeBullet *>(shape_wrapper->shape);
- kin_shape_ref = ShapeBullet::create_shape_convex(godot_convex->vertices);
- kin_shape_ref->setLocalScaling(owner_body_scale + btVector3(safe_margin, safe_margin, safe_margin));
- break;
- }
+ case PhysicsServer::SHAPE_SPHERE:
+ case PhysicsServer::SHAPE_BOX:
+ case PhysicsServer::SHAPE_CAPSULE:
+ case PhysicsServer::SHAPE_CONVEX_POLYGON:
case PhysicsServer::SHAPE_RAY: {
- RayShapeBullet *godot_ray = static_cast<RayShapeBullet *>(shape_wrapper->shape);
- kin_shape_ref = ShapeBullet::create_shape_ray(godot_ray->length * owner_body_scale[1] + safe_margin);
- break;
- }
+ shapes[i].shape = static_cast<btConvexShape *>(shape_wrapper->shape->create_bt_shape(owner_scale * shape_wrapper->scale, safe_margin));
+ } break;
default:
WARN_PRINT("This shape is not supported to be kinematic!");
- kin_shape_ref = NULL;
+ shapes[i].shape = NULL;
}
}
}
@@ -705,7 +690,7 @@ void RigidBodyBullet::set_continuous_collision_detection(bool p_enable) {
/// Calculate using the rule writte below the CCD swept sphere radius
/// CCD works on an embedded sphere of radius, make sure this radius
/// is embedded inside the convex objects, preferably smaller:
- /// for an object of dimentions 1 meter, try 0.2
+ /// for an object of dimensions 1 meter, try 0.2
btVector3 center;
btScalar radius;
btBody->getCollisionShape()->getBoundingSphere(center, radius);
@@ -970,7 +955,8 @@ void RigidBodyBullet::_internal_set_mass(real_t p_mass) {
const bool isDynamic = p_mass != 0.f;
if (isDynamic) {
- ERR_FAIL_COND(PhysicsServer::BODY_MODE_RIGID != mode && PhysicsServer::BODY_MODE_CHARACTER != mode);
+ if (PhysicsServer::BODY_MODE_RIGID != mode && PhysicsServer::BODY_MODE_CHARACTER != mode)
+ return;
m_isStatic = false;
compoundShape->calculateLocalInertia(p_mass, localInertia);
@@ -990,7 +976,8 @@ void RigidBodyBullet::_internal_set_mass(real_t p_mass) {
}
} else {
- ERR_FAIL_COND(PhysicsServer::BODY_MODE_STATIC != mode && PhysicsServer::BODY_MODE_KINEMATIC != mode);
+ if (PhysicsServer::BODY_MODE_STATIC != mode && PhysicsServer::BODY_MODE_KINEMATIC != mode)
+ return;
m_isStatic = true;
if (PhysicsServer::BODY_MODE_STATIC == mode) {
diff --git a/modules/bullet/rigid_body_bullet.h b/modules/bullet/rigid_body_bullet.h
index ff1596e6f4..aff6056ad9 100644
--- a/modules/bullet/rigid_body_bullet.h
+++ b/modules/bullet/rigid_body_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
-/* body_bullet.h */
-/* Author: AndreaCatania */
+/* rigid_body_bullet.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,11 +31,16 @@
#ifndef BODYBULLET_H
#define BODYBULLET_H
-#include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
-#include "LinearMath/btTransform.h"
#include "collision_object_bullet.h"
#include "space_bullet.h"
+#include <BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h>
+#include <LinearMath/btTransform.h>
+
+/**
+ @author AndreaCatania
+*/
+
class AreaBullet;
class SpaceBullet;
class btRigidBody;
@@ -44,11 +48,11 @@ class GodotMotionState;
class BulletPhysicsDirectBodyState;
/// This class could be used in multi thread with few changes but currently
-/// is setted to be only in one single thread.
+/// is set to be only in one single thread.
///
/// In the system there is only one object at a time that manage all bodies and is
/// created by BulletPhysicsServer and is held by the "singleton" variable of this class
-/// Each time something require it, the body must be setted again.
+/// Each time something require it, the body must be set again.
class BulletPhysicsDirectBodyState : public PhysicsDirectBodyState {
GDCLASS(BulletPhysicsDirectBodyState, PhysicsDirectBodyState)
diff --git a/modules/bullet/shape_bullet.cpp b/modules/bullet/shape_bullet.cpp
index 55cc742f0a..c6b9695d96 100644
--- a/modules/bullet/shape_bullet.cpp
+++ b/modules/bullet/shape_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* shape_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,19 +29,31 @@
/*************************************************************************/
#include "shape_bullet.h"
-#include "BulletCollision/CollisionShapes/btConvexPointCloudShape.h"
-#include "BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h"
-#include "btBulletCollisionCommon.h"
+
#include "btRayShape.h"
#include "bullet_physics_server.h"
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "shape_owner_bullet.h"
+#include <BulletCollision/CollisionShapes/btConvexPointCloudShape.h>
+#include <BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h>
+#include <btBulletCollisionCommon.h>
+
+/**
+ @author AndreaCatania
+*/
+
ShapeBullet::ShapeBullet() {}
ShapeBullet::~ShapeBullet() {}
+btCollisionShape *ShapeBullet::create_bt_shape(const Vector3 &p_implicit_scale, real_t p_margin) {
+ btVector3 s;
+ G_TO_B(p_implicit_scale, s);
+ return create_bt_shape(s, p_margin);
+}
+
btCollisionShape *ShapeBullet::prepare(btCollisionShape *p_btShape) const {
p_btShape->setUserPointer(const_cast<ShapeBullet *>(this));
p_btShape->setMargin(0.);
@@ -66,7 +77,7 @@ void ShapeBullet::add_owner(ShapeOwnerBullet *p_owner) {
void ShapeBullet::remove_owner(ShapeOwnerBullet *p_owner, bool p_permanentlyFromThisBody) {
Map<ShapeOwnerBullet *, int>::Element *E = owners.find(p_owner);
- ERR_FAIL_COND(!E);
+ if (!E) return;
E->get()--;
if (p_permanentlyFromThisBody || 0 >= E->get()) {
owners.erase(E);
@@ -150,7 +161,7 @@ void PlaneShapeBullet::setup(const Plane &p_plane) {
notifyShapeChanged();
}
-btCollisionShape *PlaneShapeBullet::create_bt_shape() {
+btCollisionShape *PlaneShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
btVector3 btPlaneNormal;
G_TO_B(plane.normal, btPlaneNormal);
return prepare(PlaneShapeBullet::create_shape_plane(btPlaneNormal, plane.d));
@@ -178,8 +189,8 @@ void SphereShapeBullet::setup(real_t p_radius) {
notifyShapeChanged();
}
-btCollisionShape *SphereShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_sphere(radius));
+btCollisionShape *SphereShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ return prepare(ShapeBullet::create_shape_sphere(radius * p_implicit_scale[0] + p_margin));
}
/* Box */
@@ -205,8 +216,8 @@ void BoxShapeBullet::setup(const Vector3 &p_half_extents) {
notifyShapeChanged();
}
-btCollisionShape *BoxShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_box(half_extents));
+btCollisionShape *BoxShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ return prepare(ShapeBullet::create_shape_box((half_extents * p_implicit_scale) + btVector3(p_margin, p_margin, p_margin)));
}
/* Capsule */
@@ -238,8 +249,8 @@ void CapsuleShapeBullet::setup(real_t p_height, real_t p_radius) {
notifyShapeChanged();
}
-btCollisionShape *CapsuleShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_capsule(radius, height));
+btCollisionShape *CapsuleShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ return prepare(ShapeBullet::create_shape_capsule(radius * p_implicit_scale[0] + p_margin, height * p_implicit_scale[1] + p_margin));
}
/* Convex polygon */
@@ -271,7 +282,7 @@ PhysicsServer::ShapeType ConvexPolygonShapeBullet::get_type() const {
}
void ConvexPolygonShapeBullet::setup(const Vector<Vector3> &p_vertices) {
- // Make a copy of verticies
+ // Make a copy of vertices
const int n_of_vertices = p_vertices.size();
vertices.resize(n_of_vertices);
for (int i = n_of_vertices - 1; 0 <= i; --i) {
@@ -280,8 +291,12 @@ void ConvexPolygonShapeBullet::setup(const Vector<Vector3> &p_vertices) {
notifyShapeChanged();
}
-btCollisionShape *ConvexPolygonShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_convex(vertices));
+btCollisionShape *ConvexPolygonShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ btCollisionShape *cs(ShapeBullet::create_shape_convex(vertices));
+ cs->setLocalScaling(p_implicit_scale);
+ prepare(cs);
+ cs->setMargin(p_margin);
+ return cs;
}
/* Concave polygon */
@@ -349,13 +364,15 @@ void ConcavePolygonShapeBullet::setup(PoolVector<Vector3> p_faces) {
notifyShapeChanged();
}
-btCollisionShape *ConcavePolygonShapeBullet::create_bt_shape() {
+btCollisionShape *ConcavePolygonShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
btCollisionShape *cs = ShapeBullet::create_shape_concave(meshShape);
- if (!cs) {
+ if (!cs)
// This is necessary since if 0 faces the creation of concave return NULL
cs = ShapeBullet::create_shape_empty();
- }
- return prepare(cs);
+ cs->setLocalScaling(p_implicit_scale);
+ prepare(cs);
+ cs->setMargin(p_margin);
+ return cs;
}
/* Height map shape */
@@ -407,8 +424,12 @@ void HeightMapShapeBullet::setup(PoolVector<real_t> &p_heights, int p_width, int
notifyShapeChanged();
}
-btCollisionShape *HeightMapShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_height_field(heights, width, depth, cell_size));
+btCollisionShape *HeightMapShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ btCollisionShape *cs(ShapeBullet::create_shape_height_field(heights, width, depth, cell_size));
+ cs->setLocalScaling(p_implicit_scale);
+ prepare(cs);
+ cs->setMargin(p_margin);
+ return cs;
}
/* Ray shape */
@@ -433,6 +454,6 @@ void RayShapeBullet::setup(real_t p_length) {
notifyShapeChanged();
}
-btCollisionShape *RayShapeBullet::create_bt_shape() {
- return prepare(ShapeBullet::create_shape_ray(length));
+btCollisionShape *RayShapeBullet::create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin) {
+ return prepare(ShapeBullet::create_shape_ray(length * p_implicit_scale[1] + p_margin));
}
diff --git a/modules/bullet/shape_bullet.h b/modules/bullet/shape_bullet.h
index fa12e95efc..4a03c0f014 100644
--- a/modules/bullet/shape_bullet.h
+++ b/modules/bullet/shape_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* shape_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,14 +31,19 @@
#ifndef SHAPE_BULLET_H
#define SHAPE_BULLET_H
-#include "LinearMath/btAlignedObjectArray.h"
-#include "LinearMath/btScalar.h"
-#include "LinearMath/btVector3.h"
#include "core/variant.h"
#include "geometry.h"
#include "rid_bullet.h"
#include "servers/physics_server.h"
+#include <LinearMath/btAlignedObjectArray.h>
+#include <LinearMath/btScalar.h>
+#include <LinearMath/btVector3.h>
+
+/**
+ @author AndreaCatania
+*/
+
class ShapeBullet;
class btCollisionShape;
class ShapeOwnerBullet;
@@ -58,7 +62,8 @@ public:
ShapeBullet();
virtual ~ShapeBullet();
- virtual btCollisionShape *create_bt_shape() = 0;
+ btCollisionShape *create_bt_shape(const Vector3 &p_implicit_scale, real_t p_margin = 0);
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_implicit_scale, real_t p_margin = 0) = 0;
void add_owner(ShapeOwnerBullet *p_owner);
void remove_owner(ShapeOwnerBullet *p_owner, bool p_permanentlyFromThisBody = false);
@@ -94,7 +99,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(const Plane &p_plane);
@@ -111,7 +116,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(real_t p_radius);
@@ -128,7 +133,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(const Vector3 &p_half_extents);
@@ -147,7 +152,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(real_t p_height, real_t p_radius);
@@ -164,7 +169,7 @@ public:
void get_vertices(Vector<Vector3> &out_vertices);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(const Vector<Vector3> &p_vertices);
@@ -182,7 +187,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(PoolVector<Vector3> p_faces);
@@ -201,7 +206,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(PoolVector<real_t> &p_heights, int p_width, int p_depth, real_t p_cell_size);
@@ -217,7 +222,7 @@ public:
virtual void set_data(const Variant &p_data);
virtual Variant get_data() const;
virtual PhysicsServer::ShapeType get_type() const;
- virtual btCollisionShape *create_bt_shape();
+ virtual btCollisionShape *create_bt_shape(const btVector3 &p_scale, real_t p_margin = 0);
private:
void setup(real_t p_length);
diff --git a/modules/bullet/shape_owner_bullet.cpp b/modules/bullet/shape_owner_bullet.cpp
index 7b753e1c48..d6ba5d81bc 100644
--- a/modules/bullet/shape_owner_bullet.cpp
+++ b/modules/bullet/shape_owner_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* shape_owner_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,3 +29,7 @@
/*************************************************************************/
#include "shape_owner_bullet.h"
+
+/**
+ @author AndreaCatania
+*/
diff --git a/modules/bullet/shape_owner_bullet.h b/modules/bullet/shape_owner_bullet.h
index 4e81b4be6e..29d42d12f2 100644
--- a/modules/bullet/shape_owner_bullet.h
+++ b/modules/bullet/shape_owner_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* shape_owner_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,11 +33,15 @@
#include "rid_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class ShapeBullet;
class btCollisionShape;
class CollisionObjectBullet;
-/// Each clas that want to use Shapes must inherit this class
+/// Each class that want to use Shapes must inherit this class
/// E.G. BodyShape is a child of this
class ShapeOwnerBullet {
public:
diff --git a/modules/bullet/slider_joint_bullet.cpp b/modules/bullet/slider_joint_bullet.cpp
index 09cbd5032c..9e1cd23989 100644
--- a/modules/bullet/slider_joint_bullet.cpp
+++ b/modules/bullet/slider_joint_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* slider_joint_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,11 +29,17 @@
/*************************************************************************/
#include "slider_joint_bullet.h"
-#include "BulletDynamics/ConstraintSolver/btSliderConstraint.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
#include "rigid_body_bullet.h"
+#include <BulletDynamics/ConstraintSolver/btSliderConstraint.h>
+
+/**
+ @author AndreaCatania
+*/
+
SliderJointBullet::SliderJointBullet(RigidBodyBullet *rbA, RigidBodyBullet *rbB, const Transform &frameInA, const Transform &frameInB) :
JointBullet() {
diff --git a/modules/bullet/slider_joint_bullet.h b/modules/bullet/slider_joint_bullet.h
index 4b9a70a323..d532906c0d 100644
--- a/modules/bullet/slider_joint_bullet.h
+++ b/modules/bullet/slider_joint_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* slider_joint_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -34,6 +33,10 @@
#include "joint_bullet.h"
+/**
+ @author AndreaCatania
+*/
+
class RigidBodyBullet;
class SliderJointBullet : public JointBullet {
diff --git a/modules/bullet/soft_body_bullet.cpp b/modules/bullet/soft_body_bullet.cpp
index 268967f014..5c20eb73f1 100644
--- a/modules/bullet/soft_body_bullet.cpp
+++ b/modules/bullet/soft_body_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* soft_body_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,11 +29,15 @@
/*************************************************************************/
#include "soft_body_bullet.h"
+
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
+#include "scene/3d/immediate_geometry.h"
#include "space_bullet.h"
-#include "scene/3d/immediate_geometry.h"
+/**
+ @author AndreaCatania
+*/
SoftBodyBullet::SoftBodyBullet() :
CollisionObjectBullet(CollisionObjectBullet::TYPE_SOFT_BODY),
diff --git a/modules/bullet/soft_body_bullet.h b/modules/bullet/soft_body_bullet.h
index 83597ae7d2..9895643b84 100644
--- a/modules/bullet/soft_body_bullet.h
+++ b/modules/bullet/soft_body_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* soft_body_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,14 +31,16 @@
#ifndef SOFT_BODY_BULLET_H
#define SOFT_BODY_BULLET_H
+#include "collision_object_bullet.h"
+#include "scene/resources/material.h" // TODO remove this please
+
#ifdef None
/// This is required to remove the macro None defined by x11 compiler because this word "None" is used internally by Bullet
#undef None
#define x11_None 0L
#endif
-#include "BulletSoftBody/btSoftBodyHelpers.h"
-#include "collision_object_bullet.h"
+#include <BulletSoftBody/btSoftBodyHelpers.h>
#ifdef x11_None
/// This is required to re add the macro None defined by x11 compiler
@@ -47,7 +48,9 @@
#define None 0L
#endif
-#include "scene/resources/material.h" // TODO remove thsi please
+/**
+ @author AndreaCatania
+*/
struct SoftShapeData {};
struct TrimeshSoftShapeData : public SoftShapeData {
diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp
index dc16d8402d..d60d8ba0e2 100644
--- a/modules/bullet/space_bullet.cpp
+++ b/modules/bullet/space_bullet.cpp
@@ -1,10 +1,9 @@
/*************************************************************************/
/* space_bullet.cpp */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -30,14 +29,7 @@
/*************************************************************************/
#include "space_bullet.h"
-#include "BulletCollision/CollisionDispatch/btCollisionObject.h"
-#include "BulletCollision/CollisionDispatch/btGhostObject.h"
-#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h"
-#include "BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h"
-#include "BulletCollision/NarrowPhaseCollision/btPointCollector.h"
-#include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h"
-#include "BulletSoftBody/btSoftRigidDynamicsWorld.h"
-#include "btBulletDynamicsCommon.h"
+
#include "bullet_physics_server.h"
#include "bullet_types_converter.h"
#include "bullet_utilities.h"
@@ -48,8 +40,22 @@
#include "servers/physics_server.h"
#include "soft_body_bullet.h"
#include "ustring.h"
+
+#include <BulletCollision/CollisionDispatch/btCollisionObject.h>
+#include <BulletCollision/CollisionDispatch/btGhostObject.h>
+#include <BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h>
+#include <BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h>
+#include <BulletCollision/NarrowPhaseCollision/btPointCollector.h>
+#include <BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h>
+#include <BulletSoftBody/btSoftRigidDynamicsWorld.h>
+#include <btBulletDynamicsCommon.h>
+
#include <assert.h>
+/**
+ @author AndreaCatania
+*/
+
BulletPhysicsDirectSpaceState::BulletPhysicsDirectSpaceState(SpaceBullet *p_space) :
PhysicsDirectSpaceState(),
space(p_space) {}
@@ -116,7 +122,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape);
- btCollisionShape *btShape = shape->create_bt_shape();
+ btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin);
if (!btShape->isConvex()) {
bulletdelete(btShape);
ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type()));
@@ -124,12 +130,9 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
}
btConvexShape *btConvex = static_cast<btConvexShape *>(btShape);
- btVector3 scale_with_margin;
- G_TO_B(p_xform.basis.get_scale(), scale_with_margin);
- btConvex->setLocalScaling(scale_with_margin);
-
btTransform bt_xform;
G_TO_B(p_xform, bt_xform);
+ UNSCALE_BT_BASIS(bt_xform);
btCollisionObject collision_object;
collision_object.setCollisionShape(btConvex);
@@ -138,7 +141,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
GodotAllContactResultCallback btQuery(&collision_object, p_results, p_result_max, &p_exclude);
btQuery.m_collisionFilterGroup = 0;
btQuery.m_collisionFilterMask = p_collision_mask;
- btQuery.m_closestDistanceThreshold = p_margin;
+ btQuery.m_closestDistanceThreshold = 0;
space->dynamicsWorld->contactTest(&collision_object, btQuery);
bulletdelete(btConvex);
@@ -149,7 +152,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, float p_margin, float &p_closest_safe, float &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, ShapeRestInfo *r_info) {
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape);
- btCollisionShape *btShape = shape->create_bt_shape();
+ btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin);
if (!btShape->isConvex()) {
bulletdelete(btShape);
ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type()));
@@ -160,12 +163,9 @@ bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transf
btVector3 bt_motion;
G_TO_B(p_motion, bt_motion);
- btVector3 scale_with_margin;
- G_TO_B(p_xform.basis.get_scale() + Vector3(p_margin, p_margin, p_margin), scale_with_margin);
- bt_convex_shape->setLocalScaling(scale_with_margin);
-
btTransform bt_xform_from;
G_TO_B(p_xform, bt_xform_from);
+ UNSCALE_BT_BASIS(bt_xform_from);
btTransform bt_xform_to(bt_xform_from);
bt_xform_to.getOrigin() += bt_motion;
@@ -202,7 +202,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform &
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape);
- btCollisionShape *btShape = shape->create_bt_shape();
+ btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale(), p_margin);
if (!btShape->isConvex()) {
bulletdelete(btShape);
ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type()));
@@ -210,12 +210,9 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform &
}
btConvexShape *btConvex = static_cast<btConvexShape *>(btShape);
- btVector3 scale_with_margin;
- G_TO_B(p_shape_xform.basis.get_scale(), scale_with_margin);
- btConvex->setLocalScaling(scale_with_margin);
-
btTransform bt_xform;
G_TO_B(p_shape_xform, bt_xform);
+ UNSCALE_BT_BASIS(bt_xform);
btCollisionObject collision_object;
collision_object.setCollisionShape(btConvex);
@@ -224,7 +221,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform &
GodotContactPairContactResultCallback btQuery(&collision_object, r_results, p_result_max, &p_exclude);
btQuery.m_collisionFilterGroup = 0;
btQuery.m_collisionFilterMask = p_collision_mask;
- btQuery.m_closestDistanceThreshold = p_margin;
+ btQuery.m_closestDistanceThreshold = 0;
space->dynamicsWorld->contactTest(&collision_object, btQuery);
r_result_count = btQuery.m_count;
@@ -237,7 +234,7 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get(p_shape);
- btCollisionShape *btShape = shape->create_bt_shape();
+ btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale(), p_margin);
if (!btShape->isConvex()) {
bulletdelete(btShape);
ERR_PRINTS("The shape is not a convex shape, then is not supported: shape type: " + itos(shape->get_type()));
@@ -245,12 +242,9 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh
}
btConvexShape *btConvex = static_cast<btConvexShape *>(btShape);
- btVector3 scale_with_margin;
- G_TO_B(p_shape_xform.basis.get_scale() + Vector3(p_margin, p_margin, p_margin), scale_with_margin);
- btConvex->setLocalScaling(scale_with_margin);
-
btTransform bt_xform;
G_TO_B(p_shape_xform, bt_xform);
+ UNSCALE_BT_BASIS(bt_xform);
btCollisionObject collision_object;
collision_object.setCollisionShape(btConvex);
@@ -259,7 +253,7 @@ bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform &p_sh
GodotRestInfoContactResultCallback btQuery(&collision_object, r_info, &p_exclude);
btQuery.m_collisionFilterGroup = 0;
btQuery.m_collisionFilterMask = p_collision_mask;
- btQuery.m_closestDistanceThreshold = p_margin;
+ btQuery.m_closestDistanceThreshold = 0;
space->dynamicsWorld->contactTest(&collision_object, btQuery);
bulletdelete(btConvex);
@@ -796,7 +790,9 @@ void SpaceBullet::update_gravity() {
/// I'm leaving this here just for future tests.
/// Debug motion and normal vector drawing
#define debug_test_motion 0
-#define PERFORM_INITIAL_UNSTACK 1
+#define PERFORM_INITIAL_UNSTACK 0
+#define RECOVERING_MOVEMENT_SCALE 0.4
+#define RECOVERING_MOVEMENT_CYCLES 4
#if debug_test_motion
@@ -820,6 +816,9 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
SceneTree::get_singleton()->get_current_scene()->add_child(motionVec);
SceneTree::get_singleton()->get_current_scene()->add_child(normalLine);
+ motionVec->set_as_toplevel(true);
+ normalLine->set_as_toplevel(true);
+
red_mat = Ref<SpatialMaterial>(memnew(SpatialMaterial));
red_mat->set_flag(SpatialMaterial::FLAG_UNSHADED, true);
red_mat->set_line_width(20.0);
@@ -850,27 +849,31 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
// }
//}
- btVector3 recover_initial_position(0, 0, 0);
-
btTransform body_safe_position;
G_TO_B(p_from, body_safe_position);
+ UNSCALE_BT_BASIS(body_safe_position);
- { /// Phase one - multi shapes depenetration using margin
#if PERFORM_INITIAL_UNSTACK
- if (recover_from_penetration(p_body, body_safe_position, recover_initial_position)) {
-
- // Add recover position to "From" and "To" transforms
- body_safe_position.getOrigin() += recover_initial_position;
+ btVector3 recover_initial_position(0, 0, 0);
+ { /// Phase one - multi shapes depenetration using margin
+ for (int t(RECOVERING_MOVEMENT_CYCLES); 0 < t; --t) {
+ if (!recover_from_penetration(p_body, body_safe_position, RECOVERING_MOVEMENT_SCALE, recover_initial_position)) {
+ break;
+ }
}
-#endif
+
+ // Add recover movement in order to make it safe
+ body_safe_position.getOrigin() += recover_initial_position;
}
+#endif
- btVector3 recovered_motion;
- G_TO_B(p_motion, recovered_motion);
- const int shape_count(p_body->get_shape_count());
+ btVector3 motion;
+ G_TO_B(p_motion, motion);
{ /// phase two - sweep test, from a secure position without margin
+ const int shape_count(p_body->get_shape_count());
+
#if debug_test_motion
Vector3 sup_line;
B_TO_G(body_safe_position.getOrigin(), sup_line);
@@ -892,14 +895,10 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
}
btConvexShape *convex_shape_test(static_cast<btConvexShape *>(p_body->get_bt_shape(shIndex)));
- btTransform shape_world_from;
- G_TO_B(p_body->get_shape_transform(shIndex), shape_world_from);
-
- // Add local shape transform
- shape_world_from = body_safe_position * shape_world_from;
+ btTransform shape_world_from = body_safe_position * p_body->get_kinematic_utilities()->shapes[shIndex].transform;
btTransform shape_world_to(shape_world_from);
- shape_world_to.getOrigin() += recovered_motion;
+ shape_world_to.getOrigin() += motion;
GodotKinClosestConvexResultCallback btResult(shape_world_from.getOrigin(), shape_world_to.getOrigin(), p_body, IGNORE_AREAS_TRUE);
btResult.m_collisionFilterGroup = p_body->get_collision_layer();
@@ -910,64 +909,81 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform &p_f
if (btResult.hasHit()) {
/// Since for each sweep test I fix the motion of new shapes in base the recover result,
/// if another shape will hit something it means that has a deepest penetration respect the previous shape
- recovered_motion *= btResult.m_closestHitFraction;
+ motion *= btResult.m_closestHitFraction;
}
}
+
+ body_safe_position.getOrigin() += motion;
}
- bool hasPenetration = false;
+ bool has_penetration = false;
{ /// Phase three - Recover + contact test with margin
+ btVector3 delta_recover_movement(0, 0, 0);
RecoverResult r_recover_result;
+ bool l_has_penetration;
+ real_t l_penetration_distance = 1e20;
- hasPenetration = recover_from_penetration(p_body, body_safe_position, recovered_motion, &r_recover_result);
-
- if (r_result) {
-
- B_TO_G(recovered_motion + recover_initial_position, r_result->motion);
+ for (int t(RECOVERING_MOVEMENT_CYCLES); 0 < t; --t) {
+ l_has_penetration = recover_from_penetration(p_body, body_safe_position, RECOVERING_MOVEMENT_SCALE, delta_recover_movement, &r_recover_result);
- if (hasPenetration) {
- const btRigidBody *btRigid = static_cast<const btRigidBody *>(r_recover_result.other_collision_object);
- CollisionObjectBullet *collisionObject = static_cast<CollisionObjectBullet *>(btRigid->getUserPointer());
-
- r_result->remainder = p_motion - r_result->motion; // is the remaining movements
- B_TO_G(r_recover_result.pointWorld, r_result->collision_point);
- B_TO_G(r_recover_result.pointNormalWorld, r_result->collision_normal);
- B_TO_G(btRigid->getVelocityInLocalPoint(r_recover_result.pointWorld - btRigid->getWorldTransform().getOrigin()), r_result->collider_velocity); // It calculates velocity at point and assign it using special function Bullet_to_Godot
- r_result->collider = collisionObject->get_self();
- r_result->collider_id = collisionObject->get_instance_id();
- r_result->collider_shape = r_recover_result.other_compound_shape_index;
- r_result->collision_local_shape = r_recover_result.local_shape_most_recovered;
+ if (r_result) {
+#if PERFORM_INITIAL_UNSTACK
+ B_TO_G(motion + delta_recover_movement + recover_initial_position, r_result->motion);
+#else
+ B_TO_G(motion + delta_recover_movement, r_result->motion);
+#endif
+ if (l_has_penetration) {
+ has_penetration = true;
+ if (l_penetration_distance <= r_recover_result.penetration_distance) {
+ continue;
+ }
- //{ /// Add manifold point to manage collisions
- // btPersistentManifold* manifold = dynamicsWorld->getDispatcher()->getNewManifold(p_body->getBtBody(), btRigid);
- // btManifoldPoint manifoldPoint(result_callabck.m_pointWorld, result_callabck.m_pointWorld, result_callabck.m_pointNormalWorld, result_callabck.m_penetration_distance);
- // manifoldPoint.m_index0 = r_result->collision_local_shape;
- // manifoldPoint.m_index1 = r_result->collider_shape;
- // manifold->addManifoldPoint(manifoldPoint);
- // p_body->get_kinematic_utilities()->m_generatedManifold.push_back(manifold);
- //}
+ l_penetration_distance = r_recover_result.penetration_distance;
+
+ const btRigidBody *btRigid = static_cast<const btRigidBody *>(r_recover_result.other_collision_object);
+ CollisionObjectBullet *collisionObject = static_cast<CollisionObjectBullet *>(btRigid->getUserPointer());
+
+ B_TO_G(motion, r_result->remainder); // is the remaining movements
+ r_result->remainder = p_motion - r_result->remainder;
+ B_TO_G(r_recover_result.pointWorld, r_result->collision_point);
+ B_TO_G(r_recover_result.normal, r_result->collision_normal);
+ B_TO_G(btRigid->getVelocityInLocalPoint(r_recover_result.pointWorld - btRigid->getWorldTransform().getOrigin()), r_result->collider_velocity); // It calculates velocity at point and assign it using special function Bullet_to_Godot
+ r_result->collider = collisionObject->get_self();
+ r_result->collider_id = collisionObject->get_instance_id();
+ r_result->collider_shape = r_recover_result.other_compound_shape_index;
+ r_result->collision_local_shape = r_recover_result.local_shape_most_recovered;
+
+ //{ /// Add manifold point to manage collisions
+ // btPersistentManifold* manifold = dynamicsWorld->getDispatcher()->getNewManifold(p_body->getBtBody(), btRigid);
+ // btManifoldPoint manifoldPoint(result_callabck.m_pointWorld, result_callabck.m_pointWorld, result_callabck.m_pointNormalWorld, result_callabck.m_penetration_distance);
+ // manifoldPoint.m_index0 = r_result->collision_local_shape;
+ // manifoldPoint.m_index1 = r_result->collider_shape;
+ // manifold->addManifoldPoint(manifoldPoint);
+ // p_body->get_kinematic_utilities()->m_generatedManifold.push_back(manifold);
+ //}
#if debug_test_motion
- Vector3 sup_line2;
- B_TO_G(recovered_motion, sup_line2);
- //Vector3 sup_pos;
- //B_TO_G( pt.getPositionWorldOnB(), sup_pos);
- normalLine->clear();
- normalLine->begin(Mesh::PRIMITIVE_LINES, NULL);
- normalLine->add_vertex(r_result->collision_point);
- normalLine->add_vertex(r_result->collision_point + r_result->collision_normal * 10);
- normalLine->end();
+ Vector3 sup_line2;
+ B_TO_G(motion, sup_line2);
+ normalLine->clear();
+ normalLine->begin(Mesh::PRIMITIVE_LINES, NULL);
+ normalLine->add_vertex(r_result->collision_point);
+ normalLine->add_vertex(r_result->collision_point + r_result->collision_normal * 10);
+ normalLine->end();
#endif
-
+ } else {
+ r_result->remainder = Vector3();
+ }
} else {
- r_result->remainder = Vector3();
+ if (!l_has_penetration)
+ break;
}
}
}
- return hasPenetration;
+ return has_penetration;
}
struct RecoverPenetrationBroadPhaseCallback : public btBroadphaseAabbCallback {
@@ -1004,7 +1020,7 @@ public:
}
};
-bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_body_position, btVector3 &r_recover_position, RecoverResult *r_recover_result) {
+bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_body_position, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) {
RecoverPenetrationBroadPhaseCallback recover_broad_result(p_body->get_bt_collision_object(), p_body->get_collision_layer(), p_body->get_collision_mask());
@@ -1028,7 +1044,7 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran
body_shape_position = p_body_position * kin_shape.transform;
body_shape_position_recovered = body_shape_position;
- body_shape_position_recovered.getOrigin() += r_recover_position;
+ body_shape_position_recovered.getOrigin() += r_delta_recover_movement;
kin_shape.shape->getAabb(body_shape_position_recovered, minAabb, maxAabb);
dynamicsWorld->getBroadphase()->aabbTest(minAabb, maxAabb, recover_broad_result);
@@ -1045,24 +1061,24 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran
for (int x = cs->getNumChildShapes() - 1; 0 <= x; --x) {
if (cs->getChildShape(x)->isConvex()) {
- if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(cs->getChildShape(x)), otherObject, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), r_recover_position, r_recover_result)) {
+ if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(cs->getChildShape(x)), otherObject, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) {
penetration = true;
}
} else {
- if (RFP_convex_world_test(kin_shape.shape, cs->getChildShape(x), p_body->get_bt_collision_object(), otherObject, kinIndex, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), r_recover_position, r_recover_result)) {
+ if (RFP_convex_world_test(kin_shape.shape, cs->getChildShape(x), p_body->get_bt_collision_object(), otherObject, kinIndex, x, body_shape_position, otherObject->getWorldTransform() * cs->getChildTransform(x), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) {
penetration = true;
}
}
}
} else if (otherObject->getCollisionShape()->isConvex()) { /// Execute GJK test against object shape
- if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(otherObject->getCollisionShape()), otherObject, 0, body_shape_position, otherObject->getWorldTransform(), r_recover_position, r_recover_result)) {
+ if (RFP_convex_convex_test(kin_shape.shape, static_cast<const btConvexShape *>(otherObject->getCollisionShape()), otherObject, 0, body_shape_position, otherObject->getWorldTransform(), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) {
penetration = true;
}
} else {
- if (RFP_convex_world_test(kin_shape.shape, otherObject->getCollisionShape(), p_body->get_bt_collision_object(), otherObject, kinIndex, 0, body_shape_position, otherObject->getWorldTransform(), r_recover_position, r_recover_result)) {
+ if (RFP_convex_world_test(kin_shape.shape, otherObject->getCollisionShape(), p_body->get_bt_collision_object(), otherObject, kinIndex, 0, body_shape_position, otherObject->getWorldTransform(), p_recover_movement_scale, r_delta_recover_movement, r_recover_result)) {
penetration = true;
}
@@ -1073,12 +1089,12 @@ bool SpaceBullet::recover_from_penetration(RigidBodyBullet *p_body, const btTran
return penetration;
}
-bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result) {
+bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) {
// Initialize GJK input
btGjkPairDetector::ClosestPointInput gjk_input;
gjk_input.m_transformA = p_transformA;
- gjk_input.m_transformA.getOrigin() += r_recover_position;
+ gjk_input.m_transformA.getOrigin() += r_delta_recover_movement;
gjk_input.m_transformB = p_transformB;
// Perform GJK test
@@ -1087,30 +1103,31 @@ bool SpaceBullet::RFP_convex_convex_test(const btConvexShape *p_shapeA, const bt
gjk_pair_detector.getClosestPoints(gjk_input, result, 0);
if (0 > result.m_distance) {
// Has penetration
- r_recover_position += result.m_normalOnBInWorld * (result.m_distance * -1);
+ r_delta_recover_movement += result.m_normalOnBInWorld * (result.m_distance * -1 * p_recover_movement_scale);
if (r_recover_result) {
-
- r_recover_result->hasPenetration = true;
- r_recover_result->other_collision_object = p_objectB;
- r_recover_result->other_compound_shape_index = p_shapeId_B;
- r_recover_result->penetration_distance = result.m_distance;
- r_recover_result->pointNormalWorld = result.m_normalOnBInWorld;
- r_recover_result->pointWorld = result.m_pointInWorld;
+ if (result.m_distance < r_recover_result->penetration_distance) {
+ r_recover_result->hasPenetration = true;
+ r_recover_result->other_collision_object = p_objectB;
+ r_recover_result->other_compound_shape_index = p_shapeId_B;
+ r_recover_result->penetration_distance = result.m_distance;
+ r_recover_result->pointWorld = result.m_pointInWorld;
+ r_recover_result->normal = result.m_normalOnBInWorld;
+ }
}
return true;
}
return false;
}
-bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result) {
+bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result) {
/// Contact test
- btTransform p_recovered_transformA(p_transformA);
- p_recovered_transformA.getOrigin() += r_recover_position;
+ btTransform tA(p_transformA);
+ tA.getOrigin() += r_delta_recover_movement;
- btCollisionObjectWrapper obA(NULL, p_shapeA, p_objectA, p_recovered_transformA, -1, p_shapeId_A);
+ btCollisionObjectWrapper obA(NULL, p_shapeA, p_objectA, tA, -1, p_shapeId_A);
btCollisionObjectWrapper obB(NULL, p_shapeB, p_objectB, p_transformB, -1, p_shapeId_B);
btCollisionAlgorithm *algorithm = dispatcher->findAlgorithm(&obA, &obB, NULL, BT_CLOSEST_POINT_ALGORITHMS);
@@ -1123,16 +1140,17 @@ bool SpaceBullet::RFP_convex_world_test(const btConvexShape *p_shapeA, const btC
dispatcher->freeCollisionAlgorithm(algorithm);
if (contactPointResult.hasHit()) {
- r_recover_position += contactPointResult.m_pointNormalWorld * (contactPointResult.m_penetration_distance * -1);
+ r_delta_recover_movement += contactPointResult.m_pointNormalWorld * (contactPointResult.m_penetration_distance * -1 * p_recover_movement_scale);
if (r_recover_result) {
-
- r_recover_result->hasPenetration = true;
- r_recover_result->other_collision_object = p_objectB;
- r_recover_result->other_compound_shape_index = p_shapeId_B;
- r_recover_result->penetration_distance = contactPointResult.m_penetration_distance;
- r_recover_result->pointNormalWorld = contactPointResult.m_pointNormalWorld;
- r_recover_result->pointWorld = contactPointResult.m_pointWorld;
+ if (contactPointResult.m_penetration_distance < r_recover_result->penetration_distance) {
+ r_recover_result->hasPenetration = true;
+ r_recover_result->other_collision_object = p_objectB;
+ r_recover_result->other_compound_shape_index = p_shapeId_B;
+ r_recover_result->penetration_distance = contactPointResult.m_penetration_distance;
+ r_recover_result->pointWorld = contactPointResult.m_pointWorld;
+ r_recover_result->normal = contactPointResult.m_pointNormalWorld;
+ }
}
return true;
}
diff --git a/modules/bullet/space_bullet.h b/modules/bullet/space_bullet.h
index 6e71a25773..0aeb407dcc 100644
--- a/modules/bullet/space_bullet.h
+++ b/modules/bullet/space_bullet.h
@@ -1,10 +1,9 @@
/*************************************************************************/
/* space_bullet.h */
-/* Author: AndreaCatania */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -32,17 +31,22 @@
#ifndef SPACE_BULLET_H
#define SPACE_BULLET_H
-#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
-#include "BulletCollision/BroadphaseCollision/btOverlappingPairCache.h"
-#include "LinearMath/btScalar.h"
-#include "LinearMath/btTransform.h"
-#include "LinearMath/btVector3.h"
#include "core/variant.h"
#include "core/vector.h"
#include "godot_result_callbacks.h"
#include "rid_bullet.h"
#include "servers/physics_server.h"
+#include <BulletCollision/BroadphaseCollision/btBroadphaseProxy.h>
+#include <BulletCollision/BroadphaseCollision/btOverlappingPairCache.h>
+#include <LinearMath/btScalar.h>
+#include <LinearMath/btTransform.h>
+#include <LinearMath/btVector3.h>
+
+/**
+ @author AndreaCatania
+*/
+
class AreaBullet;
class btBroadphaseInterface;
class btCollisionDispatcher;
@@ -178,23 +182,29 @@ private:
struct RecoverResult {
bool hasPenetration;
- btVector3 pointNormalWorld;
+ btVector3 normal;
btVector3 pointWorld;
- btScalar penetration_distance; // Negative is penetration
+ btScalar penetration_distance; // Negative mean penetration
int other_compound_shape_index;
const btCollisionObject *other_collision_object;
int local_shape_most_recovered;
RecoverResult() :
- hasPenetration(false) {}
+ hasPenetration(false),
+ normal(0, 0, 0),
+ pointWorld(0, 0, 0),
+ penetration_distance(1e20),
+ other_compound_shape_index(0),
+ other_collision_object(NULL),
+ local_shape_most_recovered(0) {}
};
- bool recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_from, btVector3 &r_recover_position, RecoverResult *r_recover_result = NULL);
+ bool recover_from_penetration(RigidBodyBullet *p_body, const btTransform &p_from, btScalar p_recover_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL);
/// This is an API that recover a kinematic object from penetration
/// This allow only Convex Convex test and it always use GJK algorithm, With this API we don't benefit of Bullet special accelerated functions
- bool RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result);
+ bool RFP_convex_convex_test(const btConvexShape *p_shapeA, const btConvexShape *p_shapeB, btCollisionObject *p_objectB, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL);
/// This is an API that recover a kinematic object from penetration
/// Using this we leave Bullet to select the best algorithm, For example GJK in case we have Convex Convex, or a Bullet accelerated algorithm
- bool RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btVector3 &r_recover_position, RecoverResult *r_recover_result);
+ bool RFP_convex_world_test(const btConvexShape *p_shapeA, const btCollisionShape *p_shapeB, btCollisionObject *p_objectA, btCollisionObject *p_objectB, int p_shapeId_A, int p_shapeId_B, const btTransform &p_transformA, const btTransform &p_transformB, btScalar p_movement_scale, btVector3 &r_delta_recover_movement, RecoverResult *r_recover_result = NULL);
};
#endif
diff --git a/modules/dds/register_types.cpp b/modules/dds/register_types.cpp
index 76244c76a4..d6351fb6fe 100644
--- a/modules/dds/register_types.cpp
+++ b/modules/dds/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "texture_loader_dds.h"
diff --git a/modules/dds/register_types.h b/modules/dds/register_types.h
index 74db58937e..c7f7839c24 100644
--- a/modules/dds/register_types.h
+++ b/modules/dds/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_dds_types();
void unregister_dds_types();
diff --git a/modules/dds/texture_loader_dds.cpp b/modules/dds/texture_loader_dds.cpp
index d01af20544..9424080b6d 100644
--- a/modules/dds/texture_loader_dds.cpp
+++ b/modules/dds/texture_loader_dds.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_loader_dds.h"
#include "os/file_access.h"
diff --git a/modules/dds/texture_loader_dds.h b/modules/dds/texture_loader_dds.h
index 0adae2fb2a..14d99ff506 100644
--- a/modules/dds/texture_loader_dds.h
+++ b/modules/dds/texture_loader_dds.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_LOADER_DDS_H
#define TEXTURE_LOADER_DDS_H
diff --git a/modules/enet/SCsub b/modules/enet/SCsub
index 4790c5099f..7caeafa1d6 100644
--- a/modules/enet/SCsub
+++ b/modules/enet/SCsub
@@ -3,10 +3,10 @@
Import('env')
Import('env_modules')
-# Thirdparty source files
-
env_enet = env_modules.Clone()
+# Thirdparty source files
+
if env['builtin_enet']:
thirdparty_dir = "#thirdparty/enet/"
thirdparty_sources = [
diff --git a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml
index 25d17542ea..23ee327cc5 100644
--- a/modules/enet/doc_classes/NetworkedMultiplayerENet.xml
+++ b/modules/enet/doc_classes/NetworkedMultiplayerENet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NetworkedMultiplayerENet" inherits="NetworkedMultiplayerPeer" category="Core" version="3.0-beta">
+<class name="NetworkedMultiplayerENet" inherits="NetworkedMultiplayerPeer" category="Core" version="3.0-stable">
<brief_description>
PacketPeer implementation using the ENet library.
</brief_description>
@@ -47,12 +47,6 @@
Create server that listens to connections via [code]port[/code].
</description>
</method>
- <method name="get_compression_mode" qualifiers="const">
- <return type="int" enum="NetworkedMultiplayerENet.CompressionMode">
- </return>
- <description>
- </description>
- </method>
<method name="set_bind_ip">
<return type="void">
</return>
@@ -61,15 +55,11 @@
<description>
</description>
</method>
- <method name="set_compression_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="NetworkedMultiplayerENet.CompressionMode">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="compression_mode" type="int" setter="set_compression_mode" getter="get_compression_mode" enum="NetworkedMultiplayerENet.CompressionMode">
+ </member>
+ </members>
<constants>
<constant name="COMPRESS_NONE" value="0" enum="CompressionMode">
</constant>
diff --git a/modules/enet/networked_multiplayer_enet.cpp b/modules/enet/networked_multiplayer_enet.cpp
index 2b5dd67938..f3f4acd768 100644
--- a/modules/enet/networked_multiplayer_enet.cpp
+++ b/modules/enet/networked_multiplayer_enet.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "networked_multiplayer_enet.h"
#include "io/marshalls.h"
#include "os/os.h"
@@ -35,6 +36,10 @@ void NetworkedMultiplayerENet::set_transfer_mode(TransferMode p_mode) {
transfer_mode = p_mode;
}
+NetworkedMultiplayerPeer::TransferMode NetworkedMultiplayerENet::get_transfer_mode() const {
+
+ return transfer_mode;
+}
void NetworkedMultiplayerENet::set_target_peer(int p_peer) {
@@ -658,6 +663,8 @@ void NetworkedMultiplayerENet::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_compression_mode"), &NetworkedMultiplayerENet::get_compression_mode);
ClassDB::bind_method(D_METHOD("set_bind_ip", "ip"), &NetworkedMultiplayerENet::set_bind_ip);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "compression_mode", PROPERTY_HINT_ENUM, "None,Range Coder,FastLZ,ZLib,ZStd"), "set_compression_mode", "get_compression_mode");
+
BIND_ENUM_CONSTANT(COMPRESS_NONE);
BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER);
BIND_ENUM_CONSTANT(COMPRESS_FASTLZ);
diff --git a/modules/enet/networked_multiplayer_enet.h b/modules/enet/networked_multiplayer_enet.h
index d6644aed2d..440e9b5400 100644
--- a/modules/enet/networked_multiplayer_enet.h
+++ b/modules/enet/networked_multiplayer_enet.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NETWORKED_MULTIPLAYER_ENET_H
#define NETWORKED_MULTIPLAYER_ENET_H
@@ -109,6 +110,7 @@ protected:
public:
virtual void set_transfer_mode(TransferMode p_mode);
+ virtual TransferMode get_transfer_mode() const;
virtual void set_target_peer(int p_peer);
virtual int get_packet_peer() const;
diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp
index 94d0eaa43f..cabaeb692a 100644
--- a/modules/enet/register_types.cpp
+++ b/modules/enet/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "error_macros.h"
#include "networked_multiplayer_enet.h"
diff --git a/modules/enet/register_types.h b/modules/enet/register_types.h
index 03cc2c8525..bcf0893ae4 100644
--- a/modules/enet/register_types.h
+++ b/modules/enet/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_enet_types();
void unregister_enet_types();
diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp
index 2224ecc356..8a674bc8c1 100644
--- a/modules/etc/image_etc.cpp
+++ b/modules/etc/image_etc.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_etc.h"
#include "Etc.h"
#include "EtcFilter.h"
@@ -117,7 +118,6 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
}
uint32_t imgw = p_img->get_width(), imgh = p_img->get_height();
- ERR_FAIL_COND(next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh);
Image::Format etc_format = force_etc1_format ? Image::FORMAT_ETC : _get_etc2_mode(detected_channels);
@@ -126,6 +126,25 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
if (img->get_format() != Image::FORMAT_RGBA8)
img->convert(Image::FORMAT_RGBA8); //still uses RGBA to convert
+ if (img->has_mipmaps()) {
+ if (next_power_of_2(imgw) != imgw || next_power_of_2(imgh) != imgh) {
+ img->resize_to_po2();
+ imgw = img->get_width();
+ imgh = img->get_height();
+ }
+ } else {
+ if (imgw % 4 != 0 || imgh % 4 != 0) {
+ if (imgw % 4) {
+ imgw += 4 - imgw % 4;
+ }
+ if (imgh % 4) {
+ imgh += 4 - imgh % 4;
+ }
+
+ img->resize(imgw, imgh);
+ }
+ }
+
PoolVector<uint8_t>::Read r = img->get_data().read();
int target_size = Image::get_image_data_size(imgw, imgh, etc_format, p_img->has_mipmaps() ? -1 : 0);
diff --git a/modules/etc/image_etc.h b/modules/etc/image_etc.h
index fb32a120b1..371c38176f 100644
--- a/modules/etc/image_etc.h
+++ b/modules/etc/image_etc.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_ETC1_H
#define IMAGE_ETC1_H
diff --git a/modules/etc/register_types.cpp b/modules/etc/register_types.cpp
index 42baf91dfa..1d1f0e1b77 100644
--- a/modules/etc/register_types.cpp
+++ b/modules/etc/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_etc.h"
diff --git a/modules/etc/register_types.h b/modules/etc/register_types.h
index 1f1336dc10..4a8513a687 100644
--- a/modules/etc/register_types.h
+++ b/modules/etc/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_etc_types();
void unregister_etc_types();
diff --git a/modules/etc/texture_loader_pkm.cpp b/modules/etc/texture_loader_pkm.cpp
index 4f6df04341..ac89259c9b 100644
--- a/modules/etc/texture_loader_pkm.cpp
+++ b/modules/etc/texture_loader_pkm.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_loader_pkm.h"
#include "os/file_access.h"
diff --git a/modules/etc/texture_loader_pkm.h b/modules/etc/texture_loader_pkm.h
index 1e8833b547..3c6d9180bd 100644
--- a/modules/etc/texture_loader_pkm.h
+++ b/modules/etc/texture_loader_pkm.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_LOADER_PKM_H
#define TEXTURE_LOADER_PKM_H
diff --git a/modules/freetype/register_types.cpp b/modules/freetype/register_types.cpp
index c3fa84417d..bde04b714c 100644
--- a/modules/freetype/register_types.cpp
+++ b/modules/freetype/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
void register_freetype_types() {}
diff --git a/modules/freetype/register_types.h b/modules/freetype/register_types.h
index 959d646cd4..0cec0e3951 100644
--- a/modules/freetype/register_types.h
+++ b/modules/freetype/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_freetype_types();
void unregister_freetype_types();
diff --git a/modules/gdnative/SCsub b/modules/gdnative/SCsub
index 4e73ebfb9d..c92c3f30a2 100644
--- a/modules/gdnative/SCsub
+++ b/modules/gdnative/SCsub
@@ -245,6 +245,14 @@ if ARGUMENTS.get('gdnative_wrapper', False):
gd_wrapper_env = env.Clone()
gd_wrapper_env.Append(CPPPATH=['#modules/gdnative/include/'])
+ if gd_wrapper_env['use_lto']:
+ if not env.msvc:
+ gd_wrapper_env.Append(CCFLAGS=['--no-lto'])
+ gd_wrapper_env.Append(LINKFLAGS=['--no-lto'])
+ else:
+ gd_wrapper_env.Append(CCFLAGS=['/GL-'])
+ gd_wrapper_env.Append(LINKFLAGS=['/LTCG:OFF'])
+
if not env.msvc:
gd_wrapper_env.Append(CCFLAGS=['-fPIC'])
diff --git a/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
index e4ffa76d36..bceb4f1f4c 100644
--- a/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
+++ b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRInterfaceGDNative" inherits="ARVRInterface" category="Core" version="3.0-beta">
+<class name="ARVRInterfaceGDNative" inherits="ARVRInterface" category="Core" version="3.0-stable">
<brief_description>
GDNative wrapper for an ARVR interface
</brief_description>
diff --git a/modules/gdnative/doc_classes/GDNative.xml b/modules/gdnative/doc_classes/GDNative.xml
index 83953cef49..7e4d956604 100644
--- a/modules/gdnative/doc_classes/GDNative.xml
+++ b/modules/gdnative/doc_classes/GDNative.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GDNative" inherits="Reference" category="Core" version="3.0-beta">
+<class name="GDNative" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/gdnative/doc_classes/GDNativeLibrary.xml b/modules/gdnative/doc_classes/GDNativeLibrary.xml
index 647d27929f..a6874c9ae8 100644
--- a/modules/gdnative/doc_classes/GDNativeLibrary.xml
+++ b/modules/gdnative/doc_classes/GDNativeLibrary.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GDNativeLibrary" inherits="Resource" category="Core" version="3.0-beta">
+<class name="GDNativeLibrary" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -31,6 +31,8 @@
<members>
<member name="load_once" type="bool" setter="set_load_once" getter="should_load_once">
</member>
+ <member name="reloadable" type="bool" setter="set_reloadable" getter="is_reloadable">
+ </member>
<member name="singleton" type="bool" setter="set_singleton" getter="is_singleton">
</member>
<member name="symbol_prefix" type="String" setter="set_symbol_prefix" getter="get_symbol_prefix">
diff --git a/modules/gdnative/doc_classes/NativeScript.xml b/modules/gdnative/doc_classes/NativeScript.xml
index 3f6025d02f..f713e4112e 100644
--- a/modules/gdnative/doc_classes/NativeScript.xml
+++ b/modules/gdnative/doc_classes/NativeScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="NativeScript" inherits="Script" category="Core" version="3.0-beta">
+<class name="NativeScript" inherits="Script" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/gdnative/doc_classes/PluginScript.xml b/modules/gdnative/doc_classes/PluginScript.xml
index 1a2141247a..fbdd8f09e6 100644
--- a/modules/gdnative/doc_classes/PluginScript.xml
+++ b/modules/gdnative/doc_classes/PluginScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="PluginScript" inherits="Script" category="Core" version="3.0-beta">
+<class name="PluginScript" inherits="Script" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp
index a6337c2f6a..42c3028f2c 100644
--- a/modules/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative.h"
#include "global_constants.h"
@@ -37,9 +38,12 @@
#include "scene/main/scene_tree.h"
-const String init_symbol = "gdnative_init";
-const String terminate_symbol = "gdnative_terminate";
-const String default_symbol_prefix = "godot_";
+static const String init_symbol = "gdnative_init";
+static const String terminate_symbol = "gdnative_terminate";
+static const String default_symbol_prefix = "godot_";
+static const bool default_singleton = false;
+static const bool default_load_once = true;
+static const bool default_reloadable = true;
// Defined in gdnative_api_struct.gen.cpp
extern const godot_gdnative_core_api_struct api_struct;
@@ -50,6 +54,9 @@ GDNativeLibrary::GDNativeLibrary() {
config_file.instance();
symbol_prefix = default_symbol_prefix;
+ load_once = default_load_once;
+ singleton = default_singleton;
+ reloadable = default_reloadable;
if (GDNativeLibrary::loaded_libraries == NULL) {
GDNativeLibrary::loaded_libraries = memnew((Map<String, Vector<Ref<GDNative> > >));
@@ -68,14 +75,17 @@ void GDNativeLibrary::_bind_methods() {
ClassDB::bind_method(D_METHOD("should_load_once"), &GDNativeLibrary::should_load_once);
ClassDB::bind_method(D_METHOD("is_singleton"), &GDNativeLibrary::is_singleton);
ClassDB::bind_method(D_METHOD("get_symbol_prefix"), &GDNativeLibrary::get_symbol_prefix);
+ ClassDB::bind_method(D_METHOD("is_reloadable"), &GDNativeLibrary::is_reloadable);
ClassDB::bind_method(D_METHOD("set_load_once", "load_once"), &GDNativeLibrary::set_load_once);
ClassDB::bind_method(D_METHOD("set_singleton", "singleton"), &GDNativeLibrary::set_singleton);
ClassDB::bind_method(D_METHOD("set_symbol_prefix", "symbol_prefix"), &GDNativeLibrary::set_symbol_prefix);
+ ClassDB::bind_method(D_METHOD("set_reloadable", "reloadable"), &GDNativeLibrary::set_reloadable);
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "load_once"), "set_load_once", "should_load_once");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "singleton"), "set_singleton", "is_singleton");
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "symbol_prefix"), "set_symbol_prefix", "get_symbol_prefix");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "reloadable"), "set_reloadable", "is_reloadable");
}
GDNative::GDNative() {
@@ -130,6 +140,9 @@ bool GDNative::initialize() {
// we should pass library name to dlopen(). The library name is flattened
// during export.
String path = lib_path.get_file();
+#elif defined(UWP_ENABLED)
+ // On UWP we use a relative path from the app
+ String path = lib_path.replace("res://", "");
#else
String path = ProjectSettings::get_singleton()->globalize_path(lib_path);
#endif
@@ -168,13 +181,23 @@ bool GDNative::initialize() {
godot_gdnative_init_fn library_init_fpointer;
library_init_fpointer = (godot_gdnative_init_fn)library_init;
+ static uint64_t core_api_hash = 0;
+ static uint64_t editor_api_hash = 0;
+ static uint64_t no_api_hash = 0;
+
+ if (!(core_api_hash || editor_api_hash || no_api_hash)) {
+ core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE);
+ editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR);
+ no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE);
+ }
+
godot_gdnative_init_options options;
options.api_struct = &api_struct;
options.in_editor = Engine::get_singleton()->is_editor_hint();
- options.core_api_hash = ClassDB::get_api_hash(ClassDB::API_CORE);
- options.editor_api_hash = ClassDB::get_api_hash(ClassDB::API_EDITOR);
- options.no_api_hash = ClassDB::get_api_hash(ClassDB::API_NONE);
+ options.core_api_hash = core_api_hash;
+ options.editor_api_hash = editor_api_hash;
+ options.no_api_hash = no_api_hash;
options.report_version_mismatch = &_gdnative_report_version_mismatch;
options.report_loading_error = &_gdnative_report_loading_error;
options.gd_native_library = (godot_object *)(get_library().ptr());
@@ -314,9 +337,10 @@ RES GDNativeLibraryResourceLoader::load(const String &p_path, const String &p_or
*r_error = err;
}
- lib->set_singleton(config->get_value("general", "singleton", false));
- lib->set_load_once(config->get_value("general", "load_once", true));
+ lib->set_singleton(config->get_value("general", "singleton", default_singleton));
+ lib->set_load_once(config->get_value("general", "load_once", default_load_once));
lib->set_symbol_prefix(config->get_value("general", "symbol_prefix", default_symbol_prefix));
+ lib->set_reloadable(config->get_value("general", "reloadable", default_reloadable));
String entry_lib_path;
{
@@ -412,6 +436,7 @@ Error GDNativeLibraryResourceSaver::save(const String &p_path, const RES &p_reso
config->set_value("general", "singleton", lib->is_singleton());
config->set_value("general", "load_once", lib->should_load_once());
config->set_value("general", "symbol_prefix", lib->get_symbol_prefix());
+ config->set_value("general", "reloadable", lib->is_reloadable());
return config->save(p_path);
}
diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h
index 26c19dcf22..3298ea950f 100644
--- a/modules/gdnative/gdnative.h
+++ b/modules/gdnative/gdnative.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDNATIVE_H
#define GDNATIVE_H
@@ -59,6 +60,7 @@ class GDNativeLibrary : public Resource {
bool singleton;
bool load_once;
String symbol_prefix;
+ bool reloadable;
public:
GDNativeLibrary();
@@ -86,6 +88,10 @@ public:
return symbol_prefix;
}
+ _FORCE_INLINE_ bool is_reloadable() const {
+ return reloadable;
+ }
+
_FORCE_INLINE_ void set_load_once(bool p_load_once) {
load_once = p_load_once;
}
@@ -96,6 +102,10 @@ public:
symbol_prefix = p_symbol_prefix;
}
+ _FORCE_INLINE_ void set_reloadable(bool p_reloadable) {
+ reloadable = p_reloadable;
+ }
+
static void _bind_methods();
};
diff --git a/modules/gdnative/gdnative/aabb.cpp b/modules/gdnative/gdnative/aabb.cpp
index 706e81a606..0597e1cdd6 100644
--- a/modules/gdnative/gdnative/aabb.cpp
+++ b/modules/gdnative/gdnative/aabb.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* aabb.cpp */
+/* aabb.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/aabb.h"
#include "core/math/aabb.h"
diff --git a/modules/gdnative/gdnative/array.cpp b/modules/gdnative/gdnative/array.cpp
index 72020b5361..1fb0ff0500 100644
--- a/modules/gdnative/gdnative/array.cpp
+++ b/modules/gdnative/gdnative/array.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/array.h"
#include "core/array.h"
diff --git a/modules/gdnative/gdnative/basis.cpp b/modules/gdnative/gdnative/basis.cpp
index 7b9acc6bd0..372bdf3fb1 100644
--- a/modules/gdnative/gdnative/basis.cpp
+++ b/modules/gdnative/gdnative/basis.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/basis.h"
#include "core/math/matrix3.h"
diff --git a/modules/gdnative/gdnative/color.cpp b/modules/gdnative/gdnative/color.cpp
index 4fd4458bfb..4089f4458a 100644
--- a/modules/gdnative/gdnative/color.cpp
+++ b/modules/gdnative/gdnative/color.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/color.h"
#include "core/color.h"
diff --git a/modules/gdnative/gdnative/dictionary.cpp b/modules/gdnative/gdnative/dictionary.cpp
index b2ac8e0426..786e614158 100644
--- a/modules/gdnative/gdnative/dictionary.cpp
+++ b/modules/gdnative/gdnative/dictionary.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/dictionary.h"
#include "core/variant.h"
diff --git a/modules/gdnative/gdnative/gdnative.cpp b/modules/gdnative/gdnative/gdnative.cpp
index 38fb2ee818..041990e137 100644
--- a/modules/gdnative/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative/gdnative.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/gdnative.h"
#include "class_db.h"
diff --git a/modules/gdnative/gdnative/node_path.cpp b/modules/gdnative/gdnative/node_path.cpp
index 8c490709c0..f24facaae8 100644
--- a/modules/gdnative/gdnative/node_path.cpp
+++ b/modules/gdnative/gdnative/node_path.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/node_path.h"
#include "core/node_path.h"
diff --git a/modules/gdnative/gdnative/plane.cpp b/modules/gdnative/gdnative/plane.cpp
index de272d6f08..be821edcc3 100644
--- a/modules/gdnative/gdnative/plane.cpp
+++ b/modules/gdnative/gdnative/plane.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/plane.h"
#include "core/math/plane.h"
diff --git a/modules/gdnative/gdnative/pool_arrays.cpp b/modules/gdnative/gdnative/pool_arrays.cpp
index dc24bf4d15..6688be1a0d 100644
--- a/modules/gdnative/gdnative/pool_arrays.cpp
+++ b/modules/gdnative/gdnative/pool_arrays.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/pool_arrays.h"
#include "array.h"
@@ -699,6 +700,10 @@ void GDAPI godot_pool_color_array_destroy(godot_pool_color_array *p_self) {
// read accessor functions
//
+godot_pool_byte_array_read_access GDAPI *godot_pool_byte_array_read_access_copy(const godot_pool_byte_array_read_access *p_other) {
+ PoolVector<uint8_t>::Read *other = (PoolVector<uint8_t>::Read *)p_other;
+ return (godot_pool_byte_array_read_access *)memnew(PoolVector<uint8_t>::Read(*other));
+}
const uint8_t GDAPI *godot_pool_byte_array_read_access_ptr(const godot_pool_byte_array_read_access *p_read) {
const PoolVector<uint8_t>::Read *read = (const PoolVector<uint8_t>::Read *)p_read;
return read->ptr();
@@ -712,6 +717,10 @@ void GDAPI godot_pool_byte_array_read_access_destroy(godot_pool_byte_array_read_
memdelete((PoolVector<uint8_t>::Read *)p_read);
}
+godot_pool_int_array_read_access GDAPI *godot_pool_int_array_read_access_copy(const godot_pool_int_array_read_access *p_other) {
+ PoolVector<godot_int>::Read *other = (PoolVector<godot_int>::Read *)p_other;
+ return (godot_pool_int_array_read_access *)memnew(PoolVector<godot_int>::Read(*other));
+}
const godot_int GDAPI *godot_pool_int_array_read_access_ptr(const godot_pool_int_array_read_access *p_read) {
const PoolVector<godot_int>::Read *read = (const PoolVector<godot_int>::Read *)p_read;
return read->ptr();
@@ -725,6 +734,10 @@ void GDAPI godot_pool_int_array_read_access_destroy(godot_pool_int_array_read_ac
memdelete((PoolVector<godot_int>::Read *)p_read);
}
+godot_pool_real_array_read_access GDAPI *godot_pool_real_array_read_access_copy(const godot_pool_real_array_read_access *p_other) {
+ PoolVector<godot_real>::Read *other = (PoolVector<godot_real>::Read *)p_other;
+ return (godot_pool_real_array_read_access *)memnew(PoolVector<godot_real>::Read(*other));
+}
const godot_real GDAPI *godot_pool_real_array_read_access_ptr(const godot_pool_real_array_read_access *p_read) {
const PoolVector<godot_real>::Read *read = (const PoolVector<godot_real>::Read *)p_read;
return read->ptr();
@@ -738,6 +751,10 @@ void GDAPI godot_pool_real_array_read_access_destroy(godot_pool_real_array_read_
memdelete((PoolVector<godot_real>::Read *)p_read);
}
+godot_pool_string_array_read_access GDAPI *godot_pool_string_array_read_access_copy(const godot_pool_string_array_read_access *p_other) {
+ PoolVector<String>::Read *other = (PoolVector<String>::Read *)p_other;
+ return (godot_pool_string_array_read_access *)memnew(PoolVector<String>::Read(*other));
+}
const godot_string GDAPI *godot_pool_string_array_read_access_ptr(const godot_pool_string_array_read_access *p_read) {
const PoolVector<String>::Read *read = (const PoolVector<String>::Read *)p_read;
return (const godot_string *)read->ptr();
@@ -751,6 +768,10 @@ void GDAPI godot_pool_string_array_read_access_destroy(godot_pool_string_array_r
memdelete((PoolVector<String>::Read *)p_read);
}
+godot_pool_vector2_array_read_access GDAPI *godot_pool_vector2_array_read_access_copy(const godot_pool_vector2_array_read_access *p_other) {
+ PoolVector<Vector2>::Read *other = (PoolVector<Vector2>::Read *)p_other;
+ return (godot_pool_vector2_array_read_access *)memnew(PoolVector<Vector2>::Read(*other));
+}
const godot_vector2 GDAPI *godot_pool_vector2_array_read_access_ptr(const godot_pool_vector2_array_read_access *p_read) {
const PoolVector<Vector2>::Read *read = (const PoolVector<Vector2>::Read *)p_read;
return (const godot_vector2 *)read->ptr();
@@ -764,6 +785,10 @@ void GDAPI godot_pool_vector2_array_read_access_destroy(godot_pool_vector2_array
memdelete((PoolVector<Vector2>::Read *)p_read);
}
+godot_pool_vector3_array_read_access GDAPI *godot_pool_vector3_array_read_access_copy(const godot_pool_vector3_array_read_access *p_other) {
+ PoolVector<Vector3>::Read *other = (PoolVector<Vector3>::Read *)p_other;
+ return (godot_pool_vector3_array_read_access *)memnew(PoolVector<Vector3>::Read(*other));
+}
const godot_vector3 GDAPI *godot_pool_vector3_array_read_access_ptr(const godot_pool_vector3_array_read_access *p_read) {
const PoolVector<Vector3>::Read *read = (const PoolVector<Vector3>::Read *)p_read;
return (const godot_vector3 *)read->ptr();
@@ -777,6 +802,10 @@ void GDAPI godot_pool_vector3_array_read_access_destroy(godot_pool_vector3_array
memdelete((PoolVector<Vector2>::Read *)p_read);
}
+godot_pool_color_array_read_access GDAPI *godot_pool_color_array_read_access_copy(const godot_pool_color_array_read_access *p_other) {
+ PoolVector<Color>::Read *other = (PoolVector<Color>::Read *)p_other;
+ return (godot_pool_color_array_read_access *)memnew(PoolVector<Color>::Read(*other));
+}
const godot_color GDAPI *godot_pool_color_array_read_access_ptr(const godot_pool_color_array_read_access *p_read) {
const PoolVector<Color>::Read *read = (const PoolVector<Color>::Read *)p_read;
return (const godot_color *)read->ptr();
@@ -794,6 +823,10 @@ void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_rea
// write accessor functions
//
+godot_pool_byte_array_write_access GDAPI *godot_pool_byte_array_write_access_copy(const godot_pool_byte_array_write_access *p_other) {
+ PoolVector<uint8_t>::Write *other = (PoolVector<uint8_t>::Write *)p_other;
+ return (godot_pool_byte_array_write_access *)memnew(PoolVector<uint8_t>::Write(*other));
+}
uint8_t GDAPI *godot_pool_byte_array_write_access_ptr(const godot_pool_byte_array_write_access *p_write) {
PoolVector<uint8_t>::Write *write = (PoolVector<uint8_t>::Write *)p_write;
return write->ptr();
@@ -807,6 +840,10 @@ void GDAPI godot_pool_byte_array_write_access_destroy(godot_pool_byte_array_writ
memdelete((PoolVector<uint8_t>::Write *)p_write);
}
+godot_pool_int_array_write_access GDAPI *godot_pool_int_array_write_access_copy(const godot_pool_int_array_write_access *p_other) {
+ PoolVector<godot_int>::Write *other = (PoolVector<godot_int>::Write *)p_other;
+ return (godot_pool_int_array_write_access *)memnew(PoolVector<godot_int>::Write(*other));
+}
godot_int GDAPI *godot_pool_int_array_write_access_ptr(const godot_pool_int_array_write_access *p_write) {
PoolVector<godot_int>::Write *write = (PoolVector<godot_int>::Write *)p_write;
return write->ptr();
@@ -820,6 +857,10 @@ void GDAPI godot_pool_int_array_write_access_destroy(godot_pool_int_array_write_
memdelete((PoolVector<godot_int>::Write *)p_write);
}
+godot_pool_real_array_write_access GDAPI *godot_pool_real_array_write_access_copy(const godot_pool_real_array_write_access *p_other) {
+ PoolVector<godot_real>::Write *other = (PoolVector<godot_real>::Write *)p_other;
+ return (godot_pool_real_array_write_access *)memnew(PoolVector<godot_real>::Write(*other));
+}
godot_real GDAPI *godot_pool_real_array_write_access_ptr(const godot_pool_real_array_write_access *p_write) {
PoolVector<godot_real>::Write *write = (PoolVector<godot_real>::Write *)p_write;
return write->ptr();
@@ -833,6 +874,10 @@ void GDAPI godot_pool_real_array_write_access_destroy(godot_pool_real_array_writ
memdelete((PoolVector<godot_real>::Write *)p_write);
}
+godot_pool_string_array_write_access GDAPI *godot_pool_string_array_write_access_copy(const godot_pool_string_array_write_access *p_other) {
+ PoolVector<String>::Write *other = (PoolVector<String>::Write *)p_other;
+ return (godot_pool_string_array_write_access *)memnew(PoolVector<String>::Write(*other));
+}
godot_string GDAPI *godot_pool_string_array_write_access_ptr(const godot_pool_string_array_write_access *p_write) {
PoolVector<String>::Write *write = (PoolVector<String>::Write *)p_write;
return (godot_string *)write->ptr();
@@ -846,6 +891,10 @@ void GDAPI godot_pool_string_array_write_access_destroy(godot_pool_string_array_
memdelete((PoolVector<String>::Write *)p_write);
}
+godot_pool_vector2_array_write_access GDAPI *godot_pool_vector2_array_write_access_copy(const godot_pool_vector2_array_write_access *p_other) {
+ PoolVector<Vector2>::Write *other = (PoolVector<Vector2>::Write *)p_other;
+ return (godot_pool_vector2_array_write_access *)memnew(PoolVector<Vector2>::Write(*other));
+}
godot_vector2 GDAPI *godot_pool_vector2_array_write_access_ptr(const godot_pool_vector2_array_write_access *p_write) {
PoolVector<Vector2>::Write *write = (PoolVector<Vector2>::Write *)p_write;
return (godot_vector2 *)write->ptr();
@@ -859,6 +908,10 @@ void GDAPI godot_pool_vector2_array_write_access_destroy(godot_pool_vector2_arra
memdelete((PoolVector<Vector2>::Write *)p_write);
}
+godot_pool_vector3_array_write_access GDAPI *godot_pool_vector3_array_write_access_copy(const godot_pool_vector3_array_write_access *p_other) {
+ PoolVector<Vector3>::Write *other = (PoolVector<Vector3>::Write *)p_other;
+ return (godot_pool_vector3_array_write_access *)memnew(PoolVector<Vector3>::Write(*other));
+}
godot_vector3 GDAPI *godot_pool_vector3_array_write_access_ptr(const godot_pool_vector3_array_write_access *p_write) {
PoolVector<Vector3>::Write *write = (PoolVector<Vector3>::Write *)p_write;
return (godot_vector3 *)write->ptr();
@@ -872,6 +925,10 @@ void GDAPI godot_pool_vector3_array_write_access_destroy(godot_pool_vector3_arra
memdelete((PoolVector<Vector3>::Write *)p_write);
}
+godot_pool_color_array_write_access GDAPI *godot_pool_color_array_write_access_copy(const godot_pool_color_array_write_access *p_other) {
+ PoolVector<Color>::Write *other = (PoolVector<Color>::Write *)p_other;
+ return (godot_pool_color_array_write_access *)memnew(PoolVector<Color>::Write(*other));
+}
godot_color GDAPI *godot_pool_color_array_write_access_ptr(const godot_pool_color_array_write_access *p_write) {
PoolVector<Color>::Write *write = (PoolVector<Color>::Write *)p_write;
return (godot_color *)write->ptr();
diff --git a/modules/gdnative/gdnative/quat.cpp b/modules/gdnative/gdnative/quat.cpp
index 2f577e485a..56ff7fe3a8 100644
--- a/modules/gdnative/gdnative/quat.cpp
+++ b/modules/gdnative/gdnative/quat.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/quat.h"
#include "core/math/quat.h"
diff --git a/modules/gdnative/gdnative/rect2.cpp b/modules/gdnative/gdnative/rect2.cpp
index c449a0d14c..83c58db520 100644
--- a/modules/gdnative/gdnative/rect2.cpp
+++ b/modules/gdnative/gdnative/rect2.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/rect2.h"
#include "core/math/math_2d.h"
diff --git a/modules/gdnative/gdnative/rid.cpp b/modules/gdnative/gdnative/rid.cpp
index fe04f1e92f..4374738f48 100644
--- a/modules/gdnative/gdnative/rid.cpp
+++ b/modules/gdnative/gdnative/rid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/rid.h"
#include "core/resource.h"
diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp
index a99adb3beb..7f5dbc12be 100644
--- a/modules/gdnative/gdnative/string.cpp
+++ b/modules/gdnative/gdnative/string.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/string.h"
#include "core/string_db.h"
@@ -39,6 +40,24 @@
extern "C" {
#endif
+godot_int GDAPI godot_char_string_length(const godot_char_string *p_cs) {
+ const CharString *cs = (const CharString *)p_cs;
+
+ return cs->length();
+}
+
+const char GDAPI *godot_char_string_get_data(const godot_char_string *p_cs) {
+ const CharString *cs = (const CharString *)p_cs;
+
+ return cs->get_data();
+}
+
+void GDAPI godot_char_string_destroy(godot_char_string *p_cs) {
+ CharString *cs = (CharString *)p_cs;
+
+ cs->~CharString();
+}
+
void GDAPI godot_string_new(godot_string *r_dest) {
String *dest = (String *)r_dest;
memnew_placement(dest, String);
@@ -50,35 +69,11 @@ void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src
memnew_placement(dest, String(*src));
}
-void GDAPI godot_string_new_data(godot_string *r_dest, const char *p_contents, const int p_size) {
- String *dest = (String *)r_dest;
- memnew_placement(dest, String(String::utf8(p_contents, p_size)));
-}
-
-void GDAPI godot_string_new_unicode_data(godot_string *r_dest, const wchar_t *p_contents, const int p_size) {
+void GDAPI godot_string_new_with_wide_string(godot_string *r_dest, const wchar_t *p_contents, const int p_size) {
String *dest = (String *)r_dest;
memnew_placement(dest, String(p_contents, p_size));
}
-void GDAPI godot_string_get_data(const godot_string *p_self, char *p_dest, int *p_size) {
- String *self = (String *)p_self;
-
- if (p_size) {
- // we have a length pointer, that means we either want to know
- // the length or want to write *p_size bytes into a buffer
-
- CharString utf8_string = self->utf8();
-
- int len = utf8_string.length();
-
- if (p_dest) {
- memcpy(p_dest, utf8_string.get_data(), *p_size);
- } else {
- *p_size = len;
- }
- }
-}
-
wchar_t GDAPI *godot_string_operator_index(godot_string *p_self, const godot_int p_idx) {
String *self = (String *)p_self;
return &(self->operator[](p_idx));
@@ -89,7 +84,7 @@ wchar_t GDAPI godot_string_operator_index_const(const godot_string *p_self, cons
return self->operator[](p_idx);
}
-const wchar_t GDAPI *godot_string_unicode_str(const godot_string *p_self) {
+const wchar_t GDAPI *godot_string_wide_str(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->c_str();
}
@@ -129,6 +124,26 @@ godot_int GDAPI godot_string_length(const godot_string *p_self) {
/* Helpers */
+signed char GDAPI godot_string_casecmp_to(const godot_string *p_self, const godot_string *p_str) {
+ const String *self = (const String *)p_self;
+ const String *str = (const String *)p_str;
+
+ return self->casecmp_to(*str);
+}
+
+signed char GDAPI godot_string_nocasecmp_to(const godot_string *p_self, const godot_string *p_str) {
+ const String *self = (const String *)p_self;
+ const String *str = (const String *)p_str;
+
+ return self->nocasecmp_to(*str);
+}
+signed char GDAPI godot_string_naturalnocasecmp_to(const godot_string *p_self, const godot_string *p_str) {
+ const String *self = (const String *)p_self;
+ const String *str = (const String *)p_str;
+
+ return self->naturalnocasecmp_to(*str);
+}
+
godot_bool GDAPI godot_string_begins_with(const godot_string *p_self, const godot_string *p_string) {
const String *self = (const String *)p_self;
const String *string = (const String *)p_string;
@@ -533,7 +548,7 @@ godot_string GDAPI godot_string_capitalize(const godot_string *p_self) {
memnew_placement(&result, String(self->capitalize()));
return result;
-};
+}
godot_string GDAPI godot_string_camelcase_to_underscore(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -541,7 +556,7 @@ godot_string GDAPI godot_string_camelcase_to_underscore(const godot_string *p_se
memnew_placement(&result, String(self->camelcase_to_underscore(false)));
return result;
-};
+}
godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -549,45 +564,45 @@ godot_string GDAPI godot_string_camelcase_to_underscore_lowercased(const godot_s
memnew_placement(&result, String(self->camelcase_to_underscore()));
return result;
-};
+}
double GDAPI godot_string_char_to_double(const char *p_what) {
return String::to_double(p_what);
-};
+}
godot_int GDAPI godot_string_char_to_int(const char *p_what) {
return String::to_int(p_what);
-};
+}
int64_t GDAPI godot_string_wchar_to_int(const wchar_t *p_str) {
return String::to_int(p_str);
-};
+}
godot_int GDAPI godot_string_char_to_int_with_len(const char *p_what, godot_int p_len) {
return String::to_int(p_what, p_len);
-};
+}
int64_t GDAPI godot_string_char_to_int64_with_len(const wchar_t *p_str, int p_len) {
return String::to_int(p_str, p_len);
-};
+}
int64_t GDAPI godot_string_hex_to_int64(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->hex_to_int64(false);
-};
+}
int64_t GDAPI godot_string_hex_to_int64_with_prefix(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->hex_to_int64();
-};
+}
int64_t GDAPI godot_string_to_int64(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->to_int64();
-};
+}
double GDAPI godot_string_unicode_char_to_double(const wchar_t *p_str, const wchar_t **r_end) {
return String::to_double(p_str, r_end);
@@ -600,7 +615,7 @@ godot_string GDAPI godot_string_get_slice(const godot_string *p_self, godot_stri
memnew_placement(&result, String(self->get_slice(*splitter, p_slice)));
return result;
-};
+}
godot_string GDAPI godot_string_get_slicec(const godot_string *p_self, wchar_t p_splitter, godot_int p_slice) {
const String *self = (const String *)p_self;
@@ -608,7 +623,7 @@ godot_string GDAPI godot_string_get_slicec(const godot_string *p_self, wchar_t p
memnew_placement(&result, String(self->get_slicec(p_splitter, p_slice)));
return result;
-};
+}
godot_array GDAPI godot_string_split(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -624,7 +639,7 @@ godot_array GDAPI godot_string_split(const godot_string *p_self, const godot_str
}
return result;
-};
+}
godot_array GDAPI godot_string_split_allow_empty(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -640,7 +655,7 @@ godot_array GDAPI godot_string_split_allow_empty(const godot_string *p_self, con
}
return result;
-};
+}
godot_array GDAPI godot_string_split_floats(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -656,7 +671,7 @@ godot_array GDAPI godot_string_split_floats(const godot_string *p_self, const go
}
return result;
-};
+}
godot_array GDAPI godot_string_split_floats_allows_empty(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -672,7 +687,7 @@ godot_array GDAPI godot_string_split_floats_allows_empty(const godot_string *p_s
}
return result;
-};
+}
godot_array GDAPI godot_string_split_floats_mk(const godot_string *p_self, const godot_array *p_splitters) {
const String *self = (const String *)p_self;
@@ -695,7 +710,7 @@ godot_array GDAPI godot_string_split_floats_mk(const godot_string *p_self, const
}
return result;
-};
+}
godot_array GDAPI godot_string_split_floats_mk_allows_empty(const godot_string *p_self, const godot_array *p_splitters) {
const String *self = (const String *)p_self;
@@ -718,7 +733,7 @@ godot_array GDAPI godot_string_split_floats_mk_allows_empty(const godot_string *
}
return result;
-};
+}
godot_array GDAPI godot_string_split_ints(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -734,7 +749,7 @@ godot_array GDAPI godot_string_split_ints(const godot_string *p_self, const godo
}
return result;
-};
+}
godot_array GDAPI godot_string_split_ints_allows_empty(const godot_string *p_self, const godot_string *p_splitter) {
const String *self = (const String *)p_self;
@@ -750,7 +765,7 @@ godot_array GDAPI godot_string_split_ints_allows_empty(const godot_string *p_sel
}
return result;
-};
+}
godot_array GDAPI godot_string_split_ints_mk(const godot_string *p_self, const godot_array *p_splitters) {
const String *self = (const String *)p_self;
@@ -773,7 +788,7 @@ godot_array GDAPI godot_string_split_ints_mk(const godot_string *p_self, const g
}
return result;
-};
+}
godot_array GDAPI godot_string_split_ints_mk_allows_empty(const godot_string *p_self, const godot_array *p_splitters) {
const String *self = (const String *)p_self;
@@ -796,7 +811,7 @@ godot_array GDAPI godot_string_split_ints_mk_allows_empty(const godot_string *p_
}
return result;
-};
+}
godot_array GDAPI godot_string_split_spaces(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -811,22 +826,22 @@ godot_array GDAPI godot_string_split_spaces(const godot_string *p_self) {
}
return result;
-};
+}
godot_int GDAPI godot_string_get_slice_count(const godot_string *p_self, godot_string p_splitter) {
const String *self = (const String *)p_self;
String *splitter = (String *)&p_splitter;
return self->get_slice_count(*splitter);
-};
+}
wchar_t GDAPI godot_string_char_lowercase(wchar_t p_char) {
return String::char_lowercase(p_char);
-};
+}
wchar_t GDAPI godot_string_char_uppercase(wchar_t p_char) {
return String::char_uppercase(p_char);
-};
+}
godot_string GDAPI godot_string_to_lower(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -834,7 +849,7 @@ godot_string GDAPI godot_string_to_lower(const godot_string *p_self) {
memnew_placement(&result, String(self->to_lower()));
return result;
-};
+}
godot_string GDAPI godot_string_to_upper(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -842,7 +857,7 @@ godot_string GDAPI godot_string_to_upper(const godot_string *p_self) {
memnew_placement(&result, String(self->to_upper()));
return result;
-};
+}
godot_string GDAPI godot_string_get_basename(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -850,7 +865,7 @@ godot_string GDAPI godot_string_get_basename(const godot_string *p_self) {
memnew_placement(&result, String(self->get_basename()));
return result;
-};
+}
godot_string GDAPI godot_string_get_extension(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -858,7 +873,7 @@ godot_string GDAPI godot_string_get_extension(const godot_string *p_self) {
memnew_placement(&result, String(self->get_extension()));
return result;
-};
+}
godot_string GDAPI godot_string_left(const godot_string *p_self, godot_int p_pos) {
const String *self = (const String *)p_self;
@@ -866,13 +881,13 @@ godot_string GDAPI godot_string_left(const godot_string *p_self, godot_int p_pos
memnew_placement(&result, String(self->left(p_pos)));
return result;
-};
+}
wchar_t GDAPI godot_string_ord_at(const godot_string *p_self, godot_int p_idx) {
const String *self = (const String *)p_self;
return self->ord_at(p_idx);
-};
+}
godot_string GDAPI godot_string_plus_file(const godot_string *p_self, const godot_string *p_file) {
const String *self = (const String *)p_self;
@@ -881,7 +896,7 @@ godot_string GDAPI godot_string_plus_file(const godot_string *p_self, const godo
memnew_placement(&result, String(self->plus_file(*file)));
return result;
-};
+}
godot_string GDAPI godot_string_right(const godot_string *p_self, godot_int p_pos) {
const String *self = (const String *)p_self;
@@ -889,7 +904,7 @@ godot_string GDAPI godot_string_right(const godot_string *p_self, godot_int p_po
memnew_placement(&result, String(self->right(p_pos)));
return result;
-};
+}
godot_string GDAPI godot_string_strip_edges(const godot_string *p_self, godot_bool p_left, godot_bool p_right) {
const String *self = (const String *)p_self;
@@ -897,7 +912,7 @@ godot_string GDAPI godot_string_strip_edges(const godot_string *p_self, godot_bo
memnew_placement(&result, String(self->strip_edges(p_left, p_right)));
return result;
-};
+}
godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -905,94 +920,96 @@ godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self) {
memnew_placement(&result, String(self->strip_escapes()));
return result;
-};
+}
void GDAPI godot_string_erase(godot_string *p_self, godot_int p_pos, godot_int p_chars) {
String *self = (String *)p_self;
return self->erase(p_pos, p_chars);
-};
+}
-void GDAPI godot_string_ascii(godot_string *p_self, char *result) {
- String *self = (String *)p_self;
- Vector<char> return_value = self->ascii();
+godot_char_string GDAPI godot_string_ascii(const godot_string *p_self) {
+ const String *self = (const String *)p_self;
+ godot_char_string result;
- for (int i = 0; i < return_value.size(); i++) {
- result[i] = return_value[i];
- }
+ memnew_placement(&result, CharString(self->ascii()));
+
+ return result;
}
-void GDAPI godot_string_ascii_extended(godot_string *p_self, char *result) {
- String *self = (String *)p_self;
- Vector<char> return_value = self->ascii(true);
+godot_char_string GDAPI godot_string_ascii_extended(const godot_string *p_self) {
+ const String *self = (const String *)p_self;
- for (int i = 0; i < return_value.size(); i++) {
- result[i] = return_value[i];
- }
+ godot_char_string result;
+
+ memnew_placement(&result, CharString(self->ascii(true)));
+
+ return result;
}
-void GDAPI godot_string_utf8(godot_string *p_self, char *result) {
- String *self = (String *)p_self;
- Vector<char> return_value = self->utf8();
+godot_char_string GDAPI godot_string_utf8(const godot_string *p_self) {
+ const String *self = (const String *)p_self;
- for (int i = 0; i < return_value.size(); i++) {
- result[i] = return_value[i];
- }
+ godot_char_string result;
+
+ memnew_placement(&result, CharString(self->utf8()));
+
+ return result;
}
godot_bool GDAPI godot_string_parse_utf8(godot_string *p_self, const char *p_utf8) {
String *self = (String *)p_self;
return self->parse_utf8(p_utf8);
-};
+}
godot_bool GDAPI godot_string_parse_utf8_with_len(godot_string *p_self, const char *p_utf8, godot_int p_len) {
String *self = (String *)p_self;
return self->parse_utf8(p_utf8, p_len);
-};
+}
godot_string GDAPI godot_string_chars_to_utf8(const char *p_utf8) {
godot_string result;
memnew_placement(&result, String(String::utf8(p_utf8)));
return result;
-};
+}
godot_string GDAPI godot_string_chars_to_utf8_with_len(const char *p_utf8, godot_int p_len) {
godot_string result;
memnew_placement(&result, String(String::utf8(p_utf8, p_len)));
return result;
-};
+}
uint32_t GDAPI godot_string_hash(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->hash();
-};
+}
uint64_t GDAPI godot_string_hash64(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->hash64();
-};
+}
uint32_t GDAPI godot_string_hash_chars(const char *p_cstr) {
return String::hash(p_cstr);
-};
+}
uint32_t GDAPI godot_string_hash_chars_with_len(const char *p_cstr, godot_int p_len) {
return String::hash(p_cstr, p_len);
-};
+}
uint32_t GDAPI godot_string_hash_utf8_chars(const wchar_t *p_str) {
return String::hash(p_str);
-};
+}
uint32_t GDAPI godot_string_hash_utf8_chars_with_len(const wchar_t *p_str, godot_int p_len) {
return String::hash(p_str, p_len);
-};
+}
godot_pool_byte_array GDAPI godot_string_md5_buffer(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1009,7 +1026,7 @@ godot_pool_byte_array GDAPI godot_string_md5_buffer(const godot_string *p_self)
}
return result;
-};
+}
godot_string GDAPI godot_string_md5_text(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1017,7 +1034,7 @@ godot_string GDAPI godot_string_md5_text(const godot_string *p_self) {
memnew_placement(&result, String(self->md5_text()));
return result;
-};
+}
godot_pool_byte_array GDAPI godot_string_sha256_buffer(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1034,7 +1051,7 @@ godot_pool_byte_array GDAPI godot_string_sha256_buffer(const godot_string *p_sel
}
return result;
-};
+}
godot_string GDAPI godot_string_sha256_text(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1042,13 +1059,13 @@ godot_string GDAPI godot_string_sha256_text(const godot_string *p_self) {
memnew_placement(&result, String(self->sha256_text()));
return result;
-};
+}
godot_bool godot_string_empty(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->empty();
-};
+}
// path functions
godot_string GDAPI godot_string_get_base_dir(const godot_string *p_self) {
@@ -1058,7 +1075,7 @@ godot_string GDAPI godot_string_get_base_dir(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_get_file(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1067,7 +1084,7 @@ godot_string GDAPI godot_string_get_file(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_humanize_size(size_t p_size) {
godot_string result;
@@ -1075,25 +1092,25 @@ godot_string GDAPI godot_string_humanize_size(size_t p_size) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_bool GDAPI godot_string_is_abs_path(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_abs_path();
-};
+}
godot_bool GDAPI godot_string_is_rel_path(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_rel_path();
-};
+}
godot_bool GDAPI godot_string_is_resource_file(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_resource_file();
-};
+}
godot_string GDAPI godot_string_path_to(const godot_string *p_self, const godot_string *p_path) {
const String *self = (const String *)p_self;
@@ -1103,7 +1120,7 @@ godot_string GDAPI godot_string_path_to(const godot_string *p_self, const godot_
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_path_to_file(const godot_string *p_self, const godot_string *p_path) {
const String *self = (const String *)p_self;
@@ -1113,7 +1130,7 @@ godot_string GDAPI godot_string_path_to_file(const godot_string *p_self, const g
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_simplify_path(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1122,7 +1139,7 @@ godot_string GDAPI godot_string_simplify_path(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_c_escape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1131,7 +1148,7 @@ godot_string GDAPI godot_string_c_escape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_c_escape_multiline(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1140,7 +1157,7 @@ godot_string GDAPI godot_string_c_escape_multiline(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_c_unescape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1149,7 +1166,7 @@ godot_string GDAPI godot_string_c_unescape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_http_escape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1158,7 +1175,7 @@ godot_string GDAPI godot_string_http_escape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_http_unescape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1167,7 +1184,7 @@ godot_string GDAPI godot_string_http_unescape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_json_escape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1176,7 +1193,7 @@ godot_string GDAPI godot_string_json_escape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_word_wrap(const godot_string *p_self, godot_int p_chars_per_line) {
const String *self = (const String *)p_self;
@@ -1185,7 +1202,7 @@ godot_string GDAPI godot_string_word_wrap(const godot_string *p_self, godot_int
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_xml_escape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1194,7 +1211,7 @@ godot_string GDAPI godot_string_xml_escape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_xml_escape_with_quotes(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1203,7 +1220,7 @@ godot_string GDAPI godot_string_xml_escape_with_quotes(const godot_string *p_sel
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_xml_unescape(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1212,7 +1229,7 @@ godot_string GDAPI godot_string_xml_unescape(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_percent_decode(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1221,7 +1238,7 @@ godot_string GDAPI godot_string_percent_decode(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_string GDAPI godot_string_percent_encode(const godot_string *p_self) {
const String *self = (const String *)p_self;
@@ -1230,43 +1247,43 @@ godot_string GDAPI godot_string_percent_encode(const godot_string *p_self) {
memnew_placement(&result, String(return_value));
return result;
-};
+}
godot_bool GDAPI godot_string_is_valid_float(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_valid_float();
-};
+}
godot_bool GDAPI godot_string_is_valid_hex_number(const godot_string *p_self, godot_bool p_with_prefix) {
const String *self = (const String *)p_self;
return self->is_valid_hex_number(p_with_prefix);
-};
+}
godot_bool GDAPI godot_string_is_valid_html_color(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_valid_html_color();
-};
+}
godot_bool GDAPI godot_string_is_valid_identifier(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_valid_identifier();
-};
+}
godot_bool GDAPI godot_string_is_valid_integer(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_valid_integer();
-};
+}
godot_bool GDAPI godot_string_is_valid_ip_address(const godot_string *p_self) {
const String *self = (const String *)p_self;
return self->is_valid_ip_address();
-};
+}
#ifdef __cplusplus
}
diff --git a/modules/gdnative/gdnative/string_name.cpp b/modules/gdnative/gdnative/string_name.cpp
index 86067df433..b2a86b843c 100644
--- a/modules/gdnative/gdnative/string_name.cpp
+++ b/modules/gdnative/gdnative/string_name.cpp
@@ -1,9 +1,9 @@
/*************************************************************************/
-/* string_name.cpp */
+/* string_name.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/string_name.h"
#include "core/string_db.h"
diff --git a/modules/gdnative/gdnative/transform.cpp b/modules/gdnative/gdnative/transform.cpp
index 4b6589a209..715f2e3c08 100644
--- a/modules/gdnative/gdnative/transform.cpp
+++ b/modules/gdnative/gdnative/transform.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/transform.h"
#include "core/math/transform.h"
@@ -62,7 +63,7 @@ godot_basis GDAPI godot_transform_get_basis(const godot_transform *p_self) {
return dest;
}
-void GDAPI godot_transform_set_basis(godot_transform *p_self, godot_basis *p_v) {
+void GDAPI godot_transform_set_basis(godot_transform *p_self, const godot_basis *p_v) {
Transform *self = (Transform *)p_self;
const Basis *v = (const Basis *)p_v;
self->basis = *v;
@@ -75,7 +76,7 @@ godot_vector3 GDAPI godot_transform_get_origin(const godot_transform *p_self) {
return dest;
}
-void GDAPI godot_transform_set_origin(godot_transform *p_self, godot_vector3 *p_v) {
+void GDAPI godot_transform_set_origin(godot_transform *p_self, const godot_vector3 *p_v) {
Transform *self = (Transform *)p_self;
const Vector3 *v = (const Vector3 *)p_v;
self->origin = *v;
diff --git a/modules/gdnative/gdnative/transform2d.cpp b/modules/gdnative/gdnative/transform2d.cpp
index 0ff5420f4f..c69607a18a 100644
--- a/modules/gdnative/gdnative/transform2d.cpp
+++ b/modules/gdnative/gdnative/transform2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/transform2d.h"
#include "core/math/math_2d.h"
diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp
index 6447641096..423f3312e1 100644
--- a/modules/gdnative/gdnative/variant.cpp
+++ b/modules/gdnative/gdnative/variant.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/variant.h"
#include "core/reference.h"
diff --git a/modules/gdnative/gdnative/vector2.cpp b/modules/gdnative/gdnative/vector2.cpp
index aadce281b3..9e40b42373 100644
--- a/modules/gdnative/gdnative/vector2.cpp
+++ b/modules/gdnative/gdnative/vector2.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/vector2.h"
#include "core/math/math_2d.h"
diff --git a/modules/gdnative/gdnative/vector3.cpp b/modules/gdnative/gdnative/vector3.cpp
index 4de9889c23..a7e18fa22b 100644
--- a/modules/gdnative/gdnative/vector3.cpp
+++ b/modules/gdnative/gdnative/vector3.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdnative/vector3.h"
#include "core/variant.h"
diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json
index 06c6e9f410..59a9c0b090 100644
--- a/modules/gdnative/gdnative_api.json
+++ b/modules/gdnative/gdnative_api.json
@@ -2090,6 +2090,13 @@
]
},
{
+ "name": "godot_pool_byte_array_read_access_copy",
+ "return_type": "godot_pool_byte_array_read_access *",
+ "arguments": [
+ ["const godot_pool_byte_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_byte_array_read_access_ptr",
"return_type": "const uint8_t *",
"arguments": [
@@ -2112,6 +2119,13 @@
]
},
{
+ "name": "godot_pool_int_array_read_access_copy",
+ "return_type": "godot_pool_int_array_read_access *",
+ "arguments": [
+ ["const godot_pool_int_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_int_array_read_access_ptr",
"return_type": "const godot_int *",
"arguments": [
@@ -2134,6 +2148,13 @@
]
},
{
+ "name": "godot_pool_real_array_read_access_copy",
+ "return_type": "godot_pool_real_array_read_access *",
+ "arguments": [
+ ["const godot_pool_real_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_real_array_read_access_ptr",
"return_type": "const godot_real *",
"arguments": [
@@ -2156,6 +2177,13 @@
]
},
{
+ "name": "godot_pool_string_array_read_access_copy",
+ "return_type": "godot_pool_string_array_read_access *",
+ "arguments": [
+ ["const godot_pool_string_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_string_array_read_access_ptr",
"return_type": "const godot_string *",
"arguments": [
@@ -2178,6 +2206,13 @@
]
},
{
+ "name": "godot_pool_vector2_array_read_access_copy",
+ "return_type": "godot_pool_vector2_array_read_access *",
+ "arguments": [
+ ["const godot_pool_vector2_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_vector2_array_read_access_ptr",
"return_type": "const godot_vector2 *",
"arguments": [
@@ -2200,6 +2235,13 @@
]
},
{
+ "name": "godot_pool_vector3_array_read_access_copy",
+ "return_type": "godot_pool_vector3_array_read_access *",
+ "arguments": [
+ ["const godot_pool_vector3_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_vector3_array_read_access_ptr",
"return_type": "const godot_vector3 *",
"arguments": [
@@ -2222,6 +2264,13 @@
]
},
{
+ "name": "godot_pool_color_array_read_access_copy",
+ "return_type": "godot_pool_color_array_read_access *",
+ "arguments": [
+ ["const godot_pool_color_array_read_access *", "p_read"]
+ ]
+ },
+ {
"name": "godot_pool_color_array_read_access_ptr",
"return_type": "const godot_color *",
"arguments": [
@@ -2244,6 +2293,13 @@
]
},
{
+ "name": "godot_pool_byte_array_write_access_copy",
+ "return_type": "godot_pool_byte_array_write_access *",
+ "arguments": [
+ ["const godot_pool_byte_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_byte_array_write_access_ptr",
"return_type": "uint8_t *",
"arguments": [
@@ -2266,6 +2322,13 @@
]
},
{
+ "name": "godot_pool_int_array_write_access_copy",
+ "return_type": "godot_pool_int_array_write_access *",
+ "arguments": [
+ ["const godot_pool_int_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_int_array_write_access_ptr",
"return_type": "godot_int *",
"arguments": [
@@ -2288,6 +2351,13 @@
]
},
{
+ "name": "godot_pool_real_array_write_access_copy",
+ "return_type": "godot_pool_real_array_write_access *",
+ "arguments": [
+ ["const godot_pool_real_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_real_array_write_access_ptr",
"return_type": "godot_real *",
"arguments": [
@@ -2310,6 +2380,13 @@
]
},
{
+ "name": "godot_pool_string_array_write_access_copy",
+ "return_type": "godot_pool_string_array_write_access *",
+ "arguments": [
+ ["const godot_pool_string_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_string_array_write_access_ptr",
"return_type": "godot_string *",
"arguments": [
@@ -2332,6 +2409,13 @@
]
},
{
+ "name": "godot_pool_vector2_array_write_access_copy",
+ "return_type": "godot_pool_vector2_array_write_access *",
+ "arguments": [
+ ["const godot_pool_vector2_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_vector2_array_write_access_ptr",
"return_type": "godot_vector2 *",
"arguments": [
@@ -2354,6 +2438,13 @@
]
},
{
+ "name": "godot_pool_vector3_array_write_access_copy",
+ "return_type": "godot_pool_vector3_array_write_access *",
+ "arguments": [
+ ["const godot_pool_vector3_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_vector3_array_write_access_ptr",
"return_type": "godot_vector3 *",
"arguments": [
@@ -2376,6 +2467,13 @@
]
},
{
+ "name": "godot_pool_color_array_write_access_copy",
+ "return_type": "godot_pool_color_array_write_access *",
+ "arguments": [
+ ["const godot_pool_color_array_write_access *", "p_write"]
+ ]
+ },
+ {
"name": "godot_pool_color_array_write_access_ptr",
"return_type": "godot_color *",
"arguments": [
@@ -3516,7 +3614,7 @@
"return_type": "void",
"arguments": [
["godot_transform *", "p_self"],
- ["godot_basis *", "p_v"]
+ ["const godot_basis *", "p_v"]
]
},
{
@@ -3531,7 +3629,7 @@
"return_type": "void",
"arguments": [
["godot_transform *", "p_self"],
- ["godot_vector3 *", "p_v"]
+ ["const godot_vector3 *", "p_v"]
]
},
{
@@ -4324,45 +4422,48 @@
]
},
{
- "name": "godot_string_new",
- "return_type": "void",
+ "name": "godot_char_string_length",
+ "return_type": "godot_int",
"arguments": [
- ["godot_string *", "r_dest"]
+ ["const godot_char_string *", "p_cs"]
]
},
{
- "name": "godot_string_new_copy",
+ "name": "godot_char_string_get_data",
+ "return_type": "const char *",
+ "arguments": [
+ ["const godot_char_string *", "p_cs"]
+ ]
+ },
+ {
+ "name": "godot_char_string_destroy",
"return_type": "void",
"arguments": [
- ["godot_string *", "r_dest"],
- ["const godot_string *", "p_src"]
+ ["godot_char_string *", "p_cs"]
]
},
{
- "name": "godot_string_new_data",
+ "name": "godot_string_new",
"return_type": "void",
"arguments": [
- ["godot_string *", "r_dest"],
- ["const char *", "p_contents"],
- ["const int", "p_size"]
+ ["godot_string *", "r_dest"]
]
},
{
- "name": "godot_string_new_unicode_data",
+ "name": "godot_string_new_copy",
"return_type": "void",
"arguments": [
["godot_string *", "r_dest"],
- ["const wchar_t *", "p_contents"],
- ["const int", "p_size"]
+ ["const godot_string *", "p_src"]
]
},
{
- "name": "godot_string_get_data",
+ "name": "godot_string_new_with_wide_string",
"return_type": "void",
"arguments": [
- ["const godot_string *", "p_self"],
- ["char *", "p_dest"],
- ["int *", "p_size"]
+ ["godot_string *", "r_dest"],
+ ["const wchar_t *", "p_contents"],
+ ["const int", "p_size"]
]
},
{
@@ -4382,7 +4483,7 @@
]
},
{
- "name": "godot_string_unicode_str",
+ "name": "godot_string_wide_str",
"return_type": "const wchar_t *",
"arguments": [
["const godot_string *", "p_self"]
@@ -4420,6 +4521,30 @@
]
},
{
+ "name": "godot_string_casecmp_to",
+ "return_type": "signed char",
+ "arguments": [
+ ["const godot_string *", "p_self"],
+ ["const godot_string *", "p_str"]
+ ]
+ },
+ {
+ "name": "godot_string_nocasecmp_to",
+ "return_type": "signed char",
+ "arguments": [
+ ["const godot_string *", "p_self"],
+ ["const godot_string *", "p_str"]
+ ]
+ },
+ {
+ "name": "godot_string_naturalnocasecmp_to",
+ "return_type": "signed char",
+ "arguments": [
+ ["const godot_string *", "p_self"],
+ ["const godot_string *", "p_str"]
+ ]
+ },
+ {
"name": "godot_string_begins_with",
"return_type": "godot_bool",
"arguments": [
@@ -5125,26 +5250,23 @@
},
{
"name": "godot_string_ascii",
- "return_type": "void",
+ "return_type": "godot_char_string",
"arguments": [
- ["godot_string *", "p_self"],
- ["char *", "result"]
+ ["const godot_string *", "p_self"]
]
},
{
"name": "godot_string_ascii_extended",
- "return_type": "void",
+ "return_type": "godot_char_string",
"arguments": [
- ["godot_string *", "p_self"],
- ["char *", "result"]
+ ["const godot_string *", "p_self"]
]
},
{
"name": "godot_string_utf8",
- "return_type": "void",
+ "return_type": "godot_char_string",
"arguments": [
- ["godot_string *", "p_self"],
- ["char *", "result"]
+ ["const godot_string *", "p_self"]
]
},
{
diff --git a/modules/gdnative/gdnative_library_editor_plugin.cpp b/modules/gdnative/gdnative_library_editor_plugin.cpp
index b2ca640cb0..6424b66d1e 100644
--- a/modules/gdnative/gdnative_library_editor_plugin.cpp
+++ b/modules/gdnative/gdnative_library_editor_plugin.cpp
@@ -299,8 +299,8 @@ GDNativeLibraryEditor::GDNativeLibraryEditor() {
NativePlatformConfig platform_uwp;
platform_uwp.name = "Windows Universal";
platform_uwp.entries.push_back("arm");
- platform_uwp.entries.push_back("x86");
- platform_uwp.entries.push_back("x64");
+ platform_uwp.entries.push_back("32");
+ platform_uwp.entries.push_back("64");
platform_uwp.library_extension = "*.dll";
platforms["UWP"] = platform_uwp;
diff --git a/modules/gdnative/gdnative_library_editor_plugin.h b/modules/gdnative/gdnative_library_editor_plugin.h
index 2b635d0937..94bc2adc7d 100644
--- a/modules/gdnative/gdnative_library_editor_plugin.h
+++ b/modules/gdnative/gdnative_library_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDNATIVE_LIBRARY_EDITOR_PLUGIN_H
#define GDNATIVE_LIBRARY_EDITOR_PLUGIN_H
diff --git a/modules/gdnative/gdnative_library_singleton_editor.cpp b/modules/gdnative/gdnative_library_singleton_editor.cpp
index 4c0049f90d..0aafb95e2e 100644
--- a/modules/gdnative/gdnative_library_singleton_editor.cpp
+++ b/modules/gdnative/gdnative_library_singleton_editor.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* gdnative_library_singleton_editor.cpp */
+/* gdnative_library_singleton_editor.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef TOOLS_ENABLED
#include "gdnative_library_singleton_editor.h"
#include "gdnative.h"
diff --git a/modules/gdnative/gdnative_library_singleton_editor.h b/modules/gdnative/gdnative_library_singleton_editor.h
index d00ddc9211..d3b5ba3846 100644
--- a/modules/gdnative/gdnative_library_singleton_editor.h
+++ b/modules/gdnative/gdnative_library_singleton_editor.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* gdnative_library_singleton_editor.h */
+/* gdnative_library_singleton_editor.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_NATIVE_LIBRARY_EDITOR_H
#define GD_NATIVE_LIBRARY_EDITOR_H
diff --git a/modules/gdnative/include/arvr/godot_arvr.h b/modules/gdnative/include/arvr/godot_arvr.h
index fc4626c967..b9aedc0bef 100644
--- a/modules/gdnative/include/arvr/godot_arvr.h
+++ b/modules/gdnative/include/arvr/godot_arvr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_NATIVEARVR_H
#define GODOT_NATIVEARVR_H
diff --git a/modules/gdnative/include/gdnative/aabb.h b/modules/gdnative/include/gdnative/aabb.h
index a40061ce2e..dca5d4bb14 100644
--- a/modules/gdnative/include/gdnative/aabb.h
+++ b/modules/gdnative/include/gdnative/aabb.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* aabb.h */
+/* aabb.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_AABB_H
#define GODOT_AABB_H
diff --git a/modules/gdnative/include/gdnative/basis.h b/modules/gdnative/include/gdnative/basis.h
index ce9ac590d9..53e950b4a2 100644
--- a/modules/gdnative/include/gdnative/basis.h
+++ b/modules/gdnative/include/gdnative/basis.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_BASIS_H
#define GODOT_BASIS_H
diff --git a/modules/gdnative/include/gdnative/color.h b/modules/gdnative/include/gdnative/color.h
index 14086c1155..1f0ac8354d 100644
--- a/modules/gdnative/include/gdnative/color.h
+++ b/modules/gdnative/include/gdnative/color.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_COLOR_H
#define GODOT_COLOR_H
diff --git a/modules/gdnative/include/gdnative/dictionary.h b/modules/gdnative/include/gdnative/dictionary.h
index 07ffb3346b..a86d60dc72 100644
--- a/modules/gdnative/include/gdnative/dictionary.h
+++ b/modules/gdnative/include/gdnative/dictionary.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_DICTIONARY_H
#define GODOT_DICTIONARY_H
diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h
index d066df8046..4cf6e99b06 100644
--- a/modules/gdnative/include/gdnative/gdnative.h
+++ b/modules/gdnative/include/gdnative/gdnative.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_GDNATIVE_H
#define GODOT_GDNATIVE_H
@@ -69,7 +70,7 @@ typedef enum {
GODOT_OK,
GODOT_FAILED, ///< Generic fail error
GODOT_ERR_UNAVAILABLE, ///< What is requested is unsupported/unavailable
- GODOT_ERR_UNCONFIGURED, ///< The object being used hasnt been properly set up yet
+ GODOT_ERR_UNCONFIGURED, ///< The object being used hasn't been properly set up yet
GODOT_ERR_UNAUTHORIZED, ///< Missing credentials for requested resource
GODOT_ERR_PARAMETER_RANGE_ERROR, ///< Parameter given out of range (5)
GODOT_ERR_OUT_OF_MEMORY, ///< Out of memory
diff --git a/modules/gdnative/include/gdnative/node_path.h b/modules/gdnative/include/gdnative/node_path.h
index e58c332cdf..2b55e01d13 100644
--- a/modules/gdnative/include/gdnative/node_path.h
+++ b/modules/gdnative/include/gdnative/node_path.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_NODE_PATH_H
#define GODOT_NODE_PATH_H
diff --git a/modules/gdnative/include/gdnative/plane.h b/modules/gdnative/include/gdnative/plane.h
index d40a76374f..6c8a6ae1a4 100644
--- a/modules/gdnative/include/gdnative/plane.h
+++ b/modules/gdnative/include/gdnative/plane.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_PLANE_H
#define GODOT_PLANE_H
diff --git a/modules/gdnative/include/gdnative/pool_arrays.h b/modules/gdnative/include/gdnative/pool_arrays.h
index f91bd4694b..1210039e34 100644
--- a/modules/gdnative/include/gdnative/pool_arrays.h
+++ b/modules/gdnative/include/gdnative/pool_arrays.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_POOL_ARRAYS_H
#define GODOT_POOL_ARRAYS_H
@@ -382,30 +383,37 @@ void GDAPI godot_pool_color_array_destroy(godot_pool_color_array *p_self);
// read accessor functions
//
+godot_pool_byte_array_read_access GDAPI *godot_pool_byte_array_read_access_copy(const godot_pool_byte_array_read_access *p_other);
const uint8_t GDAPI *godot_pool_byte_array_read_access_ptr(const godot_pool_byte_array_read_access *p_read);
void GDAPI godot_pool_byte_array_read_access_operator_assign(godot_pool_byte_array_read_access *p_read, godot_pool_byte_array_read_access *p_other);
void GDAPI godot_pool_byte_array_read_access_destroy(godot_pool_byte_array_read_access *p_read);
+godot_pool_int_array_read_access GDAPI *godot_pool_int_array_read_access_copy(const godot_pool_int_array_read_access *p_other);
const godot_int GDAPI *godot_pool_int_array_read_access_ptr(const godot_pool_int_array_read_access *p_read);
void GDAPI godot_pool_int_array_read_access_operator_assign(godot_pool_int_array_read_access *p_read, godot_pool_int_array_read_access *p_other);
void GDAPI godot_pool_int_array_read_access_destroy(godot_pool_int_array_read_access *p_read);
+godot_pool_real_array_read_access GDAPI *godot_pool_real_array_read_access_copy(const godot_pool_real_array_read_access *p_other);
const godot_real GDAPI *godot_pool_real_array_read_access_ptr(const godot_pool_real_array_read_access *p_read);
void GDAPI godot_pool_real_array_read_access_operator_assign(godot_pool_real_array_read_access *p_read, godot_pool_real_array_read_access *p_other);
void GDAPI godot_pool_real_array_read_access_destroy(godot_pool_real_array_read_access *p_read);
+godot_pool_string_array_read_access GDAPI *godot_pool_string_array_read_access_copy(const godot_pool_string_array_read_access *p_other);
const godot_string GDAPI *godot_pool_string_array_read_access_ptr(const godot_pool_string_array_read_access *p_read);
void GDAPI godot_pool_string_array_read_access_operator_assign(godot_pool_string_array_read_access *p_read, godot_pool_string_array_read_access *p_other);
void GDAPI godot_pool_string_array_read_access_destroy(godot_pool_string_array_read_access *p_read);
+godot_pool_vector2_array_read_access GDAPI *godot_pool_vector2_array_read_access_copy(const godot_pool_vector2_array_read_access *p_other);
const godot_vector2 GDAPI *godot_pool_vector2_array_read_access_ptr(const godot_pool_vector2_array_read_access *p_read);
void GDAPI godot_pool_vector2_array_read_access_operator_assign(godot_pool_vector2_array_read_access *p_read, godot_pool_vector2_array_read_access *p_other);
void GDAPI godot_pool_vector2_array_read_access_destroy(godot_pool_vector2_array_read_access *p_read);
+godot_pool_vector3_array_read_access GDAPI *godot_pool_vector3_array_read_access_copy(const godot_pool_vector3_array_read_access *p_other);
const godot_vector3 GDAPI *godot_pool_vector3_array_read_access_ptr(const godot_pool_vector3_array_read_access *p_read);
void GDAPI godot_pool_vector3_array_read_access_operator_assign(godot_pool_vector3_array_read_access *p_read, godot_pool_vector3_array_read_access *p_other);
void GDAPI godot_pool_vector3_array_read_access_destroy(godot_pool_vector3_array_read_access *p_read);
+godot_pool_color_array_read_access GDAPI *godot_pool_color_array_read_access_copy(const godot_pool_color_array_read_access *p_other);
const godot_color GDAPI *godot_pool_color_array_read_access_ptr(const godot_pool_color_array_read_access *p_read);
void GDAPI godot_pool_color_array_read_access_operator_assign(godot_pool_color_array_read_access *p_read, godot_pool_color_array_read_access *p_other);
void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_read_access *p_read);
@@ -414,30 +422,37 @@ void GDAPI godot_pool_color_array_read_access_destroy(godot_pool_color_array_rea
// write accessor functions
//
+godot_pool_byte_array_write_access GDAPI *godot_pool_byte_array_write_access_copy(const godot_pool_byte_array_write_access *p_other);
uint8_t GDAPI *godot_pool_byte_array_write_access_ptr(const godot_pool_byte_array_write_access *p_write);
void GDAPI godot_pool_byte_array_write_access_operator_assign(godot_pool_byte_array_write_access *p_write, godot_pool_byte_array_write_access *p_other);
void GDAPI godot_pool_byte_array_write_access_destroy(godot_pool_byte_array_write_access *p_write);
+godot_pool_int_array_write_access GDAPI *godot_pool_int_array_write_access_copy(const godot_pool_int_array_write_access *p_other);
godot_int GDAPI *godot_pool_int_array_write_access_ptr(const godot_pool_int_array_write_access *p_write);
void GDAPI godot_pool_int_array_write_access_operator_assign(godot_pool_int_array_write_access *p_write, godot_pool_int_array_write_access *p_other);
void GDAPI godot_pool_int_array_write_access_destroy(godot_pool_int_array_write_access *p_write);
+godot_pool_real_array_write_access GDAPI *godot_pool_real_array_write_access_copy(const godot_pool_real_array_write_access *p_other);
godot_real GDAPI *godot_pool_real_array_write_access_ptr(const godot_pool_real_array_write_access *p_write);
void GDAPI godot_pool_real_array_write_access_operator_assign(godot_pool_real_array_write_access *p_write, godot_pool_real_array_write_access *p_other);
void GDAPI godot_pool_real_array_write_access_destroy(godot_pool_real_array_write_access *p_write);
+godot_pool_string_array_write_access GDAPI *godot_pool_string_array_write_access_copy(const godot_pool_string_array_write_access *p_other);
godot_string GDAPI *godot_pool_string_array_write_access_ptr(const godot_pool_string_array_write_access *p_write);
void GDAPI godot_pool_string_array_write_access_operator_assign(godot_pool_string_array_write_access *p_write, godot_pool_string_array_write_access *p_other);
void GDAPI godot_pool_string_array_write_access_destroy(godot_pool_string_array_write_access *p_write);
+godot_pool_vector2_array_write_access GDAPI *godot_pool_vector2_array_write_access_copy(const godot_pool_vector2_array_write_access *p_other);
godot_vector2 GDAPI *godot_pool_vector2_array_write_access_ptr(const godot_pool_vector2_array_write_access *p_write);
void GDAPI godot_pool_vector2_array_write_access_operator_assign(godot_pool_vector2_array_write_access *p_write, godot_pool_vector2_array_write_access *p_other);
void GDAPI godot_pool_vector2_array_write_access_destroy(godot_pool_vector2_array_write_access *p_write);
+godot_pool_vector3_array_write_access GDAPI *godot_pool_vector3_array_write_access_copy(const godot_pool_vector3_array_write_access *p_other);
godot_vector3 GDAPI *godot_pool_vector3_array_write_access_ptr(const godot_pool_vector3_array_write_access *p_write);
void GDAPI godot_pool_vector3_array_write_access_operator_assign(godot_pool_vector3_array_write_access *p_write, godot_pool_vector3_array_write_access *p_other);
void GDAPI godot_pool_vector3_array_write_access_destroy(godot_pool_vector3_array_write_access *p_write);
+godot_pool_color_array_write_access GDAPI *godot_pool_color_array_write_access_copy(const godot_pool_color_array_write_access *p_other);
godot_color GDAPI *godot_pool_color_array_write_access_ptr(const godot_pool_color_array_write_access *p_write);
void GDAPI godot_pool_color_array_write_access_operator_assign(godot_pool_color_array_write_access *p_write, godot_pool_color_array_write_access *p_other);
void GDAPI godot_pool_color_array_write_access_destroy(godot_pool_color_array_write_access *p_write);
diff --git a/modules/gdnative/include/gdnative/quat.h b/modules/gdnative/include/gdnative/quat.h
index 3696a303df..4e86960aaf 100644
--- a/modules/gdnative/include/gdnative/quat.h
+++ b/modules/gdnative/include/gdnative/quat.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_QUAT_H
#define GODOT_QUAT_H
diff --git a/modules/gdnative/include/gdnative/rect2.h b/modules/gdnative/include/gdnative/rect2.h
index 7b223b450e..4adcb73e3d 100644
--- a/modules/gdnative/include/gdnative/rect2.h
+++ b/modules/gdnative/include/gdnative/rect2.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_RECT2_H
#define GODOT_RECT2_H
diff --git a/modules/gdnative/include/gdnative/rid.h b/modules/gdnative/include/gdnative/rid.h
index effa89bbbd..0942334ee5 100644
--- a/modules/gdnative/include/gdnative/rid.h
+++ b/modules/gdnative/include/gdnative/rid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_RID_H
#define GODOT_RID_H
diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h
index 90397b0e40..73245160c1 100644
--- a/modules/gdnative/include/gdnative/string.h
+++ b/modules/gdnative/include/gdnative/string.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_STRING_H
#define GODOT_STRING_H
@@ -37,13 +38,24 @@ extern "C" {
#include <stdint.h>
#include <wchar.h>
+typedef wchar_t godot_char_type;
+
#define GODOT_STRING_SIZE sizeof(void *)
+#define GODOT_CHAR_STRING_SIZE sizeof(void *)
#ifndef GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED
#define GODOT_CORE_API_GODOT_STRING_TYPE_DEFINED
typedef struct {
uint8_t _dont_touch_that[GODOT_STRING_SIZE];
} godot_string;
+
+#endif
+
+#ifndef GODOT_CORE_API_GODOT_CHAR_STRING_TYPE_DEFINED
+#define GODOT_CORE_API_GODOT_CHAR_STRING_TYPE_DEFINED
+typedef struct {
+ uint8_t _dont_touch_that[GODOT_CHAR_STRING_SIZE];
+} godot_char_string;
#endif
// reduce extern "C" nesting for VS2013
@@ -59,16 +71,17 @@ typedef struct {
extern "C" {
#endif
+godot_int GDAPI godot_char_string_length(const godot_char_string *p_cs);
+const char GDAPI *godot_char_string_get_data(const godot_char_string *p_cs);
+void GDAPI godot_char_string_destroy(godot_char_string *p_cs);
+
void GDAPI godot_string_new(godot_string *r_dest);
void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src);
-void GDAPI godot_string_new_data(godot_string *r_dest, const char *p_contents, const int p_size);
-void GDAPI godot_string_new_unicode_data(godot_string *r_dest, const wchar_t *p_contents, const int p_size);
-
-void GDAPI godot_string_get_data(const godot_string *p_self, char *p_dest, int *p_size);
+void GDAPI godot_string_new_with_wide_string(godot_string *r_dest, const wchar_t *p_contents, const int p_size);
wchar_t GDAPI *godot_string_operator_index(godot_string *p_self, const godot_int p_idx);
wchar_t GDAPI godot_string_operator_index_const(const godot_string *p_self, const godot_int p_idx);
-const wchar_t GDAPI *godot_string_unicode_str(const godot_string *p_self);
+const wchar_t GDAPI *godot_string_wide_str(const godot_string *p_self);
godot_bool GDAPI godot_string_operator_equal(const godot_string *p_self, const godot_string *p_b);
godot_bool GDAPI godot_string_operator_less(const godot_string *p_self, const godot_string *p_b);
@@ -80,6 +93,10 @@ godot_int GDAPI godot_string_length(const godot_string *p_self);
/* Helpers */
+signed char GDAPI godot_string_casecmp_to(const godot_string *p_self, const godot_string *p_str);
+signed char GDAPI godot_string_nocasecmp_to(const godot_string *p_self, const godot_string *p_str);
+signed char GDAPI godot_string_naturalnocasecmp_to(const godot_string *p_self, const godot_string *p_str);
+
godot_bool GDAPI godot_string_begins_with(const godot_string *p_self, const godot_string *p_string);
godot_bool GDAPI godot_string_begins_with_char_array(const godot_string *p_self, const char *p_char_array);
godot_array GDAPI godot_string_bigrams(const godot_string *p_self);
@@ -176,9 +193,9 @@ godot_string GDAPI godot_string_strip_escapes(const godot_string *p_self);
void GDAPI godot_string_erase(godot_string *p_self, godot_int p_pos, godot_int p_chars);
-void GDAPI godot_string_ascii(godot_string *p_self, char *result);
-void GDAPI godot_string_ascii_extended(godot_string *p_self, char *result);
-void GDAPI godot_string_utf8(godot_string *p_self, char *result);
+godot_char_string GDAPI godot_string_ascii(const godot_string *p_self);
+godot_char_string GDAPI godot_string_ascii_extended(const godot_string *p_self);
+godot_char_string GDAPI godot_string_utf8(const godot_string *p_self);
godot_bool GDAPI godot_string_parse_utf8(godot_string *p_self, const char *p_utf8);
godot_bool GDAPI godot_string_parse_utf8_with_len(godot_string *p_self, const char *p_utf8, godot_int p_len);
godot_string GDAPI godot_string_chars_to_utf8(const char *p_utf8);
diff --git a/modules/gdnative/include/gdnative/string_name.h b/modules/gdnative/include/gdnative/string_name.h
index 287f98d523..5068a3d8f9 100644
--- a/modules/gdnative/include/gdnative/string_name.h
+++ b/modules/gdnative/include/gdnative/string_name.h
@@ -1,9 +1,9 @@
/*************************************************************************/
-/* string_name.h */
+/* string_name.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_STRING_NAME_H
#define GODOT_STRING_NAME_H
diff --git a/modules/gdnative/include/gdnative/transform.h b/modules/gdnative/include/gdnative/transform.h
index d5e2e9364f..a646da146a 100644
--- a/modules/gdnative/include/gdnative/transform.h
+++ b/modules/gdnative/include/gdnative/transform.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_TRANSFORM_H
#define GODOT_TRANSFORM_H
@@ -63,10 +64,10 @@ void GDAPI godot_transform_new_with_axis_origin(godot_transform *r_dest, const g
void GDAPI godot_transform_new(godot_transform *r_dest, const godot_basis *p_basis, const godot_vector3 *p_origin);
godot_basis GDAPI godot_transform_get_basis(const godot_transform *p_self);
-void GDAPI godot_transform_set_basis(godot_transform *p_self, godot_basis *p_v);
+void GDAPI godot_transform_set_basis(godot_transform *p_self, const godot_basis *p_v);
godot_vector3 GDAPI godot_transform_get_origin(const godot_transform *p_self);
-void GDAPI godot_transform_set_origin(godot_transform *p_self, godot_vector3 *p_v);
+void GDAPI godot_transform_set_origin(godot_transform *p_self, const godot_vector3 *p_v);
godot_string GDAPI godot_transform_as_string(const godot_transform *p_self);
diff --git a/modules/gdnative/include/gdnative/transform2d.h b/modules/gdnative/include/gdnative/transform2d.h
index c92225a110..aed941f139 100644
--- a/modules/gdnative/include/gdnative/transform2d.h
+++ b/modules/gdnative/include/gdnative/transform2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_TRANSFORM2D_H
#define GODOT_TRANSFORM2D_H
diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h
index af26ab99db..d2e8246bfb 100644
--- a/modules/gdnative/include/gdnative/variant.h
+++ b/modules/gdnative/include/gdnative/variant.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_VARIANT_H
#define GODOT_VARIANT_H
diff --git a/modules/gdnative/include/gdnative/vector2.h b/modules/gdnative/include/gdnative/vector2.h
index c7e7926b0a..af97524dac 100644
--- a/modules/gdnative/include/gdnative/vector2.h
+++ b/modules/gdnative/include/gdnative/vector2.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_VECTOR2_H
#define GODOT_VECTOR2_H
diff --git a/modules/gdnative/include/gdnative/vector3.h b/modules/gdnative/include/gdnative/vector3.h
index c117bad380..e0299a8a30 100644
--- a/modules/gdnative/include/gdnative/vector3.h
+++ b/modules/gdnative/include/gdnative/vector3.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_VECTOR3_H
#define GODOT_VECTOR3_H
diff --git a/modules/gdnative/include/nativescript/godot_nativescript.h b/modules/gdnative/include/nativescript/godot_nativescript.h
index e6fd9d3f84..11017ae78d 100644
--- a/modules/gdnative/include/nativescript/godot_nativescript.h
+++ b/modules/gdnative/include/nativescript/godot_nativescript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_NATIVESCRIPT_H
#define GODOT_NATIVESCRIPT_H
@@ -49,7 +50,7 @@ typedef enum {
GODOT_PROPERTY_HINT_RANGE, ///< hint_text = "min,max,step,slider; //slider is optional"
GODOT_PROPERTY_HINT_EXP_RANGE, ///< hint_text = "min,max,step", exponential edit
GODOT_PROPERTY_HINT_ENUM, ///< hint_text= "val1,val2,val3,etc"
- GODOT_PROPERTY_HINT_EXP_EASING, /// exponential easing funciton (Math::ease)
+ GODOT_PROPERTY_HINT_EXP_EASING, /// exponential easing function (Math::ease)
GODOT_PROPERTY_HINT_LENGTH, ///< hint_text= "length" (as integer)
GODOT_PROPERTY_HINT_SPRITE_FRAME,
GODOT_PROPERTY_HINT_KEY_ACCEL, ///< hint_text= "length" (as integer)
diff --git a/modules/gdnative/include/pluginscript/godot_pluginscript.h b/modules/gdnative/include/pluginscript/godot_pluginscript.h
index fca29b67ca..671be3bbb9 100644
--- a/modules/gdnative/include/pluginscript/godot_pluginscript.h
+++ b/modules/gdnative/include/pluginscript/godot_pluginscript.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* godot_nativescript.h */
+/* godot_pluginscript.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOT_PLUGINSCRIPT_H
#define GODOT_PLUGINSCRIPT_H
diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp
index 687aa66219..4012e821bb 100644
--- a/modules/gdnative/nativescript/api_generator.cpp
+++ b/modules/gdnative/nativescript/api_generator.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "api_generator.h"
#ifdef TOOLS_ENABLED
diff --git a/modules/gdnative/nativescript/api_generator.h b/modules/gdnative/nativescript/api_generator.h
index 23fd0377ad..de234b2f0d 100644
--- a/modules/gdnative/nativescript/api_generator.h
+++ b/modules/gdnative/nativescript/api_generator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef API_GENERATOR_H
#define API_GENERATOR_H
diff --git a/modules/gdnative/nativescript/godot_nativescript.cpp b/modules/gdnative/nativescript/godot_nativescript.cpp
index c9434c404e..b4f7e1555e 100644
--- a/modules/gdnative/nativescript/godot_nativescript.cpp
+++ b/modules/gdnative/nativescript/godot_nativescript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "nativescript/godot_nativescript.h"
#include "class_db.h"
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index 823d794f72..aaa7d634d1 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "nativescript.h"
#include "gdnative/gdnative.h"
@@ -397,6 +398,11 @@ Variant NativeScript::_new(const Variant **p_args, int p_argcount, Variant::Call
owner = memnew(Reference);
}
+ if (!owner) {
+ r_error.error = Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL;
+ return Variant();
+ }
+
Reference *r = Object::cast_to<Reference>(owner);
if (r) {
ref = REF(r);
@@ -789,9 +795,36 @@ NativeScriptInstance::~NativeScriptInstance() {
NativeScriptLanguage *NativeScriptLanguage::singleton;
-void NativeScriptLanguage::_unload_stuff() {
+void NativeScriptLanguage::_unload_stuff(bool p_reload) {
for (Map<String, Map<StringName, NativeScriptDesc> >::Element *L = library_classes.front(); L; L = L->next()) {
- for (Map<StringName, NativeScriptDesc>::Element *C = L->get().front(); C; C = C->next()) {
+
+ String lib_path = L->key();
+ Map<StringName, NativeScriptDesc> classes = L->get();
+
+ if (p_reload) {
+
+ Map<String, Ref<GDNative> >::Element *E = library_gdnatives.find(lib_path);
+ Ref<GDNative> gdn;
+
+ if (E) {
+ gdn = E->get();
+ }
+
+ bool should_reload = false;
+
+ if (gdn.is_valid()) {
+ Ref<GDNativeLibrary> lib = gdn->get_library();
+ if (lib.is_valid()) {
+ should_reload = lib->is_reloadable();
+ }
+ }
+
+ if (!should_reload) {
+ continue;
+ }
+ }
+
+ for (Map<StringName, NativeScriptDesc>::Element *C = classes.front(); C; C = C->next()) {
// free property stuff first
for (OrderedHashMap<StringName, NativeScriptDesc::Property>::Element P = C->get().properties.front(); P; P = P.next()) {
@@ -829,12 +862,14 @@ NativeScriptLanguage::~NativeScriptLanguage() {
for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) {
- L->get()->terminate();
- NSL->library_classes.clear();
- NSL->library_gdnatives.clear();
- NSL->library_script_users.clear();
+ if (L->get().is_valid())
+ L->get()->terminate();
}
+ NSL->library_classes.clear();
+ NSL->library_gdnatives.clear();
+ NSL->library_script_users.clear();
+
#ifndef NO_THREADS
memdelete(mutex);
#endif
@@ -896,7 +931,7 @@ Ref<Script> NativeScriptLanguage::get_template(const String &p_class_name, const
return Ref<NativeScript>(s);
}
bool NativeScriptLanguage::validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_functions) const {
- return false;
+ return true;
}
Script *NativeScriptLanguage::create_script() const {
@@ -1050,6 +1085,11 @@ void NativeScriptLanguage::unregister_script(NativeScript *script) {
void NativeScriptLanguage::call_libraries_cb(const StringName &name) {
// library_gdnatives is modified only from the main thread, so it's safe not to use mutex here
for (Map<String, Ref<GDNative> >::Element *L = library_gdnatives.front(); L; L = L->next()) {
+
+ if (L->get().is_null()) {
+ continue;
+ }
+
if (L->get()->is_initialized()) {
void *proc_ptr;
@@ -1107,10 +1147,20 @@ void NativeReloadNode::_notification(int p_what) {
#ifndef NO_THREADS
MutexLock lock(NSL->mutex);
#endif
- NSL->_unload_stuff();
+ NSL->_unload_stuff(true);
for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) {
- L->get()->terminate();
+ Ref<GDNative> gdn = L->get();
+
+ if (gdn.is_null()) {
+ continue;
+ }
+
+ if (!gdn->get_library()->is_reloadable()) {
+ continue;
+ }
+
+ gdn->terminate();
NSL->library_classes.erase(L->key());
}
@@ -1128,21 +1178,27 @@ void NativeReloadNode::_notification(int p_what) {
Set<StringName> libs_to_remove;
for (Map<String, Ref<GDNative> >::Element *L = NSL->library_gdnatives.front(); L; L = L->next()) {
- if (!L->get()->initialize()) {
+ Ref<GDNative> gdn = L->get();
+
+ if (gdn.is_null()) {
+ continue;
+ }
+
+ if (!gdn->get_library()->is_reloadable()) {
+ continue;
+ }
+
+ if (!gdn->initialize()) {
libs_to_remove.insert(L->key());
continue;
}
NSL->library_classes.insert(L->key(), Map<StringName, NativeScriptDesc>());
- void *args[1] = {
- (void *)&L->key()
- };
-
// here the library registers all the classes and stuff.
void *proc_ptr;
- Error err = L->get()->get_symbol(L->get()->get_library()->get_symbol_prefix() + "nativescript_init", proc_ptr);
+ Error err = gdn->get_symbol(gdn->get_library()->get_symbol_prefix() + "nativescript_init", proc_ptr);
if (err != OK) {
ERR_PRINT(String("No godot_nativescript_init in \"" + L->key() + "\" found").utf8().get_data());
} else {
diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h
index 5eefdf1567..ac94c84bc4 100644
--- a/modules/gdnative/nativescript/nativescript.h
+++ b/modules/gdnative/nativescript/nativescript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NATIVE_SCRIPT_H
#define NATIVE_SCRIPT_H
@@ -204,7 +205,7 @@ class NativeScriptLanguage : public ScriptLanguage {
private:
static NativeScriptLanguage *singleton;
- void _unload_stuff();
+ void _unload_stuff(bool p_reload = false);
#ifndef NO_THREADS
Mutex *mutex;
diff --git a/modules/gdnative/nativescript/register_types.cpp b/modules/gdnative/nativescript/register_types.cpp
index d7d2c11d54..cb55a13b3e 100644
--- a/modules/gdnative/nativescript/register_types.cpp
+++ b/modules/gdnative/nativescript/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "io/resource_loader.h"
diff --git a/modules/gdnative/nativescript/register_types.h b/modules/gdnative/nativescript/register_types.h
index 66cd4c33bb..7389010f8e 100644
--- a/modules/gdnative/nativescript/register_types.h
+++ b/modules/gdnative/nativescript/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_nativescript_types();
void unregister_nativescript_types();
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.cpp b/modules/gdnative/pluginscript/pluginscript_instance.cpp
index c9e7c60399..931ab0bfe4 100644
--- a/modules/gdnative/pluginscript/pluginscript_instance.cpp
+++ b/modules/gdnative/pluginscript/pluginscript_instance.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -84,8 +84,9 @@ Variant PluginScriptInstance::call(const StringName &p_method, const Variant **p
godot_variant ret = _desc->call_method(
_data, (godot_string_name *)&p_method, (const godot_variant **)p_args,
p_argcount, (godot_variant_call_error *)&r_error);
- Variant *var_ret = (Variant *)&ret;
- return *var_ret;
+ Variant var_ret = *(Variant *)&ret;
+ godot_variant_destroy(&ret);
+ return var_ret;
}
#if 0 // TODO: Don't rely on default implementations provided by ScriptInstance ?
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h
index 7848739d9b..3c7b360ad9 100644
--- a/modules/gdnative/pluginscript/pluginscript_instance.h
+++ b/modules/gdnative/pluginscript/pluginscript_instance.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/pluginscript/pluginscript_language.cpp b/modules/gdnative/pluginscript/pluginscript_language.cpp
index 382b28a0bb..8018178bd5 100644
--- a/modules/gdnative/pluginscript/pluginscript_language.cpp
+++ b/modules/gdnative/pluginscript/pluginscript_language.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -45,7 +45,11 @@ void PluginScriptLanguage::init() {
}
String PluginScriptLanguage::get_type() const {
- return String(_desc.type);
+ // We should use _desc.type here, however the returned type is used to
+ // query ClassDB which would complain given the type is not registered
+ // from his point of view...
+ // To solve this we just use a more generic (but present in ClassDB) type.
+ return String("PluginScript");
}
String PluginScriptLanguage::get_extension() const {
@@ -99,6 +103,7 @@ Ref<Script> PluginScriptLanguage::get_template(const String &p_class_name, const
if (_desc.get_template_source_code) {
godot_string src = _desc.get_template_source_code(_data, (godot_string *)&p_class_name, (godot_string *)&p_base_class_name);
script->set_source_code(*(String *)&src);
+ godot_string_destroy(&src);
}
return script;
}
@@ -168,7 +173,7 @@ Error PluginScriptLanguage::complete_code(const String &p_code, const String &p_
for (int i = 0; i < options.size(); i++) {
r_options->push_back(String(options[i]));
}
- Error err = *(Error *)tmp;
+ Error err = *(Error *)&tmp;
return err;
}
return ERR_UNAVAILABLE;
diff --git a/modules/gdnative/pluginscript/pluginscript_language.h b/modules/gdnative/pluginscript/pluginscript_language.h
index 5bbd3507e3..709345885b 100644
--- a/modules/gdnative/pluginscript/pluginscript_language.h
+++ b/modules/gdnative/pluginscript/pluginscript_language.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/pluginscript/pluginscript_loader.cpp b/modules/gdnative/pluginscript/pluginscript_loader.cpp
index 62ba41a24e..acba297fa0 100644
--- a/modules/gdnative/pluginscript/pluginscript_loader.cpp
+++ b/modules/gdnative/pluginscript/pluginscript_loader.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/pluginscript/pluginscript_loader.h b/modules/gdnative/pluginscript/pluginscript_loader.h
index 5e59d25d75..9276ea3ef9 100644
--- a/modules/gdnative/pluginscript/pluginscript_loader.h
+++ b/modules/gdnative/pluginscript/pluginscript_loader.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp
index 876719820b..5ae7926f1b 100644
--- a/modules/gdnative/pluginscript/pluginscript_script.cpp
+++ b/modules/gdnative/pluginscript/pluginscript_script.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -131,13 +131,10 @@ ScriptInstance *PluginScript::instance_create(Object *p_this) {
#endif
}
- PluginScript *top = this;
- // TODO: can be optimized by storing a PluginScript::_base_parent direct pointer
- while (top->_ref_base_parent.is_valid())
- top = top->_ref_base_parent.ptr();
- if (top->_native_parent) {
- if (!ClassDB::is_parent_class(p_this->get_class_name(), top->_native_parent)) {
- String msg = "Script inherits from native type '" + String(top->_native_parent) + "', so it can't be instanced in object of type: '" + p_this->get_class() + "'";
+ StringName base_type = get_instance_base_type();
+ if (base_type) {
+ if (!ClassDB::is_parent_class(p_this->get_class_name(), base_type)) {
+ String msg = "Script inherits from native type '" + String(base_type) + "', so it can't be instanced in object of type: '" + p_this->get_class() + "'";
// TODO: implement PluginscriptLanguage::debug_break_parse
// if (ScriptDebugger::get_singleton()) {
// _language->debug_break_parse(get_path(), 0, msg);
@@ -210,29 +207,31 @@ Error PluginScript::reload(bool p_keep_state) {
// TODO: GDscript uses `ScriptDebugger` here to jump into the parsing error
return err;
}
+
+ // Script's parent is passed as base_name which can make reference to a
+ // ClassDB name (i.e. `Node2D`) or a resource path (i.e. `res://foo/bar.gd`)
+ StringName *base_name = (StringName *)&manifest.base;
+ if (*base_name) {
+
+ if (ClassDB::class_exists(*base_name)) {
+ _native_parent = *base_name;
+ } else {
+ Ref<Script> res = ResourceLoader::load(*base_name);
+ if (res.is_valid()) {
+ _ref_base_parent = res;
+ } else {
+ String name = *(StringName *)&manifest.name;
+ ERR_EXPLAIN(_path + ": Script '" + name + "' has an invalid parent '" + *base_name + "'.");
+ ERR_FAIL_V(ERR_PARSE_ERROR);
+ }
+ }
+ }
+
_valid = true;
// Use the manifest to configure this script object
_data = manifest.data;
_name = *(StringName *)&manifest.name;
_tool = manifest.is_tool;
- // Base name is either another PluginScript or a regular class accessible
- // through ClassDB
- StringName *base_name = (StringName *)&manifest.base;
- for (SelfList<PluginScript> *e = _language->_script_list.first(); e != NULL; e = e->next()) {
- if (e->self()->_name == *base_name) {
- // Found you, base is a PluginScript !
- _ref_base_parent = Ref<PluginScript>(e->self());
- break;
- }
- }
- if (!_ref_base_parent.is_valid()) {
- // Base is a native ClassDB
- if (!ClassDB::class_exists(*base_name)) {
- ERR_EXPLAIN("Unknown script '" + String(_name) + "' parent '" + String(*base_name) + "'.");
- ERR_FAIL_V(ERR_PARSE_ERROR);
- }
- _native_parent = *base_name;
- }
Dictionary *members = (Dictionary *)&manifest.member_lines;
for (const Variant *key = members->next(); key != NULL; key = members->next(key)) {
diff --git a/modules/gdnative/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h
index 9928e115ea..6729eecb32 100644
--- a/modules/gdnative/pluginscript/pluginscript_script.h
+++ b/modules/gdnative/pluginscript/pluginscript_script.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -53,7 +53,7 @@ private:
bool _tool;
bool _valid;
- Ref<PluginScript> _ref_base_parent;
+ Ref<Script> _ref_base_parent;
StringName _native_parent;
SelfList<PluginScript> _script_list;
diff --git a/modules/gdnative/pluginscript/register_types.cpp b/modules/gdnative/pluginscript/register_types.cpp
index b7c8b6f536..8888f9e157 100644
--- a/modules/gdnative/pluginscript/register_types.cpp
+++ b/modules/gdnative/pluginscript/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "core/project_settings.h"
diff --git a/modules/gdnative/pluginscript/register_types.h b/modules/gdnative/pluginscript/register_types.h
index be2b1ca4c8..76651aa986 100644
--- a/modules/gdnative/pluginscript/register_types.h
+++ b/modules/gdnative/pluginscript/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_pluginscript_types();
void unregister_pluginscript_types();
diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp
index 21330dfefd..a0b6fbeb75 100644
--- a/modules/gdnative/register_types.cpp
+++ b/modules/gdnative/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "gdnative/gdnative.h"
diff --git a/modules/gdnative/register_types.h b/modules/gdnative/register_types.h
index 39d47dccb0..4549687f55 100644
--- a/modules/gdnative/register_types.h
+++ b/modules/gdnative/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_gdnative_types();
void unregister_gdnative_types();
diff --git a/modules/gdscript/doc_classes/GDScript.xml b/modules/gdscript/doc_classes/GDScript.xml
index cc617c5c67..59cb00e3f6 100644
--- a/modules/gdscript/doc_classes/GDScript.xml
+++ b/modules/gdscript/doc_classes/GDScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GDScript" inherits="Script" category="Core" version="3.0-beta">
+<class name="GDScript" inherits="Script" category="Core" version="3.0-stable">
<brief_description>
A script implemented in the GDScript programming language.
</brief_description>
@@ -8,6 +8,7 @@
[method new] creates a new instance of the script. [method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/scripting/gdscript/index.html
</tutorials>
<demos>
</demos>
diff --git a/modules/gdscript/doc_classes/GDScriptFunctionState.xml b/modules/gdscript/doc_classes/GDScriptFunctionState.xml
index 465a4f438b..8510136f68 100644
--- a/modules/gdscript/doc_classes/GDScriptFunctionState.xml
+++ b/modules/gdscript/doc_classes/GDScriptFunctionState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GDScriptFunctionState" inherits="Reference" category="Core" version="3.0-beta">
+<class name="GDScriptFunctionState" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
State of a function call after yielding.
</brief_description>
diff --git a/modules/gdscript/doc_classes/GDScriptNativeClass.xml b/modules/gdscript/doc_classes/GDScriptNativeClass.xml
index 948254e0ad..48826ec1e0 100644
--- a/modules/gdscript/doc_classes/GDScriptNativeClass.xml
+++ b/modules/gdscript/doc_classes/GDScriptNativeClass.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GDScriptNativeClass" inherits="Reference" category="Core" version="3.0-beta">
+<class name="GDScriptNativeClass" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index 11c13ce2ea..4e3ee4d22c 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript.h"
#include "engine.h"
@@ -704,7 +705,7 @@ bool GDScript::_set(const StringName &p_name, const Variant &p_value) {
void GDScript::_get_property_list(List<PropertyInfo> *p_properties) const {
- p_properties->push_back(PropertyInfo(Variant::STRING, "script/source", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_properties->push_back(PropertyInfo(Variant::STRING, "script/source", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
void GDScript::_bind_methods() {
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h
index d669fd6664..9566e3b32e 100644
--- a/modules/gdscript/gdscript.h
+++ b/modules/gdscript/gdscript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_H
#define GDSCRIPT_H
@@ -348,7 +349,9 @@ public:
csi.resize(_debug_call_stack_pos);
for (int i = 0; i < _debug_call_stack_pos; i++) {
csi[_debug_call_stack_pos - i - 1].line = _call_stack[i].line ? *_call_stack[i].line : 0;
- csi[_debug_call_stack_pos - i - 1].script = Ref<GDScript>(_call_stack[i].function->get_script());
+ if (_call_stack[i].function)
+ csi[_debug_call_stack_pos - i - 1].func = _call_stack[i].function->get_name();
+ csi[_debug_call_stack_pos - i - 1].file = _call_stack[i].function->get_script()->get_path();
}
return csi;
}
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index 360cce9ca0..1649fb52f2 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript_compiler.h"
#include "gdscript.h"
@@ -36,6 +37,9 @@ bool GDScriptCompiler::_is_class_member_property(CodeGen &codegen, const StringN
if (!codegen.function_node || codegen.function_node->_static)
return false;
+ if (codegen.stack_identifiers.has(p_name))
+ return false; //shadowed
+
return _is_class_member_property(codegen.script, p_name);
}
@@ -183,6 +187,14 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
StringName identifier = in->name;
+ // TRY STACK!
+ if (!p_initializer && codegen.stack_identifiers.has(identifier)) {
+
+ int pos = codegen.stack_identifiers[identifier];
+ return pos | (GDScriptFunction::ADDR_TYPE_STACK_VARIABLE << GDScriptFunction::ADDR_BITS);
+ }
+
+ // TRY CLASS MEMBER
if (_is_class_member_property(codegen, identifier)) {
//get property
codegen.opcodes.push_back(GDScriptFunction::OPCODE_GET_MEMBER); // perform operator
@@ -193,12 +205,6 @@ int GDScriptCompiler::_parse_expression(CodeGen &codegen, const GDScriptParser::
return dst_addr;
}
- // TRY STACK!
- if (!p_initializer && codegen.stack_identifiers.has(identifier)) {
-
- int pos = codegen.stack_identifiers[identifier];
- return pos | (GDScriptFunction::ADDR_TYPE_STACK_VARIABLE << GDScriptFunction::ADDR_BITS);
- }
//TRY MEMBERS!
if (!codegen.function_node || !codegen.function_node->_static) {
@@ -1335,10 +1341,12 @@ Error GDScriptCompiler::_parse_block(CodeGen &codegen, const GDScriptParser::Blo
const GDScriptParser::LocalVarNode *lv = static_cast<const GDScriptParser::LocalVarNode *>(s);
- if (_is_class_member_property(codegen, lv->name)) {
- _set_error("Name for local variable '" + String(lv->name) + "' can't shadow class property of the same name.", lv);
- return ERR_ALREADY_EXISTS;
- }
+ // since we are using properties now for most class access, allow shadowing of class members to make user's life easier.
+ //
+ //if (_is_class_member_property(codegen, lv->name)) {
+ // _set_error("Name for local variable '" + String(lv->name) + "' can't shadow class property of the same name.", lv);
+ // return ERR_ALREADY_EXISTS;
+ //}
codegen.add_stack_identifier(lv->name, p_stack_level++);
codegen.alloc_stack(p_stack_level);
@@ -1375,10 +1383,13 @@ Error GDScriptCompiler::_parse_function(GDScript *p_script, const GDScriptParser
if (p_func) {
for (int i = 0; i < p_func->arguments.size(); i++) {
- if (_is_class_member_property(p_script, p_func->arguments[i])) {
- _set_error("Name for argument '" + String(p_func->arguments[i]) + "' can't shadow class property of the same name.", p_func);
- return ERR_ALREADY_EXISTS;
- }
+ // since we are using properties now for most class access, allow shadowing of class members to make user's life easier.
+ //
+ //if (_is_class_member_property(p_script, p_func->arguments[i])) {
+ // _set_error("Name for argument '" + String(p_func->arguments[i]) + "' can't shadow class property of the same name.", p_func);
+ // return ERR_ALREADY_EXISTS;
+ //}
+
codegen.add_stack_identifier(p_func->arguments[i], i);
#ifdef TOOLS_ENABLED
argnames.push_back(p_func->arguments[i]);
diff --git a/modules/gdscript/gdscript_compiler.h b/modules/gdscript/gdscript_compiler.h
index 4b35898bb0..62aafdbe01 100644
--- a/modules/gdscript/gdscript_compiler.h
+++ b/modules/gdscript/gdscript_compiler.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_COMPILER_H
#define GDSCRIPT_COMPILER_H
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 9dcaaf828f..c4269ab4a9 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript.h"
#include "core/engine.h"
@@ -490,8 +491,8 @@ static Ref<Reference> _get_parent_class(GDScriptCompletionContext &context) {
path = context.base_path.plus_file(path);
}
- if (ScriptCodeCompletionCache::get_sigleton())
- script = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(path);
+ if (ScriptCodeCompletionCache::get_singleton())
+ script = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(path);
else
script = ResourceLoader::load(path);
@@ -764,8 +765,8 @@ static bool _guess_expression_type(GDScriptCompletionContext &context, const GDS
//print_line("is a script");
Ref<Script> scr;
- if (ScriptCodeCompletionCache::get_sigleton())
- scr = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(script);
+ if (ScriptCodeCompletionCache::get_singleton())
+ scr = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(script);
else
scr = ResourceLoader::load(script);
@@ -1300,8 +1301,8 @@ static bool _guess_identifier_type(GDScriptCompletionContext &context, int p_lin
//print_line("is a script");
Ref<Script> scr;
- if (ScriptCodeCompletionCache::get_sigleton())
- scr = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(script);
+ if (ScriptCodeCompletionCache::get_singleton())
+ scr = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(script);
else
scr = ResourceLoader::load(script);
@@ -2449,8 +2450,10 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
} break;
case GDScriptParser::COMPLETION_RESOURCE_PATH: {
- if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths"))
+ if (EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths")) {
get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), options);
+ r_forced = true;
+ }
} break;
case GDScriptParser::COMPLETION_ASSIGN: {
#if defined(DEBUG_METHODS_ENABLED) && defined(TOOLS_ENABLED)
diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp
index d97f355400..a2f449909f 100644
--- a/modules/gdscript/gdscript_function.cpp
+++ b/modules/gdscript/gdscript_function.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript_function.h"
#include "gdscript.h"
@@ -605,7 +606,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
#ifdef DEBUG_ENABLED
if (!valid) {
if (src->has_method(*index)) {
- err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "'). Did you mean '." + index->operator String() + "()' ?";
+ err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "'). Did you mean '." + index->operator String() + "()' or funcref(obj, \"" + index->operator String() + "\") ?";
} else {
err_text = "Invalid get index '" + index->operator String() + "' (on base: '" + _get_var_type(src) + "').";
}
diff --git a/modules/gdscript/gdscript_function.h b/modules/gdscript/gdscript_function.h
index e499820954..9310444c7a 100644
--- a/modules/gdscript/gdscript_function.h
+++ b/modules/gdscript/gdscript_function.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_FUNCTION_H
#define GDSCRIPT_FUNCTION_H
diff --git a/modules/gdscript/gdscript_functions.cpp b/modules/gdscript/gdscript_functions.cpp
index cae3bcadfe..eceec27814 100644
--- a/modules/gdscript/gdscript_functions.cpp
+++ b/modules/gdscript/gdscript_functions.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript_functions.h"
#include "class_db.h"
@@ -1482,7 +1483,7 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) {
return mi;
} break;
case MATH_INVERSE_LERP: {
- MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "value"));
+ MethodInfo mi("inverse_lerp", PropertyInfo(Variant::REAL, "from"), PropertyInfo(Variant::REAL, "to"), PropertyInfo(Variant::REAL, "weight"));
mi.return_val.type = Variant::REAL;
return mi;
} break;
@@ -1578,12 +1579,12 @@ MethodInfo GDScriptFunctions::get_info(Function p_func) {
return mi;
} break;
case LOGIC_CLAMP: {
- MethodInfo mi("clamp", PropertyInfo(Variant::REAL, "val"), PropertyInfo(Variant::REAL, "min"), PropertyInfo(Variant::REAL, "max"));
+ MethodInfo mi("clamp", PropertyInfo(Variant::REAL, "value"), PropertyInfo(Variant::REAL, "min"), PropertyInfo(Variant::REAL, "max"));
mi.return_val.type = Variant::REAL;
return mi;
} break;
case LOGIC_NEAREST_PO2: {
- MethodInfo mi("nearest_po2", PropertyInfo(Variant::INT, "val"));
+ MethodInfo mi("nearest_po2", PropertyInfo(Variant::INT, "value"));
mi.return_val.type = Variant::INT;
return mi;
} break;
diff --git a/modules/gdscript/gdscript_functions.h b/modules/gdscript/gdscript_functions.h
index 5bbd848339..1d54006084 100644
--- a/modules/gdscript/gdscript_functions.h
+++ b/modules/gdscript/gdscript_functions.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_FUNCTIONS_H
#define GDSCRIPT_FUNCTIONS_H
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 4b3feb49b9..c67214638d 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript_parser.h"
#include "gdscript.h"
@@ -457,9 +458,9 @@ GDScriptParser::Node *GDScriptParser::_parse_expression(Node *p_parent, bool p_s
if (!validating) {
//this can be too slow for just validating code
- if (for_completion && ScriptCodeCompletionCache::get_sigleton()) {
- res = ScriptCodeCompletionCache::get_sigleton()->get_cached_resource(path);
- } else {
+ if (for_completion && ScriptCodeCompletionCache::get_singleton()) {
+ res = ScriptCodeCompletionCache::get_singleton()->get_cached_resource(path);
+ } else { // essential; see issue 15902
res = ResourceLoader::load(path);
}
if (!res.is_valid()) {
diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h
index 1b851434db..485ba1263d 100644
--- a/modules/gdscript/gdscript_parser.h
+++ b/modules/gdscript/gdscript_parser.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_PARSER_H
#define GDSCRIPT_PARSER_H
diff --git a/modules/gdscript/gdscript_tokenizer.cpp b/modules/gdscript/gdscript_tokenizer.cpp
index 281aa6ca44..6a844cd651 100644
--- a/modules/gdscript/gdscript_tokenizer.cpp
+++ b/modules/gdscript/gdscript_tokenizer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gdscript_tokenizer.h"
#include "gdscript_functions.h"
diff --git a/modules/gdscript/gdscript_tokenizer.h b/modules/gdscript/gdscript_tokenizer.h
index 9a09058cf3..b020c85199 100644
--- a/modules/gdscript/gdscript_tokenizer.h
+++ b/modules/gdscript/gdscript_tokenizer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDSCRIPT_TOKENIZER_H
#define GDSCRIPT_TOKENIZER_H
diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp
index 50f5da9995..95efcda80f 100644
--- a/modules/gdscript/register_types.cpp
+++ b/modules/gdscript/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "gdscript.h"
diff --git a/modules/gdscript/register_types.h b/modules/gdscript/register_types.h
index 21ad85f12e..2b88a67c7e 100644
--- a/modules/gdscript/register_types.h
+++ b/modules/gdscript/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_gdscript_types();
void unregister_gdscript_types();
diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml
index e9bb90631d..44685220b3 100644
--- a/modules/gridmap/doc_classes/GridMap.xml
+++ b/modules/gridmap/doc_classes/GridMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GridMap" inherits="Spatial" category="Core" version="3.0-beta">
+<class name="GridMap" inherits="Spatial" category="Core" version="3.0-stable">
<brief_description>
Node for 3D tile-based maps.
</brief_description>
@@ -10,6 +10,7 @@
A GridMap is split into a sparse collection of octants for efficient rendering and physics processing. Every octant has the same dimensions and can contain several cells.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/tutorials/3d/using_gridmaps.html
</tutorials>
<demos>
</demos>
@@ -67,32 +68,20 @@
The orientation of the cell at the grid-based X, Y and Z coordinates. -1 is retuned if the cell is empty.
</description>
</method>
- <method name="get_cell_size" qualifiers="const">
- <return type="Vector3">
- </return>
- <description>
- The dimensions of the grid's cells.
- </description>
- </method>
- <method name="get_center_x" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Returns whether or not grid items are centered on the X axis.
- </description>
- </method>
- <method name="get_center_y" qualifiers="const">
+ <method name="get_collision_layer_bit" qualifiers="const">
<return type="bool">
</return>
+ <argument index="0" name="bit" type="int">
+ </argument>
<description>
- Returns whether or not grid items are centered on the Y axis.
</description>
</method>
- <method name="get_center_z" qualifiers="const">
+ <method name="get_collision_mask_bit" qualifiers="const">
<return type="bool">
</return>
+ <argument index="0" name="bit" type="int">
+ </argument>
<description>
- Returns whether or not grid items are centered on the Z axis.
</description>
</method>
<method name="get_meshes">
@@ -102,20 +91,6 @@
Array of [Transform] and [Mesh] references corresponding to the non empty cells in the grid. The transforms are specified in world space.
</description>
</method>
- <method name="get_octant_size" qualifiers="const">
- <return type="int">
- </return>
- <description>
- The size of each octant measured in number of cells. This applies to all three axis.
- </description>
- </method>
- <method name="get_theme" qualifiers="const">
- <return type="MeshLibrary">
- </return>
- <description>
- The assigned [MeshLibrary].
- </description>
- </method>
<method name="get_used_cells" qualifiers="const">
<return type="Array">
</return>
@@ -172,42 +147,6 @@
Optionally, the item's orientation can be passed.
</description>
</method>
- <method name="set_cell_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector3">
- </argument>
- <description>
- Sets the height, width and depth of the grid's cells.
- </description>
- </method>
- <method name="set_center_x">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Set grid items to be centered on the X axis. By default it is enabled.
- </description>
- </method>
- <method name="set_center_y">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Set grid items to be centered on the Y axis. By default it is enabled.
- </description>
- </method>
- <method name="set_center_z">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Set grid items to be centered on the Z axis. By default it is enabled.
- </description>
- </method>
<method name="set_clip">
<return type="void">
</return>
@@ -222,22 +161,24 @@
<description>
</description>
</method>
- <method name="set_octant_size">
+ <method name="set_collision_layer_bit">
<return type="void">
</return>
- <argument index="0" name="size" type="int">
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <argument index="1" name="value" type="bool">
</argument>
<description>
- Sets the size for each octant measured in number of cells. This applies to all three axis.
</description>
</method>
- <method name="set_theme">
+ <method name="set_collision_mask_bit">
<return type="void">
</return>
- <argument index="0" name="theme" type="MeshLibrary">
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <argument index="1" name="value" type="bool">
</argument>
<description>
- Sets the collection of meshes for the map.
</description>
</method>
<method name="world_to_map" qualifiers="const">
@@ -249,6 +190,32 @@
</description>
</method>
</methods>
+ <members>
+ <member name="cell_center_x" type="bool" setter="set_center_x" getter="get_center_x">
+ If [code]true[/code] grid items are centered on the X axis.
+ </member>
+ <member name="cell_center_y" type="bool" setter="set_center_y" getter="get_center_y">
+ If [code]true[/code] grid items are centered on the Y axis.
+ </member>
+ <member name="cell_center_z" type="bool" setter="set_center_z" getter="get_center_z">
+ If [code]true[/code] grid items are centered on the Z axis.
+ </member>
+ <member name="cell_octant_size" type="int" setter="set_octant_size" getter="get_octant_size">
+ The size of each octant measured in number of cells. This applies to all three axis.
+ </member>
+ <member name="cell_scale" type="float" setter="set_cell_scale" getter="get_cell_scale">
+ </member>
+ <member name="cell_size" type="Vector3" setter="set_cell_size" getter="get_cell_size">
+ The dimensions of the grid's cells.
+ </member>
+ <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
+ </member>
+ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
+ </member>
+ <member name="theme" type="MeshLibrary" setter="set_theme" getter="get_theme">
+ The assigned [MeshLibrary].
+ </member>
+ </members>
<constants>
<constant name="INVALID_CELL_ITEM" value="-1">
Invalid cell item that can be used in [method set_cell_item] to clear cells (or represent an empty cell in [method get_cell_item]).
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index bd37118847..234a59e516 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "grid_map.h"
#include "message_queue.h"
#include "scene/3d/light.h"
@@ -42,28 +43,7 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) {
String name = p_name;
- if (name == "theme") {
-
- set_theme(p_value);
- } else if (name == "cell_size") {
- if (p_value.get_type() == Variant::INT || p_value.get_type() == Variant::REAL) {
- //compatibility
- float cs = p_value;
- set_cell_size(Vector3(cs, cs, cs));
- } else {
- set_cell_size(p_value);
- }
- } else if (name == "cell_octant_size") {
- set_octant_size(p_value);
- } else if (name == "cell_center_x") {
- set_center_x(p_value);
- } else if (name == "cell_center_y") {
- set_center_y(p_value);
- } else if (name == "cell_center_z") {
- set_center_z(p_value);
- } else if (name == "cell_scale") {
- set_cell_scale(p_value);
- /* } else if (name=="cells") {
+ /* } else if (name=="cells") {
PoolVector<int> cells = p_value;
int amount=cells.size();
PoolVector<int>::Read r = cells.read();
@@ -80,7 +60,7 @@ bool GridMap::_set(const StringName &p_name, const Variant &p_value) {
}
_recreate_octant_data();*/
- } else if (name == "data") {
+ if (name == "data") {
Dictionary d = p_value;
@@ -133,21 +113,7 @@ bool GridMap::_get(const StringName &p_name, Variant &r_ret) const {
String name = p_name;
- if (name == "theme") {
- r_ret = get_theme();
- } else if (name == "cell_size") {
- r_ret = get_cell_size();
- } else if (name == "cell_octant_size") {
- r_ret = get_octant_size();
- } else if (name == "cell_center_x") {
- r_ret = get_center_x();
- } else if (name == "cell_center_y") {
- r_ret = get_center_y();
- } else if (name == "cell_center_z") {
- r_ret = get_center_z();
- } else if (name == "cell_scale") {
- r_ret = cell_scale;
- } else if (name == "data") {
+ if (name == "data") {
Dictionary d;
@@ -183,14 +149,6 @@ bool GridMap::_get(const StringName &p_name, Variant &r_ret) const {
void GridMap::_get_property_list(List<PropertyInfo> *p_list) const {
- p_list->push_back(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"));
- p_list->push_back(PropertyInfo(Variant::NIL, "Cell", PROPERTY_HINT_NONE, "cell_", PROPERTY_USAGE_GROUP));
- p_list->push_back(PropertyInfo(Variant::VECTOR3, "cell_size"));
- p_list->push_back(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_x"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_y"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "cell_center_z"));
- p_list->push_back(PropertyInfo(Variant::REAL, "cell_scale"));
if (baked_meshes.size()) {
p_list->push_back(PropertyInfo(Variant::ARRAY, "baked_meshes", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
}
@@ -198,6 +156,58 @@ void GridMap::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE));
}
+void GridMap::set_collision_layer(uint32_t p_layer) {
+
+ collision_layer = p_layer;
+ _reset_physic_bodies_collision_filters();
+}
+
+uint32_t GridMap::get_collision_layer() const {
+
+ return collision_layer;
+}
+
+void GridMap::set_collision_mask(uint32_t p_mask) {
+
+ collision_mask = p_mask;
+ _reset_physic_bodies_collision_filters();
+}
+
+uint32_t GridMap::get_collision_mask() const {
+
+ return collision_mask;
+}
+
+void GridMap::set_collision_mask_bit(int p_bit, bool p_value) {
+
+ uint32_t mask = get_collision_mask();
+ if (p_value)
+ mask |= 1 << p_bit;
+ else
+ mask &= ~(1 << p_bit);
+ set_collision_mask(mask);
+}
+
+bool GridMap::get_collision_mask_bit(int p_bit) const {
+
+ return get_collision_mask() & (1 << p_bit);
+}
+
+void GridMap::set_collision_layer_bit(int p_bit, bool p_value) {
+
+ uint32_t mask = get_collision_layer();
+ if (p_value)
+ mask |= 1 << p_bit;
+ else
+ mask &= ~(1 << p_bit);
+ set_collision_layer(mask);
+}
+
+bool GridMap::get_collision_layer_bit(int p_bit) const {
+
+ return get_collision_layer() & (1 << p_bit);
+}
+
void GridMap::set_theme(const Ref<MeshLibrary> &p_theme) {
if (!theme.is_null())
@@ -311,6 +321,8 @@ void GridMap::set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot) {
g->dirty = true;
g->static_body = PhysicsServer::get_singleton()->body_create(PhysicsServer::BODY_MODE_STATIC);
PhysicsServer::get_singleton()->body_attach_object_instance_id(g->static_body, get_instance_id());
+ PhysicsServer::get_singleton()->body_set_collision_layer(g->static_body, collision_layer);
+ PhysicsServer::get_singleton()->body_set_collision_mask(g->static_body, collision_mask);
SceneTree *st = SceneTree::get_singleton();
if (st && st->is_debugging_collisions_hint()) {
@@ -575,6 +587,13 @@ bool GridMap::_octant_update(const OctantKey &p_key) {
return false;
}
+void GridMap::_reset_physic_bodies_collision_filters() {
+ for (Map<OctantKey, Octant *>::Element *E = octant_map.front(); E; E = E->next()) {
+ PhysicsServer::get_singleton()->body_set_collision_layer(E->get()->static_body, collision_layer);
+ PhysicsServer::get_singleton()->body_set_collision_mask(E->get()->static_body, collision_mask);
+ }
+}
+
void GridMap::_octant_enter_world(const OctantKey &p_key) {
ERR_FAIL_COND(!octant_map.has(p_key));
@@ -815,12 +834,27 @@ void GridMap::_update_octants_callback() {
void GridMap::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_collision_layer", "layer"), &GridMap::set_collision_layer);
+ ClassDB::bind_method(D_METHOD("get_collision_layer"), &GridMap::get_collision_layer);
+
+ ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &GridMap::set_collision_mask);
+ ClassDB::bind_method(D_METHOD("get_collision_mask"), &GridMap::get_collision_mask);
+
+ ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &GridMap::set_collision_mask_bit);
+ ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &GridMap::get_collision_mask_bit);
+
+ ClassDB::bind_method(D_METHOD("set_collision_layer_bit", "bit", "value"), &GridMap::set_collision_layer_bit);
+ ClassDB::bind_method(D_METHOD("get_collision_layer_bit", "bit"), &GridMap::get_collision_layer_bit);
+
ClassDB::bind_method(D_METHOD("set_theme", "theme"), &GridMap::set_theme);
ClassDB::bind_method(D_METHOD("get_theme"), &GridMap::get_theme);
ClassDB::bind_method(D_METHOD("set_cell_size", "size"), &GridMap::set_cell_size);
ClassDB::bind_method(D_METHOD("get_cell_size"), &GridMap::get_cell_size);
+ ClassDB::bind_method(D_METHOD("set_cell_scale", "scale"), &GridMap::set_cell_scale);
+ ClassDB::bind_method(D_METHOD("get_cell_scale"), &GridMap::get_cell_scale);
+
ClassDB::bind_method(D_METHOD("set_octant_size", "size"), &GridMap::set_octant_size);
ClassDB::bind_method(D_METHOD("get_octant_size"), &GridMap::get_octant_size);
@@ -855,6 +889,18 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_baked_meshes"), &GridMap::clear_baked_meshes);
ClassDB::bind_method(D_METHOD("make_baked_meshes", "gen_lightmap_uv", "lightmap_uv_texel_size"), &GridMap::make_baked_meshes, DEFVAL(false), DEFVAL(0.1));
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "MeshLibrary"), "set_theme", "get_theme");
+ ADD_GROUP("Cell", "cell_");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cell_size"), "set_cell_size", "get_cell_size");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_octant_size", PROPERTY_HINT_RANGE, "1,1024,1"), "set_octant_size", "get_octant_size");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_x"), "set_center_x", "get_center_x");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_y"), "set_center_y", "get_center_y");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_center_z"), "set_center_z", "get_center_z");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "cell_scale"), "set_cell_scale", "get_cell_scale");
+ ADD_GROUP("Collision", "collision_");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_layer", "get_collision_layer");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask");
+
BIND_CONSTANT(INVALID_CELL_ITEM);
}
@@ -1067,6 +1113,9 @@ RID GridMap::get_bake_mesh_instance(int p_idx) {
GridMap::GridMap() {
+ collision_layer = 1;
+ collision_mask = 1;
+
cell_size = Vector3(2, 2, 2);
octant_size = 8;
awaiting_update = false;
diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h
index 18a9551edf..b17fe43ae8 100644
--- a/modules/gridmap/grid_map.h
+++ b/modules/gridmap/grid_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRID_MAP_H
#define GRID_MAP_H
@@ -136,6 +137,9 @@ class GridMap : public Spatial {
OctantKey() { key = 0; }
};
+ uint32_t collision_layer;
+ uint32_t collision_mask;
+
Transform last_transform;
bool _in_tree;
@@ -173,6 +177,7 @@ class GridMap : public Spatial {
return Vector3(p_key.x, p_key.y, p_key.z) * cell_size * octant_size;
}
+ void _reset_physic_bodies_collision_filters();
void _octant_enter_world(const OctantKey &p_key);
void _octant_exit_world(const OctantKey &p_key);
bool _octant_update(const OctantKey &p_key);
@@ -210,6 +215,18 @@ public:
INVALID_CELL_ITEM = -1
};
+ void set_collision_layer(uint32_t p_layer);
+ uint32_t get_collision_layer() const;
+
+ void set_collision_mask(uint32_t p_mask);
+ uint32_t get_collision_mask() const;
+
+ void set_collision_layer_bit(int p_bit, bool p_value);
+ bool get_collision_layer_bit(int p_bit) const;
+
+ void set_collision_mask_bit(int p_bit, bool p_value);
+ bool get_collision_mask_bit(int p_bit) const;
+
void set_theme(const Ref<MeshLibrary> &p_theme);
Ref<MeshLibrary> get_theme() const;
diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp
index dc7dbb0b0d..7b7bc0fa2a 100644
--- a/modules/gridmap/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/grid_map_editor_plugin.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "grid_map_editor_plugin.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/grid_map_editor_plugin.h
index a49b44e7a2..3fc92bf7aa 100644
--- a/modules/gridmap/grid_map_editor_plugin.h
+++ b/modules/gridmap/grid_map_editor_plugin.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRID_MAP_EDITOR_PLUGIN_H
#define GRID_MAP_EDITOR_PLUGIN_H
diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp
index 23a8d16497..a3ceea10af 100644
--- a/modules/gridmap/register_types.cpp
+++ b/modules/gridmap/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#ifndef _3D_DISABLED
#include "class_db.h"
diff --git a/modules/gridmap/register_types.h b/modules/gridmap/register_types.h
index 0e19f1ce8d..4ff107bec8 100644
--- a/modules/gridmap/register_types.h
+++ b/modules/gridmap/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_gridmap_types();
void unregister_gridmap_types();
diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp
index 2b829ef246..3cc362b5d6 100644
--- a/modules/hdr/image_loader_hdr.cpp
+++ b/modules/hdr/image_loader_hdr.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_hdr.h"
#include "os/os.h"
diff --git a/modules/hdr/image_loader_hdr.h b/modules/hdr/image_loader_hdr.h
index 4d4edc4df7..3cce483745 100644
--- a/modules/hdr/image_loader_hdr.h
+++ b/modules/hdr/image_loader_hdr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_HDR_H
#define IMAGE_LOADER_HDR_H
diff --git a/modules/hdr/register_types.cpp b/modules/hdr/register_types.cpp
index 469fdfc85e..8688daad69 100644
--- a/modules/hdr/register_types.cpp
+++ b/modules/hdr/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_hdr.h"
diff --git a/modules/hdr/register_types.h b/modules/hdr/register_types.h
index b3f69405f2..e064f5d945 100644
--- a/modules/hdr/register_types.h
+++ b/modules/hdr/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_hdr_types();
void unregister_hdr_types();
diff --git a/modules/jpg/image_loader_jpegd.cpp b/modules/jpg/image_loader_jpegd.cpp
index b90d968753..0168be3a26 100644
--- a/modules/jpg/image_loader_jpegd.cpp
+++ b/modules/jpg/image_loader_jpegd.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_jpegd.h"
#include "os/os.h"
diff --git a/modules/jpg/image_loader_jpegd.h b/modules/jpg/image_loader_jpegd.h
index b4bcb11239..3e3ac5217f 100644
--- a/modules/jpg/image_loader_jpegd.h
+++ b/modules/jpg/image_loader_jpegd.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_JPG_H
#define IMAGE_LOADER_JPG_H
diff --git a/modules/jpg/register_types.cpp b/modules/jpg/register_types.cpp
index 809c934be4..450ac065f4 100644
--- a/modules/jpg/register_types.cpp
+++ b/modules/jpg/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_jpegd.h"
diff --git a/modules/jpg/register_types.h b/modules/jpg/register_types.h
index d38fb908d3..6f10c18c12 100644
--- a/modules/jpg/register_types.h
+++ b/modules/jpg/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_jpg_types();
void unregister_jpg_types();
diff --git a/modules/mobile_vr/doc_classes/MobileVRInterface.xml b/modules/mobile_vr/doc_classes/MobileVRInterface.xml
index 5d3da0672e..82300e707a 100644
--- a/modules/mobile_vr/doc_classes/MobileVRInterface.xml
+++ b/modules/mobile_vr/doc_classes/MobileVRInterface.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="MobileVRInterface" inherits="ARVRInterface" category="Core" version="3.0-beta">
+<class name="MobileVRInterface" inherits="ARVRInterface" category="Core" version="3.0-stable">
<brief_description>
Generic mobile VR implementation
</brief_description>
diff --git a/modules/mobile_vr/mobile_interface.cpp b/modules/mobile_vr/mobile_interface.cpp
index 4e8894f9fb..6b1c7eb279 100644
--- a/modules/mobile_vr/mobile_interface.cpp
+++ b/modules/mobile_vr/mobile_interface.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -345,7 +345,7 @@ Transform MobileVRInterface::get_transform_for_eye(ARVRInterface::Eyes p_eye, co
if (initialized) {
float world_scale = arvr_server->get_world_scale();
- // we don't need to check for the existance of our HMD, doesn't effect our values...
+ // we don't need to check for the existence of our HMD, doesn't effect our values...
// note * 0.01 to convert cm to m and * 0.5 as we're moving half in each direction...
if (p_eye == ARVRInterface::EYE_LEFT) {
transform_for_eye.origin.x = -(intraocular_dist * 0.01 * 0.5 * world_scale);
diff --git a/modules/mobile_vr/mobile_interface.h b/modules/mobile_vr/mobile_interface.h
index 4a2484667d..bb84281b46 100644
--- a/modules/mobile_vr/mobile_interface.h
+++ b/modules/mobile_vr/mobile_interface.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MOBILE_VR_INTERFACE_H
#define MOBILE_VR_INTERFACE_H
diff --git a/modules/mobile_vr/register_types.cpp b/modules/mobile_vr/register_types.cpp
index 6a513607fa..0655727a4a 100644
--- a/modules/mobile_vr/register_types.cpp
+++ b/modules/mobile_vr/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "mobile_interface.h"
diff --git a/modules/mobile_vr/register_types.h b/modules/mobile_vr/register_types.h
index d9625d1bba..621f8dea80 100644
--- a/modules/mobile_vr/register_types.h
+++ b/modules/mobile_vr/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_mobile_vr_types();
void unregister_mobile_vr_types();
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index f95a3dab2d..3119869569 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "csharp_script.h"
#include <mono/metadata/threads.h>
@@ -175,7 +176,7 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const {
"fixed",
"float",
"for",
- "forech",
+ "foreach",
"goto",
"if",
"implicit",
@@ -221,14 +222,17 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const {
"ushort",
"using",
"virtual",
- "volatile",
"void",
+ "volatile",
"while",
// Contextual keywords. Not reserved words, but I guess we should include
// them because this seems to be used only for syntax highlighting.
"add",
+ "alias",
"ascending",
+ "async",
+ "await",
"by",
"descending",
"dynamic",
@@ -237,10 +241,10 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const {
"get",
"global",
"group",
- "in",
"into",
"join",
"let",
+ "nameof",
"on",
"orderby",
"partial",
@@ -249,6 +253,7 @@ void CSharpLanguage::get_reserved_words(List<String> *p_words) const {
"set",
"value",
"var",
+ "when",
"where",
"yield",
0
@@ -444,6 +449,82 @@ String CSharpLanguage::_get_indentation() const {
return "\t";
}
+Vector<ScriptLanguage::StackInfo> CSharpLanguage::debug_get_current_stack_info() {
+
+#ifdef DEBUG_ENABLED
+ // Printing an error here will result in endless recursion, so we must be careful
+
+ if (!gdmono->is_runtime_initialized() || !GDMono::get_singleton()->get_api_assembly() || !GDMonoUtils::mono_cache.corlib_cache_updated)
+ return Vector<StackInfo>();
+
+ MonoObject *stack_trace = mono_object_new(mono_domain_get(), CACHED_CLASS(System_Diagnostics_StackTrace)->get_mono_ptr());
+
+ MonoBoolean need_file_info = true;
+ void *ctor_args[1] = { &need_file_info };
+
+ CACHED_METHOD(System_Diagnostics_StackTrace, ctor_bool)->invoke_raw(stack_trace, ctor_args);
+
+ Vector<StackInfo> si;
+ si = stack_trace_get_info(stack_trace);
+
+ return si;
+#else
+ return Vector<StackInfo>();
+#endif
+}
+
+#ifdef DEBUG_ENABLED
+Vector<ScriptLanguage::StackInfo> CSharpLanguage::stack_trace_get_info(MonoObject *p_stack_trace) {
+
+ // Printing an error here could result in endless recursion, so we must be careful
+
+ MonoObject *exc = NULL;
+
+ GDMonoUtils::StackTrace_GetFrames st_get_frames = CACHED_METHOD_THUNK(System_Diagnostics_StackTrace, GetFrames);
+ MonoArray *frames = st_get_frames(p_stack_trace, &exc);
+
+ if (exc) {
+ GDMonoUtils::print_unhandled_exception(exc, true /* fail silently to avoid endless recursion */);
+ return Vector<StackInfo>();
+ }
+
+ int frame_count = mono_array_length(frames);
+
+ if (frame_count <= 0)
+ return Vector<StackInfo>();
+
+ GDMonoUtils::DebugUtils_StackFrameInfo get_sf_info = CACHED_METHOD_THUNK(DebuggingUtils, GetStackFrameInfo);
+
+ Vector<StackInfo> si;
+ si.resize(frame_count);
+
+ for (int i = 0; i < frame_count; i++) {
+ StackInfo &sif = si[i];
+ MonoObject *frame = mono_array_get(frames, MonoObject *, i);
+
+ MonoString *file_name;
+ int file_line_num;
+ MonoString *method_decl;
+ get_sf_info(frame, &file_name, &file_line_num, &method_decl, &exc);
+
+ if (exc) {
+ GDMonoUtils::print_unhandled_exception(exc, true /* fail silently to avoid endless recursion */);
+ return Vector<StackInfo>();
+ }
+
+ // TODO
+ // what if the StackFrame method is null (method_decl is empty). should we skip this frame?
+ // can reproduce with a MissingMethodException on internal calls
+
+ sif.file = GDMonoMarshal::mono_string_to_godot(file_name);
+ sif.line = file_line_num;
+ sif.func = GDMonoMarshal::mono_string_to_godot(method_decl);
+ }
+
+ return si;
+}
+#endif
+
void CSharpLanguage::frame() {
const Ref<MonoGCHandle> &task_scheduler_handle = GDMonoUtils::mono_cache.task_scheduler_handle;
@@ -913,19 +994,23 @@ bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) {
ERR_FAIL_COND_V(!script.is_valid(), false);
+ MonoObject *mono_object = get_mono_object();
+ ERR_FAIL_NULL_V(mono_object, false);
+
GDMonoClass *top = script->script_class;
while (top && top != script->native) {
GDMonoField *field = script->script_class->get_field(p_name);
if (field) {
- MonoObject *mono_object = get_mono_object();
-
- ERR_EXPLAIN("Reference has been garbage collected?");
- ERR_FAIL_NULL_V(mono_object, false);
+ field->set_value_from_variant(mono_object, p_value);
+ return true;
+ }
- field->set_value(mono_object, p_value);
+ GDMonoProperty *property = script->script_class->get_property(p_name);
+ if (property) {
+ property->set_value(mono_object, GDMonoMarshal::variant_to_mono_object(p_value));
return true;
}
@@ -934,16 +1019,15 @@ bool CSharpInstance::set(const StringName &p_name, const Variant &p_value) {
// Call _set
- Variant name = p_name;
- const Variant *args[2] = { &name, &p_value };
-
- MonoObject *mono_object = get_mono_object();
top = script->script_class;
while (top && top != script->native) {
GDMonoMethod *method = top->get_method(CACHED_STRING_NAME(_set), 2);
if (method) {
+ Variant name = p_name;
+ const Variant *args[2] = { &name, &p_value };
+
MonoObject *ret = method->invoke(mono_object, args);
if (ret && GDMonoMarshal::unbox<MonoBoolean>(ret) == true)
@@ -960,31 +1044,49 @@ bool CSharpInstance::get(const StringName &p_name, Variant &r_ret) const {
ERR_FAIL_COND_V(!script.is_valid(), false);
+ MonoObject *mono_object = get_mono_object();
+ ERR_FAIL_NULL_V(mono_object, false);
+
GDMonoClass *top = script->script_class;
while (top && top != script->native) {
GDMonoField *field = top->get_field(p_name);
if (field) {
- MonoObject *mono_object = get_mono_object();
+ MonoObject *value = field->get_value(mono_object);
+ r_ret = GDMonoMarshal::mono_object_to_variant(value);
+ return true;
+ }
- ERR_EXPLAIN("Reference has been garbage collected?");
- ERR_FAIL_NULL_V(mono_object, false);
+ GDMonoProperty *property = top->get_property(p_name);
- MonoObject *value = field->get_value(mono_object);
- r_ret = GDMonoMarshal::mono_object_to_variant(value, field->get_type());
+ if (property) {
+ MonoObject *exc = NULL;
+ MonoObject *value = property->get_value(mono_object, &exc);
+ if (exc) {
+ r_ret = Variant();
+ GDMonoUtils::print_unhandled_exception(exc);
+ } else {
+ r_ret = GDMonoMarshal::mono_object_to_variant(value);
+ }
return true;
}
- // Call _get
+ top = top->get_parent_class();
+ }
+
+ // Call _get
+ top = script->script_class;
+
+ while (top && top != script->native) {
GDMonoMethod *method = top->get_method(CACHED_STRING_NAME(_get), 1);
if (method) {
Variant name = p_name;
const Variant *args[1] = { &name };
- MonoObject *ret = method->invoke(get_mono_object(), args);
+ MonoObject *ret = method->invoke(mono_object, args);
if (ret) {
r_ret = GDMonoMarshal::mono_object_to_variant(ret);
@@ -1027,7 +1129,7 @@ bool CSharpInstance::has_method(const StringName &p_method) const {
GDMonoClass *top = script->script_class;
while (top && top != script->native) {
- if (top->has_method(p_method)) {
+ if (top->has_fetched_method_unknown_params(p_method)) {
return true;
}
@@ -1041,10 +1143,13 @@ Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args,
MonoObject *mono_object = get_mono_object();
- ERR_FAIL_NULL_V(mono_object, Variant());
+ if (!mono_object) {
+ r_error.error = Variant::CallError::CALL_ERROR_INSTANCE_IS_NULL;
+ ERR_FAIL_V(Variant());
+ }
if (!script.is_valid())
- return Variant();
+ ERR_FAIL_V(Variant());
GDMonoClass *top = script->script_class;
@@ -1054,8 +1159,10 @@ Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args,
if (method) {
MonoObject *return_value = method->invoke(mono_object, p_args);
+ r_error.error = Variant::CallError::CALL_OK;
+
if (return_value) {
- return GDMonoMarshal::mono_object_to_variant(return_value, method->get_return_type());
+ return GDMonoMarshal::mono_object_to_variant(return_value);
} else {
return Variant();
}
@@ -1186,24 +1293,29 @@ bool CSharpInstance::refcount_decremented() {
return ref_dying;
}
+ScriptInstance::RPCMode CSharpInstance::_member_get_rpc_mode(GDMonoClassMember *p_member) const {
+
+ if (p_member->has_attribute(CACHED_CLASS(RemoteAttribute)))
+ return RPC_MODE_REMOTE;
+ if (p_member->has_attribute(CACHED_CLASS(SyncAttribute)))
+ return RPC_MODE_SYNC;
+ if (p_member->has_attribute(CACHED_CLASS(MasterAttribute)))
+ return RPC_MODE_MASTER;
+ if (p_member->has_attribute(CACHED_CLASS(SlaveAttribute)))
+ return RPC_MODE_SLAVE;
+
+ return RPC_MODE_DISABLED;
+}
+
ScriptInstance::RPCMode CSharpInstance::get_rpc_mode(const StringName &p_method) const {
GDMonoClass *top = script->script_class;
while (top && top != script->native) {
- GDMonoMethod *method = top->get_method(p_method);
-
- if (method) { // TODO should we reject static methods?
- // TODO cache result
- if (method->has_attribute(CACHED_CLASS(RemoteAttribute)))
- return RPC_MODE_REMOTE;
- if (method->has_attribute(CACHED_CLASS(SyncAttribute)))
- return RPC_MODE_SYNC;
- if (method->has_attribute(CACHED_CLASS(MasterAttribute)))
- return RPC_MODE_MASTER;
- if (method->has_attribute(CACHED_CLASS(SlaveAttribute)))
- return RPC_MODE_SLAVE;
- }
+ GDMonoMethod *method = top->get_fetched_method_unknown_params(p_method);
+
+ if (method && !method->is_static())
+ return _member_get_rpc_mode(method);
top = top->get_parent_class();
}
@@ -1218,17 +1330,13 @@ ScriptInstance::RPCMode CSharpInstance::get_rset_mode(const StringName &p_variab
while (top && top != script->native) {
GDMonoField *field = top->get_field(p_variable);
- if (field) { // TODO should we reject static fields?
- // TODO cache result
- if (field->has_attribute(CACHED_CLASS(RemoteAttribute)))
- return RPC_MODE_REMOTE;
- if (field->has_attribute(CACHED_CLASS(SyncAttribute)))
- return RPC_MODE_SYNC;
- if (field->has_attribute(CACHED_CLASS(MasterAttribute)))
- return RPC_MODE_MASTER;
- if (field->has_attribute(CACHED_CLASS(SlaveAttribute)))
- return RPC_MODE_SLAVE;
- }
+ if (field && !field->is_static())
+ return _member_get_rpc_mode(field);
+
+ GDMonoProperty *property = top->get_property(p_variable);
+
+ if (property && !property->is_static())
+ return _member_get_rpc_mode(property);
top = top->get_parent_class();
}
@@ -1353,7 +1461,7 @@ bool CSharpScript::_update_exports() {
// We are creating a temporary new instance of the class here to get the default value
// TODO Workaround. Should be replaced with IL opcodes analysis
- MonoObject *tmp_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_raw());
+ MonoObject *tmp_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_mono_ptr());
if (tmp_object) {
CACHED_FIELD(GodotObject, ptr)->set_value_raw(tmp_object, tmp_object); // FIXME WTF is this workaround
@@ -1376,65 +1484,55 @@ bool CSharpScript::_update_exports() {
GDMonoClass *top = script_class;
while (top && top != native) {
+ PropertyInfo prop_info;
+ bool exported;
+
const Vector<GDMonoField *> &fields = top->get_all_fields();
for (int i = fields.size() - 1; i >= 0; i--) {
GDMonoField *field = fields[i];
- if (field->is_static()) {
- if (field->has_attribute(CACHED_CLASS(ExportAttribute)))
- ERR_PRINTS("Cannot export field because it is static: " + top->get_full_name() + "." + field->get_name());
- continue;
- }
-
- String name = field->get_name();
- StringName cname = name;
+ if (_get_member_export(top, field, prop_info, exported)) {
+ StringName name = field->get_name();
- if (member_info.has(cname))
- continue;
+ if (exported) {
+ member_info[name] = prop_info;
+ exported_members_cache.push_front(prop_info);
- ManagedType field_type = field->get_type();
- Variant::Type type = GDMonoMarshal::managed_to_variant_type(field_type);
+ if (tmp_object) {
+ exported_members_defval_cache[name] = GDMonoMarshal::mono_object_to_variant(field->get_value(tmp_object));
+ }
+ } else {
+ member_info[name] = prop_info;
+ }
+ }
+ }
- if (field->has_attribute(CACHED_CLASS(ExportAttribute))) {
- // Field has Export attribute
- MonoObject *attr = field->get_attribute(CACHED_CLASS(ExportAttribute));
+ const Vector<GDMonoProperty *> &properties = top->get_all_properties();
- PropertyHint hint;
- String hint_string;
+ for (int i = properties.size() - 1; i >= 0; i--) {
+ GDMonoProperty *property = properties[i];
- if (type == Variant::NIL) {
- ERR_PRINTS("Unknown type of exported field: " + top->get_full_name() + "." + field->get_name());
- continue;
- } else if (type == Variant::INT && field_type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(field_type.type_class->get_raw())) {
- type = Variant::INT;
- hint = PROPERTY_HINT_ENUM;
+ if (_get_member_export(top, property, prop_info, exported)) {
+ StringName name = property->get_name();
- Vector<MonoClassField *> fields = field_type.type_class->get_enum_fields();
+ if (exported) {
+ member_info[name] = prop_info;
+ exported_members_cache.push_front(prop_info);
- for (int i = 0; i < fields.size(); i++) {
- if (i > 0)
- hint_string += ",";
- hint_string += mono_field_get_name(fields[i]);
+ if (tmp_object) {
+ MonoObject *exc = NULL;
+ MonoObject *ret = property->get_value(tmp_object, &exc);
+ if (exc) {
+ exported_members_defval_cache[name] = Variant();
+ GDMonoUtils::print_unhandled_exception(exc);
+ } else {
+ exported_members_defval_cache[name] = GDMonoMarshal::mono_object_to_variant(ret);
+ }
}
- } else if (type == Variant::OBJECT && CACHED_CLASS(GodotReference)->is_assignable_from(field_type.type_class)) {
- hint = PROPERTY_HINT_RESOURCE_TYPE;
- hint_string = NATIVE_GDMONOCLASS_NAME(field_type.type_class);
} else {
- hint = PropertyHint(CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr));
- hint_string = CACHED_FIELD(ExportAttribute, hintString)->get_string_value(attr);
+ member_info[name] = prop_info;
}
-
- PropertyInfo prop_info = PropertyInfo(type, name, hint, hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE);
-
- member_info[cname] = prop_info;
- exported_members_cache.push_front(prop_info);
-
- if (tmp_object) {
- exported_members_defval_cache[cname] = GDMonoMarshal::mono_object_to_variant(field->get_value(tmp_object));
- }
- } else {
- member_info[cname] = PropertyInfo(type, name, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_SCRIPT_VARIABLE);
}
}
@@ -1458,6 +1556,79 @@ bool CSharpScript::_update_exports() {
return false;
}
+#ifdef TOOLS_ENABLED
+bool CSharpScript::_get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported) {
+
+ StringName name = p_member->get_name();
+
+ if (p_member->is_static()) {
+ if (p_member->has_attribute(CACHED_CLASS(ExportAttribute)))
+ ERR_PRINTS("Cannot export member because it is static: " + p_class->get_full_name() + "." + name.operator String());
+ return false;
+ }
+
+ if (member_info.has(name))
+ return false;
+
+ ManagedType type;
+
+ if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_FIELD) {
+ type = static_cast<GDMonoField *>(p_member)->get_type();
+ } else if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) {
+ type = static_cast<GDMonoProperty *>(p_member)->get_type();
+ } else {
+ CRASH_NOW();
+ }
+
+ Variant::Type variant_type = GDMonoMarshal::managed_to_variant_type(type);
+
+ if (p_member->has_attribute(CACHED_CLASS(ExportAttribute))) {
+ if (p_member->get_member_type() == GDMonoClassMember::MEMBER_TYPE_PROPERTY) {
+ GDMonoProperty *property = static_cast<GDMonoProperty *>(p_member);
+ if (!property->has_getter() || !property->has_setter()) {
+ ERR_PRINTS("Cannot export property because it does not provide a getter or a setter: " + p_class->get_full_name() + "." + name.operator String());
+ return false;
+ }
+ }
+
+ MonoObject *attr = p_member->get_attribute(CACHED_CLASS(ExportAttribute));
+
+ PropertyHint hint;
+ String hint_string;
+
+ if (variant_type == Variant::NIL) {
+ ERR_PRINTS("Unknown type of exported member: " + p_class->get_full_name() + "." + name.operator String());
+ return false;
+ } else if (variant_type == Variant::INT && type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(type.type_class->get_mono_ptr())) {
+ variant_type = Variant::INT;
+ hint = PROPERTY_HINT_ENUM;
+
+ Vector<MonoClassField *> fields = type.type_class->get_enum_fields();
+
+ for (int i = 0; i < fields.size(); i++) {
+ if (i > 0)
+ hint_string += ",";
+ hint_string += mono_field_get_name(fields[i]);
+ }
+ } else if (variant_type == Variant::OBJECT && CACHED_CLASS(GodotReference)->is_assignable_from(type.type_class)) {
+ hint = PROPERTY_HINT_RESOURCE_TYPE;
+ hint_string = NATIVE_GDMONOCLASS_NAME(type.type_class);
+ } else {
+ hint = PropertyHint(CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr));
+ hint_string = CACHED_FIELD(ExportAttribute, hintString)->get_string_value(attr);
+ }
+
+ r_prop_info = PropertyInfo(variant_type, name.operator String(), hint, hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE);
+ r_exported = true;
+ } else {
+ r_prop_info = PropertyInfo(variant_type, name.operator String(), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_SCRIPT_VARIABLE);
+ r_exported = false;
+ }
+
+ return true;
+}
+#endif
+
void CSharpScript::_clear() {
tool = false;
@@ -1479,7 +1650,7 @@ Variant CSharpScript::call(const StringName &p_method, const Variant **p_args, i
MonoObject *result = method->invoke(NULL, p_args);
if (result) {
- return GDMonoMarshal::mono_object_to_variant(result, method->get_return_type());
+ return GDMonoMarshal::mono_object_to_variant(result);
} else {
return Variant();
}
@@ -1526,7 +1697,7 @@ bool CSharpScript::_set(const StringName &p_name, const Variant &p_value) {
void CSharpScript::_get_property_list(List<PropertyInfo> *p_properties) const {
- p_properties->push_back(PropertyInfo(Variant::STRING, CSharpLanguage::singleton->string_names._script_source, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_properties->push_back(PropertyInfo(Variant::STRING, CSharpLanguage::singleton->string_names._script_source, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
void CSharpScript::_bind_methods() {
@@ -1626,7 +1797,7 @@ CSharpInstance *CSharpScript::_create_instance(const Variant **p_args, int p_arg
/* STEP 2, INITIALIZE AND CONSTRUCT */
- MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_raw());
+ MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, script_class->get_mono_ptr());
if (!mono_object) {
instance->script = Ref<CSharpScript>();
@@ -1764,7 +1935,7 @@ void CSharpScript::set_source_code(const String &p_code) {
bool CSharpScript::has_method(const StringName &p_method) const {
- return script_class->has_method(p_method);
+ return script_class->has_fetched_method_unknown_params(p_method);
}
Error CSharpScript::reload(bool p_keep_state) {
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index 27e68a7a56..1daa25b74e 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CSHARP_SCRIPT_H
#define CSHARP_SCRIPT_H
@@ -104,6 +105,10 @@ class CSharpScript : public Script {
void _clear();
bool _update_exports();
+#ifdef TOOLS_ENABLED
+ bool _get_member_export(GDMonoClass *p_class, GDMonoClassMember *p_member, PropertyInfo &r_prop_info, bool &r_exported);
+#endif
+
CSharpInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, bool p_isref, Variant::CallError &r_error);
Variant _new(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
@@ -178,6 +183,8 @@ class CSharpInstance : public ScriptInstance {
void _call_multilevel(MonoObject *p_mono_object, const StringName &p_method, const Variant **p_args, int p_argcount);
+ RPCMode _member_get_rpc_mode(GDMonoClassMember *p_member) const;
+
public:
MonoObject *get_mono_object() const;
@@ -298,7 +305,7 @@ public:
/* TODO */ virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {}
/* TODO */ virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {}
/* TODO */ virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) { return ""; }
- /* TODO */ virtual Vector<StackInfo> debug_get_current_stack_info() { return Vector<StackInfo>(); }
+ virtual Vector<StackInfo> debug_get_current_stack_info();
/* PROFILING FUNCTIONS */
/* TODO */ virtual void profiling_start() {}
@@ -330,6 +337,10 @@ public:
virtual void *alloc_instance_binding_data(Object *p_object);
virtual void free_instance_binding_data(void *p_data);
+#ifdef DEBUG_ENABLED
+ Vector<StackInfo> stack_trace_get_info(MonoObject *p_stack_trace);
+#endif
+
CSharpLanguage();
~CSharpLanguage();
};
diff --git a/modules/mono/doc_classes/@C#.xml b/modules/mono/doc_classes/@C#.xml
index 5fcbf36a2b..0f33c76eb2 100644
--- a/modules/mono/doc_classes/@C#.xml
+++ b/modules/mono/doc_classes/@C#.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="@C#" category="Core" version="3.0-beta">
+<class name="@C#" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/mono/doc_classes/CSharpScript.xml b/modules/mono/doc_classes/CSharpScript.xml
index 853ef28731..3efe71f1b3 100644
--- a/modules/mono/doc_classes/CSharpScript.xml
+++ b/modules/mono/doc_classes/CSharpScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="CSharpScript" inherits="Script" category="Core" version="3.0-beta">
+<class name="CSharpScript" inherits="Script" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/mono/doc_classes/GodotSharp.xml b/modules/mono/doc_classes/GodotSharp.xml
index 2696a0bb4b..1e5edf2a2a 100644
--- a/modules/mono/doc_classes/GodotSharp.xml
+++ b/modules/mono/doc_classes/GodotSharp.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="GodotSharp" inherits="Object" category="Core" version="3.0-beta">
+<class name="GodotSharp" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index 0e41e00f30..62c7a94755 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "bindings_generator.h"
#ifdef DEBUG_METHODS_ENABLED
@@ -249,8 +250,15 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
const TypeInterface *return_type = _get_type_by_name_or_placeholder(imethod.return_type);
- String im_sig = "IntPtr " CS_PARAM_METHODBIND ", IntPtr " CS_PARAM_INSTANCE;
- String im_unique_sig = imethod.return_type.operator String() + ",IntPtr,IntPtr";
+ String im_sig;
+ String im_unique_sig;
+
+ if (p_itype.is_object_type) {
+ im_sig += "IntPtr " CS_PARAM_METHODBIND ", ";
+ im_unique_sig += imethod.return_type.operator String() + ",IntPtr,IntPtr";
+ }
+
+ im_sig += "IntPtr " CS_PARAM_INSTANCE;
// Get arguments information
int i = 0;
@@ -262,25 +270,37 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
im_sig += " arg";
im_sig += itos(i + 1);
- im_unique_sig += ",";
- im_unique_sig += get_unique_sig(*arg_type);
+ if (p_itype.is_object_type) {
+ im_unique_sig += ",";
+ im_unique_sig += get_unique_sig(*arg_type);
+ }
i++;
}
- // godot_icall_{argc}_{icallcount}
- String icall_method = ICALL_PREFIX + itos(imethod.arguments.size()) + "_" + itos(method_icalls.size());
+ String icall_method = ICALL_PREFIX;
+
+ if (p_itype.is_object_type) {
+ icall_method += itos(imethod.arguments.size()) + "_" + itos(method_icalls.size()); // godot_icall_{argc}_{icallcount}
+ } else {
+ icall_method += p_itype.name + "_" + imethod.name; // godot_icall_{Type}_{method}
+ }
InternalCall im_icall = InternalCall(p_itype.api_type, icall_method, return_type->im_type_out, im_sig, im_unique_sig);
- List<InternalCall>::Element *match = method_icalls.find(im_icall);
+ if (p_itype.is_object_type) {
+ List<InternalCall>::Element *match = method_icalls.find(im_icall);
- if (match) {
- if (p_itype.api_type != ClassDB::API_EDITOR)
- match->get().editor_only = false;
- method_icalls_map.insert(&E->get(), &match->get());
+ if (match) {
+ if (p_itype.api_type != ClassDB::API_EDITOR)
+ match->get().editor_only = false;
+ method_icalls_map.insert(&E->get(), &match->get());
+ } else {
+ List<InternalCall>::Element *added = method_icalls.push_back(im_icall);
+ method_icalls_map.insert(&E->get(), &added->get());
+ }
} else {
- List<InternalCall>::Element *added = method_icalls.push_back(im_icall);
+ List<InternalCall>::Element *added = builtin_method_icalls.push_back(im_icall);
method_icalls_map.insert(&E->get(), &added->get());
}
}
@@ -447,14 +467,14 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo
compile_items.push_back(output_file);
}
- for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next()) {
- const TypeInterface &itype = E->get();
+ for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) {
+ const TypeInterface &itype = E.get();
if (itype.api_type == ClassDB::API_EDITOR)
continue;
- String output_file = path_join(obj_type_dir, E->get().proxy_name + ".cs");
- Error err = _generate_cs_type(E->get(), output_file);
+ String output_file = path_join(obj_type_dir, itype.proxy_name + ".cs");
+ Error err = _generate_cs_type(itype, output_file);
if (err == ERR_SKIP)
continue;
@@ -524,6 +544,8 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo
ADD_INTERNAL_CALL(E->get());
for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next())
ADD_INTERNAL_CALL(E->get());
+ for (const List<InternalCall>::Element *E = builtin_method_icalls.front(); E; E = E->next())
+ ADD_INTERNAL_CALL(E->get());
#undef ADD_INTERNAL_CALL
@@ -579,14 +601,14 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir,
if (!solution.set_path(p_output_dir))
return ERR_FILE_NOT_FOUND;
- for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next()) {
- const TypeInterface &itype = E->get();
+ for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next()) {
+ const TypeInterface &itype = E.get();
if (itype.api_type != ClassDB::API_EDITOR)
continue;
- String output_file = path_join(obj_type_dir, E->get().proxy_name + ".cs");
- Error err = _generate_cs_type(E->get(), output_file);
+ String output_file = path_join(obj_type_dir, itype.proxy_name + ".cs");
+ Error err = _generate_cs_type(itype, output_file);
if (err == ERR_SKIP)
continue;
@@ -615,6 +637,8 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir,
cs_icalls_content.push_back(m_icall.im_sig + ");\n"); \
}
+ // No need to add builtin_method_icalls. Builtin types are core only
+
for (const List<InternalCall>::Element *E = editor_custom_icalls.front(); E; E = E->next())
ADD_INTERNAL_CALL(E->get());
for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next())
@@ -693,9 +717,9 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.push_back(itype.is_singleton ? "static class " : "class ");
output.push_back(itype.proxy_name);
- if (itype.is_singleton || !itype.is_object_type) {
+ if (itype.is_singleton) {
output.push_back("\n");
- } else if (!is_derived_type) {
+ } else if (!is_derived_type || !itype.is_object_type /* assuming only object types inherit */) {
output.push_back(" : IDisposable\n");
} else if (obj_types.has(itype.base_name)) {
output.push_back(" : ");
@@ -837,7 +861,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
// Add the virtual Dispose
- output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
+ output.push_back(MEMBER_BEGIN "protected virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
"if (disposed) return;\n" INDENT3
"if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3 "NativeCalls.godot_icall_");
output.push_back(itype.proxy_name);
@@ -928,7 +952,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
// Add the virtual Dispose
- output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
+ output.push_back(MEMBER_BEGIN "protected virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
"if (disposed) return;\n" INDENT3
"if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3
"if (" CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L4 CS_FIELD_MEMORYOWN
@@ -944,7 +968,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
return ERR_BUG;
}
- Map<StringName, TypeInterface>::Element *object_itype = obj_types.find("Object");
+ OrderedHashMap<StringName, TypeInterface>::Element object_itype = obj_types.find("Object");
if (!object_itype) {
ERR_PRINT("BUG: Object type interface not found!");
@@ -952,7 +976,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
}
output.push_back(MEMBER_BEGIN "public " CS_CLASS_SIGNALAWAITER " ToSignal(");
- output.push_back(object_itype->get().cs_type);
+ output.push_back(object_itype.get().cs_type);
output.push_back(" source, string signal)\n" OPEN_BLOCK_L2
"return new " CS_CLASS_SIGNALAWAITER "(source, signal, this);\n" CLOSE_BLOCK_L2);
}
@@ -998,9 +1022,9 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte
// Search it in base types too
const TypeInterface *current_type = &p_itype;
while (!setter && current_type->base_name != StringName()) {
- Map<StringName, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
- ERR_FAIL_NULL_V(base_match, ERR_BUG);
- current_type = &base_match->get();
+ OrderedHashMap<StringName, TypeInterface>::Element base_match = obj_types.find(current_type->base_name);
+ ERR_FAIL_COND_V(!base_match, ERR_BUG);
+ current_type = &base_match.get();
setter = current_type->find_method_by_name(p_iprop.setter);
}
@@ -1009,9 +1033,9 @@ Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInte
// Search it in base types too
current_type = &p_itype;
while (!getter && current_type->base_name != StringName()) {
- Map<StringName, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
- ERR_FAIL_NULL_V(base_match, ERR_BUG);
- current_type = &base_match->get();
+ OrderedHashMap<StringName, TypeInterface>::Element base_match = obj_types.find(current_type->base_name);
+ ERR_FAIL_COND_V(!base_match, ERR_BUG);
+ current_type = &base_match.get();
getter = current_type->find_method_by_name(p_iprop.getter);
}
@@ -1121,10 +1145,14 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
String method_bind_field = "method_bind_" + itos(p_method_bind_count);
- String icall_params = method_bind_field + ", " + sformat(p_itype.cs_in, "this");
String arguments_sig;
String cs_in_statements;
+ String icall_params;
+ if (p_itype.is_object_type)
+ icall_params += method_bind_field + ", ";
+ icall_params += sformat(p_itype.cs_in, "this");
+
List<String> default_args_doc;
// Retrieve information from the arguments
@@ -1199,9 +1227,8 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
// Generate method
{
- if (!p_imethod.is_virtual && !p_imethod.requires_object_call) {
- p_output.push_back(MEMBER_BEGIN "private ");
- p_output.push_back(p_itype.is_singleton ? "static IntPtr " : "IntPtr ");
+ if (p_itype.is_object_type && !p_imethod.is_virtual && !p_imethod.requires_object_call) {
+ p_output.push_back(MEMBER_BEGIN "private static IntPtr ");
p_output.push_back(method_bind_field + " = " CS_CLASS_NATIVECALLS "." ICALL_GET_METHODBIND "(" BINDINGS_NATIVE_NAME_FIELD ", \"");
p_output.push_back(p_imethod.name);
p_output.push_back("\");\n");
@@ -1323,8 +1350,8 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
generated_icall_funcs.clear();
- for (Map<StringName, TypeInterface>::Element *type_elem = obj_types.front(); type_elem; type_elem = type_elem->next()) {
- const TypeInterface &itype = type_elem->get();
+ for (OrderedHashMap<StringName, TypeInterface>::Element type_elem = obj_types.front(); type_elem; type_elem = type_elem.next()) {
+ const TypeInterface &itype = type_elem.get();
List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls;
@@ -1380,6 +1407,7 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
output.push_back(itos(GDMono::get_singleton()->get_api_editor_hash()) +
"; }\n#endif // TOOLS_ENABLED\n");
output.push_back("void register_generated_icalls() " OPEN_BLOCK);
+ output.push_back("\tgodot_register_header_icalls();");
#define ADD_INTERNAL_CALL_REGISTRATION(m_icall) \
{ \
@@ -1442,6 +1470,9 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
output.push_back("#endif\n");
}
+ for (const List<InternalCall>::Element *E = builtin_method_icalls.front(); E; E = E->next())
+ ADD_INTERNAL_CALL_REGISTRATION(E->get());
+
#undef ADD_INTERNAL_CALL_REGISTRATION
output.push_back(CLOSE_BLOCK "}\n");
@@ -1517,6 +1548,9 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
i++;
}
+ if (!p_itype.is_object_type)
+ return OK; // no auto-generated icall functions for builtin types
+
const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&p_imethod);
ERR_FAIL_NULL_V(match, ERR_BUG);
@@ -1630,20 +1664,20 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
const BindingsGenerator::TypeInterface *BindingsGenerator::_get_type_by_name_or_null(const StringName &p_cname) {
- const Map<StringName, TypeInterface>::Element *match = builtin_types.find(p_cname);
+ const Map<StringName, TypeInterface>::Element *builtin_type_match = builtin_types.find(p_cname);
- if (match)
- return &match->get();
+ if (builtin_type_match)
+ return &builtin_type_match->get();
- match = obj_types.find(p_cname);
+ const OrderedHashMap<StringName, TypeInterface>::Element obj_type_match = obj_types.find(p_cname);
- if (match)
- return &match->get();
+ if (obj_type_match)
+ return &obj_type_match.get();
- match = enum_types.find(p_cname);
+ const Map<StringName, TypeInterface>::Element *enum_match = enum_types.find(p_cname);
- if (match)
- return &match->get();
+ if (enum_match)
+ return &enum_match->get();
return NULL;
}
@@ -1810,7 +1844,7 @@ void BindingsGenerator::_populate_object_type_interfaces() {
imethod.return_type = name_cache.type_void;
// Actually, more methods like this may be added in the future,
- // which could actually will return something differnet.
+ // which could actually will return something different.
// Let's put this to notify us if that ever happens.
if (itype.cname != name_cache.type_Object || imethod.name != "free") {
if (verbose_output) {
@@ -2112,36 +2146,34 @@ void BindingsGenerator::_populate_builtin_type_interfaces() {
#undef INSERT_STRUCT_TYPE
-#define INSERT_PRIMITIVE_TYPE(m_type) \
- { \
- itype = TypeInterface::create_value_type(String(#m_type)); \
- itype.c_arg_in = "&%s"; \
- itype.c_type_in = #m_type; \
- itype.c_type_out = #m_type; \
- itype.im_type_in = #m_type; \
- itype.im_type_out = #m_type; \
- builtin_types.insert(itype.cname, itype); \
- }
-
- INSERT_PRIMITIVE_TYPE(bool)
- //INSERT_PRIMITIVE_TYPE(int)
+ // bool
+ itype = TypeInterface::create_value_type(String("bool"));
+ itype.c_arg_in = "&%s";
+ // /* MonoBoolean <---> bool
+ itype.c_in = "\t%0 %1_in = (%0)%1;\n";
+ itype.c_out = "\treturn (%0)%1;\n";
+ itype.c_type = "bool";
+ // */
+ itype.c_type_in = "MonoBoolean";
+ itype.c_type_out = itype.c_type_in;
+ itype.im_type_in = itype.name;
+ itype.im_type_out = itype.name;
+ builtin_types.insert(itype.cname, itype);
// int
itype = TypeInterface::create_value_type(String("int"));
itype.c_arg_in = "&%s_in";
- //* ptrcall only supports int64_t and uint64_t
+ // /* ptrcall only supports int64_t and uint64_t
itype.c_in = "\t%0 %1_in = (%0)%1;\n";
itype.c_out = "\treturn (%0)%1;\n";
itype.c_type = "int64_t";
- //*/
- itype.c_type_in = itype.name;
- itype.c_type_out = itype.name;
+ // */
+ itype.c_type_in = "int32_t";
+ itype.c_type_out = itype.c_type_in;
itype.im_type_in = itype.name;
itype.im_type_out = itype.name;
builtin_types.insert(itype.cname, itype);
-#undef INSERT_PRIMITIVE_TYPE
-
// real_t
itype = TypeInterface();
#ifdef REAL_T_IS_DOUBLE
@@ -2483,8 +2515,8 @@ void BindingsGenerator::initialize() {
_generate_header_icalls();
- for (Map<StringName, TypeInterface>::Element *E = obj_types.front(); E; E = E->next())
- _generate_method_icalls(E->get());
+ for (OrderedHashMap<StringName, TypeInterface>::Element E = obj_types.front(); E; E = E.next())
+ _generate_method_icalls(E.get());
_generate_method_icalls(builtin_types["NodePath"]);
_generate_method_icalls(builtin_types["RID"]);
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index 9da7add867..4ab8d86cf3 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BINDINGS_GENERATOR_H
#define BINDINGS_GENERATOR_H
@@ -428,10 +429,11 @@ class BindingsGenerator {
static bool verbose_output;
+ OrderedHashMap<StringName, TypeInterface> obj_types;
+
Map<StringName, TypeInterface> placeholder_types;
Map<StringName, TypeInterface> builtin_types;
Map<StringName, TypeInterface> enum_types;
- Map<StringName, TypeInterface> obj_types;
List<EnumInterface> global_enums;
List<ConstantInterface> global_constants;
@@ -439,6 +441,7 @@ class BindingsGenerator {
Map<StringName, String> extra_members;
List<InternalCall> method_icalls;
+ List<InternalCall> builtin_method_icalls;
Map<const MethodInterface *, const InternalCall *> method_icalls_map;
List<const InternalCall *> generated_icall_funcs;
diff --git a/modules/mono/editor/csharp_project.cpp b/modules/mono/editor/csharp_project.cpp
index 89e72e5c4b..e4269b0aec 100644
--- a/modules/mono/editor/csharp_project.cpp
+++ b/modules/mono/editor/csharp_project.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "csharp_project.h"
#include "os/os.h"
diff --git a/modules/mono/editor/csharp_project.h b/modules/mono/editor/csharp_project.h
index 59277664b2..381dd17e02 100644
--- a/modules/mono/editor/csharp_project.h
+++ b/modules/mono/editor/csharp_project.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CSHARP_PROJECT_H
#define CSHARP_PROJECT_H
diff --git a/modules/mono/editor/godotsharp_builds.cpp b/modules/mono/editor/godotsharp_builds.cpp
index 58d26a0f83..6b41b10981 100644
--- a/modules/mono/editor/godotsharp_builds.cpp
+++ b/modules/mono/editor/godotsharp_builds.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "godotsharp_builds.h"
#include "main/main.h"
@@ -446,7 +447,7 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) {
GDMonoClass *klass = GDMono::get_singleton()->get_editor_tools_assembly()->get_class("GodotSharpTools.Build", "BuildInstance");
- MonoObject *mono_object = mono_object_new(mono_domain_get(), klass->get_raw());
+ MonoObject *mono_object = mono_object_new(mono_domain_get(), klass->get_mono_ptr());
// Construct
diff --git a/modules/mono/editor/godotsharp_builds.h b/modules/mono/editor/godotsharp_builds.h
index 956f8f6253..5d2390ecd9 100644
--- a/modules/mono/editor/godotsharp_builds.h
+++ b/modules/mono/editor/godotsharp_builds.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOTSHARP_BUILDS_H
#define GODOTSHARP_BUILDS_H
diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp
index f964fac8e9..0ef3adfdd0 100644
--- a/modules/mono/editor/godotsharp_editor.cpp
+++ b/modules/mono/editor/godotsharp_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "godotsharp_editor.h"
#include "core/os/os.h"
@@ -111,6 +112,21 @@ void GodotSharpEditor::_remove_create_sln_menu_option() {
bottom_panel_btn->show();
}
+void GodotSharpEditor::_show_about_dialog() {
+
+ bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start");
+ about_dialog_checkbox->set_pressed(show_on_start);
+ about_dialog->popup_centered_minsize();
+}
+
+void GodotSharpEditor::_toggle_about_dialog_on_start(bool p_enabled) {
+
+ bool show_on_start = EDITOR_GET("mono/editor/show_info_on_start");
+ if (show_on_start != p_enabled) {
+ EditorSettings::get_singleton()->set_setting("mono/editor/show_info_on_start", p_enabled);
+ }
+}
+
void GodotSharpEditor::_menu_option_pressed(int p_id) {
switch (p_id) {
@@ -118,15 +134,37 @@ void GodotSharpEditor::_menu_option_pressed(int p_id) {
_create_project_solution();
} break;
+ case MENU_ABOUT_CSHARP: {
+
+ _show_about_dialog();
+ } break;
default:
ERR_FAIL();
}
}
+void GodotSharpEditor::_notification(int p_notification) {
+
+ switch (p_notification) {
+
+ case NOTIFICATION_READY: {
+
+ bool show_info_dialog = EDITOR_GET("mono/editor/show_info_on_start");
+ if (show_info_dialog) {
+ about_dialog->set_exclusive(true);
+ _show_about_dialog();
+ // Once shown a first time, it can be seen again via the Mono menu - it doesn't have to be exclusive then.
+ about_dialog->set_exclusive(false);
+ }
+ }
+ }
+}
+
void GodotSharpEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_create_project_solution"), &GodotSharpEditor::_create_project_solution);
ClassDB::bind_method(D_METHOD("_remove_create_sln_menu_option"), &GodotSharpEditor::_remove_create_sln_menu_option);
+ ClassDB::bind_method(D_METHOD("_toggle_about_dialog_on_start"), &GodotSharpEditor::_toggle_about_dialog_on_start);
ClassDB::bind_method(D_METHOD("_menu_option_pressed", "id"), &GodotSharpEditor::_menu_option_pressed);
}
@@ -150,7 +188,7 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int
if (p_line >= 0) {
args.push_back("-g");
- args.push_back(script_path + ":" + itos(p_line) + ":" + itos(p_col));
+ args.push_back(script_path + ":" + itos(p_line + 1) + ":" + itos(p_col));
} else {
args.push_back(script_path);
}
@@ -169,6 +207,11 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int
monodevel_instance = memnew(MonoDevelopInstance(GodotSharpDirs::get_project_sln_path()));
String script_path = ProjectSettings::get_singleton()->globalize_path(p_script->get_path());
+
+ if (p_line >= 0) {
+ script_path += ";" + itos(p_line + 1) + ";" + itos(p_col);
+ }
+
monodevel_instance->execute(script_path);
} break;
default:
@@ -204,6 +247,55 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) {
menu_button->set_text(TTR("Mono"));
menu_popup = menu_button->get_popup();
+ // TODO: Remove or edit this info dialog once Mono support is no longer in alpha
+ {
+ menu_popup->add_item(TTR("About C# support"), MENU_ABOUT_CSHARP);
+ about_dialog = memnew(AcceptDialog);
+ editor->get_gui_base()->add_child(about_dialog);
+ about_dialog->set_title("Important: C# support is not feature-complete");
+
+ // We don't use set_text() as the default AcceptDialog Label doesn't play well with the TextureRect and CheckBox
+ // we'll add. Instead we add containers and a new autowrapped Label inside.
+
+ // Main VBoxContainer (icon + label on top, checkbox at bottom)
+ VBoxContainer *about_vbc = memnew(VBoxContainer);
+ about_dialog->add_child(about_vbc);
+
+ // HBoxContainer for icon + label
+ HBoxContainer *about_hbc = memnew(HBoxContainer);
+ about_vbc->add_child(about_hbc);
+
+ TextureRect *about_icon = memnew(TextureRect);
+ about_hbc->add_child(about_icon);
+ Ref<Texture> about_icon_tex = about_icon->get_icon("NodeWarning", "EditorIcons");
+ about_icon->set_texture(about_icon_tex);
+
+ Label *about_label = memnew(Label);
+ about_hbc->add_child(about_label);
+ about_label->set_custom_minimum_size(Size2(600, 150) * EDSCALE);
+ about_label->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ about_label->set_autowrap(true);
+ String about_text =
+ String("C# support in Godot Engine is a brand new feature and a work in progress.\n") +
+ "It is at the alpha stage and thus not suitable for use in production.\n\n" +
+ "As of Godot 3.0, C# support is not feature-complete and can crash in some situations. " +
+ "Bugs and usability issues will be addressed gradually over 3.0.x and 3.x releases.\n" +
+ "The main missing feature is the ability to export games using C# assemblies - you will therefore be able to develop and run games in the editor, " +
+ "but not to share them as standalone binaries. This feature is of course high on the priority list and should be available in 3.0.1.\n\n" +
+ "If you experience issues with this Mono build, please report them on Godot's issue tracker with details about your system, Mono version, IDE, etc.:\n\n" +
+ " https://github.com/godotengine/godot/issues\n\n" +
+ "Your critical feedback at this stage will play a great role in shaping the C# support in future releases, so thank you!";
+ about_label->set_text(about_text);
+
+ EDITOR_DEF("mono/editor/show_info_on_start", true);
+
+ // CheckBox in main container
+ about_dialog_checkbox = memnew(CheckBox);
+ about_vbc->add_child(about_dialog_checkbox);
+ about_dialog_checkbox->set_text("Show this warning when starting the editor");
+ about_dialog_checkbox->connect("toggled", this, "_toggle_about_dialog_on_start");
+ }
+
String sln_path = GodotSharpDirs::get_project_sln_path();
String csproj_path = GodotSharpDirs::get_project_csproj_path();
diff --git a/modules/mono/editor/godotsharp_editor.h b/modules/mono/editor/godotsharp_editor.h
index f9b4fb42fb..81c49aec30 100644
--- a/modules/mono/editor/godotsharp_editor.h
+++ b/modules/mono/editor/godotsharp_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOTSHARP_EDITOR_H
#define GODOTSHARP_EDITOR_H
@@ -43,6 +44,8 @@ class GodotSharpEditor : public Node {
PopupMenu *menu_popup;
AcceptDialog *error_dialog;
+ AcceptDialog *about_dialog;
+ CheckBox *about_dialog_checkbox;
ToolButton *bottom_panel_btn;
@@ -53,17 +56,21 @@ class GodotSharpEditor : public Node {
bool _create_project_solution();
void _remove_create_sln_menu_option();
+ void _show_about_dialog();
+ void _toggle_about_dialog_on_start(bool p_enabled);
void _menu_option_pressed(int p_id);
static GodotSharpEditor *singleton;
protected:
+ void _notification(int p_notification);
static void _bind_methods();
public:
enum MenuOptions {
- MENU_CREATE_SLN
+ MENU_CREATE_SLN,
+ MENU_ABOUT_CSHARP,
};
enum ExternalEditor {
diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp
index 7c8d822037..43689548b5 100644
--- a/modules/mono/editor/mono_bottom_panel.cpp
+++ b/modules/mono/editor/mono_bottom_panel.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mono_bottom_panel.h"
#include "../csharp_script.h"
diff --git a/modules/mono/editor/mono_bottom_panel.h b/modules/mono/editor/mono_bottom_panel.h
index d7573361ab..a44d3a9af8 100644
--- a/modules/mono/editor/mono_bottom_panel.h
+++ b/modules/mono/editor/mono_bottom_panel.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MONO_BOTTOM_PANEL_H
#define MONO_BOTTOM_PANEL_H
diff --git a/modules/mono/editor/mono_build_info.h b/modules/mono/editor/mono_build_info.h
index 115fc9ea55..4806764a61 100644
--- a/modules/mono/editor/mono_build_info.h
+++ b/modules/mono/editor/mono_build_info.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MONO_BUILD_INFO_H
#define MONO_BUILD_INFO_H
diff --git a/modules/mono/editor/monodevelop_instance.cpp b/modules/mono/editor/monodevelop_instance.cpp
index 57b3382bff..48a285561d 100644
--- a/modules/mono/editor/monodevelop_instance.cpp
+++ b/modules/mono/editor/monodevelop_instance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "monodevelop_instance.h"
#include "../mono_gd/gd_mono.h"
@@ -34,6 +35,8 @@
void MonoDevelopInstance::execute(const Vector<String> &p_files) {
+ _GDMONO_SCOPE_DOMAIN_(TOOLS_DOMAIN)
+
ERR_FAIL_NULL(execute_method);
ERR_FAIL_COND(gc_handle.is_null());
@@ -62,7 +65,7 @@ MonoDevelopInstance::MonoDevelopInstance(const String &p_solution) {
GDMonoClass *klass = GDMono::get_singleton()->get_editor_tools_assembly()->get_class("GodotSharpTools.Editor", "MonoDevelopInstance");
- MonoObject *obj = mono_object_new(TOOLS_DOMAIN, klass->get_raw());
+ MonoObject *obj = mono_object_new(TOOLS_DOMAIN, klass->get_mono_ptr());
GDMonoMethod *ctor = klass->get_method(".ctor", 1);
MonoObject *ex = NULL;
diff --git a/modules/mono/editor/monodevelop_instance.h b/modules/mono/editor/monodevelop_instance.h
index 783d12325f..7e8a76b595 100644
--- a/modules/mono/editor/monodevelop_instance.h
+++ b/modules/mono/editor/monodevelop_instance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MONODEVELOP_INSTANCE_H
#define MONODEVELOP_INSTANCE_H
diff --git a/modules/mono/editor/net_solution.cpp b/modules/mono/editor/net_solution.cpp
index b9df5b5327..dab96e44e9 100644
--- a/modules/mono/editor/net_solution.cpp
+++ b/modules/mono/editor/net_solution.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "net_solution.h"
#include "os/dir_access.h"
diff --git a/modules/mono/editor/net_solution.h b/modules/mono/editor/net_solution.h
index 21af1938cb..293e86917a 100644
--- a/modules/mono/editor/net_solution.h
+++ b/modules/mono/editor/net_solution.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NET_SOLUTION_H
#define NET_SOLUTION_H
diff --git a/modules/mono/glue/builtin_types_glue.h b/modules/mono/glue/builtin_types_glue.h
new file mode 100644
index 0000000000..460de84b65
--- /dev/null
+++ b/modules/mono/glue/builtin_types_glue.h
@@ -0,0 +1,59 @@
+#ifndef BUILTIN_TYPES_GLUE_H
+#define BUILTIN_TYPES_GLUE_H
+
+#include "core/node_path.h"
+#include "core/rid.h"
+
+#include <mono/metadata/object.h>
+
+#include "../mono_gd/gd_mono_marshal.h"
+
+MonoBoolean godot_icall_NodePath_is_absolute(NodePath *p_ptr) {
+ return (MonoBoolean)p_ptr->is_absolute();
+}
+
+uint32_t godot_icall_NodePath_get_name_count(NodePath *p_ptr) {
+ return p_ptr->get_name_count();
+}
+
+MonoString *godot_icall_NodePath_get_name(NodePath *p_ptr, uint32_t p_idx) {
+ return GDMonoMarshal::mono_string_from_godot(p_ptr->get_name(p_idx));
+}
+
+uint32_t godot_icall_NodePath_get_subname_count(NodePath *p_ptr) {
+ return p_ptr->get_subname_count();
+}
+
+MonoString *godot_icall_NodePath_get_subname(NodePath *p_ptr, uint32_t p_idx) {
+ return GDMonoMarshal::mono_string_from_godot(p_ptr->get_subname(p_idx));
+}
+
+MonoString *godot_icall_NodePath_get_concatenated_subnames(NodePath *p_ptr) {
+ return GDMonoMarshal::mono_string_from_godot(p_ptr->get_concatenated_subnames());
+}
+
+NodePath *godot_icall_NodePath_get_as_property_path(NodePath *p_ptr) {
+ return memnew(NodePath(p_ptr->get_as_property_path()));
+}
+
+MonoBoolean godot_icall_NodePath_is_empty(NodePath *p_ptr) {
+ return (MonoBoolean)p_ptr->is_empty();
+}
+
+uint32_t godot_icall_RID_get_id(RID *p_ptr) {
+ return p_ptr->get_id();
+}
+
+void godot_register_builtin_type_icalls() {
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_as_property_path", (void *)godot_icall_NodePath_get_as_property_path);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_concatenated_subnames", (void *)godot_icall_NodePath_get_concatenated_subnames);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_name", (void *)godot_icall_NodePath_get_name);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_name_count", (void *)godot_icall_NodePath_get_name_count);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_subname", (void *)godot_icall_NodePath_get_subname);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_get_subname_count", (void *)godot_icall_NodePath_get_subname_count);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_is_absolute", (void *)godot_icall_NodePath_is_absolute);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_NodePath_is_empty", (void *)godot_icall_NodePath_is_empty);
+ mono_add_internal_call("Godot.NativeCalls::godot_icall_RID_get_id", (void *)godot_icall_RID_get_id);
+}
+
+#endif // BUILTIN_TYPES_GLUE_H
diff --git a/modules/mono/glue/cs_files/Color.cs b/modules/mono/glue/cs_files/Color.cs
index db0e1fb744..f9e31e9703 100644
--- a/modules/mono/glue/cs_files/Color.cs
+++ b/modules/mono/glue/cs_files/Color.cs
@@ -336,7 +336,7 @@ namespace Godot
this.r = (rgba & 0xFF) / 255.0f;
}
- private static float _parse_col(string str, int ofs)
+ private static int _parse_col(string str, int ofs)
{
int ig = 0;
@@ -415,17 +415,17 @@ namespace Godot
if (alpha)
{
- if ((int)_parse_col(color, 0) < 0)
+ if (_parse_col(color, 0) < 0)
return false;
}
int from = alpha ? 2 : 0;
- if ((int)_parse_col(color, from + 0) < 0)
+ if (_parse_col(color, from + 0) < 0)
return false;
- if ((int)_parse_col(color, from + 2) < 0)
+ if (_parse_col(color, from + 2) < 0)
return false;
- if ((int)_parse_col(color, from + 4) < 0)
+ if (_parse_col(color, from + 4) < 0)
return false;
return true;
@@ -467,10 +467,10 @@ namespace Godot
if (alpha)
{
- a = _parse_col(rgba, 0);
+ a = _parse_col(rgba, 0) / 255f;
if (a < 0)
- throw new ArgumentOutOfRangeException("Invalid color code. Alpha is " + a + " but zero or greater is expected: " + rgba);
+ throw new ArgumentOutOfRangeException("Invalid color code. Alpha part is not valid hexadecimal: " + rgba);
}
else
{
@@ -479,20 +479,20 @@ namespace Godot
int from = alpha ? 2 : 0;
- r = _parse_col(rgba, from + 0);
+ r = _parse_col(rgba, from + 0) / 255f;
if (r < 0)
- throw new ArgumentOutOfRangeException("Invalid color code. Red is " + r + " but zero or greater is expected: " + rgba);
+ throw new ArgumentOutOfRangeException("Invalid color code. Red part is not valid hexadecimal: " + rgba);
- g = _parse_col(rgba, from + 2);
+ g = _parse_col(rgba, from + 2) / 255f;
if (g < 0)
- throw new ArgumentOutOfRangeException("Invalid color code. Green is " + g + " but zero or greater is expected: " + rgba);
+ throw new ArgumentOutOfRangeException("Invalid color code. Green part is not valid hexadecimal: " + rgba);
- b = _parse_col(rgba, from + 4);
+ b = _parse_col(rgba, from + 4) / 255f;
if (b < 0)
- throw new ArgumentOutOfRangeException("Invalid color code. Blue is " + b + " but zero or greater is expected: " + rgba);
+ throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba);
}
public static bool operator ==(Color left, Color right)
diff --git a/modules/mono/glue/cs_files/DebuggingUtils.cs b/modules/mono/glue/cs_files/DebuggingUtils.cs
new file mode 100644
index 0000000000..ffaaf00837
--- /dev/null
+++ b/modules/mono/glue/cs_files/DebuggingUtils.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Diagnostics;
+using System.Reflection;
+using System.Text;
+
+namespace Godot
+{
+ internal static class DebuggingUtils
+ {
+ internal static void AppendTypeName(this StringBuilder sb, Type type)
+ {
+ if (type.IsPrimitive)
+ sb.Append(type.Name);
+ else if (type == typeof(void))
+ sb.Append("void");
+ else
+ sb.Append(type.ToString());
+
+ sb.Append(" ");
+ }
+
+ public static void GetStackFrameInfo(StackFrame frame, out string fileName, out int fileLineNumber, out string methodDecl)
+ {
+ fileName = frame.GetFileName();
+ fileLineNumber = frame.GetFileLineNumber();
+
+ MethodBase methodBase = frame.GetMethod();
+
+ if (methodBase == null)
+ {
+ methodDecl = string.Empty;
+ return;
+ }
+
+ StringBuilder sb = new StringBuilder();
+
+ if (methodBase is MethodInfo)
+ sb.AppendTypeName(((MethodInfo)methodBase).ReturnType);
+
+ sb.Append(methodBase.DeclaringType.FullName);
+ sb.Append(".");
+ sb.Append(methodBase.Name);
+
+ if (methodBase.IsGenericMethod)
+ {
+ Type[] genericParams = methodBase.GetGenericArguments();
+
+ sb.Append("<");
+
+ for (int j = 0; j < genericParams.Length; j++)
+ {
+ if (j > 0)
+ sb.Append(", ");
+
+ sb.AppendTypeName(genericParams[j]);
+ }
+
+ sb.Append(">");
+ }
+
+ sb.Append("(");
+
+ bool varArgs = (methodBase.CallingConvention & CallingConventions.VarArgs) != 0;
+
+ ParameterInfo[] parameter = methodBase.GetParameters();
+
+ for (int i = 0; i < parameter.Length; i++)
+ {
+ if (i > 0)
+ sb.Append(", ");
+
+ if (i == parameter.Length - 1 && varArgs)
+ sb.Append("params ");
+
+ sb.AppendTypeName(parameter[i].ParameterType);
+ }
+
+ sb.Append(")");
+
+ methodDecl = sb.ToString();
+ }
+ }
+}
diff --git a/modules/mono/glue/cs_files/Plane.cs b/modules/mono/glue/cs_files/Plane.cs
index 6365e71826..b347c0835a 100644
--- a/modules/mono/glue/cs_files/Plane.cs
+++ b/modules/mono/glue/cs_files/Plane.cs
@@ -91,7 +91,7 @@ namespace Godot
float dist = (normal.Dot(from) - d) / den;
- // This is a ray, before the emiting pos (from) does not exist
+ // This is a ray, before the emitting pos (from) does not exist
if (dist > Mathf.Epsilon)
return new Vector3();
diff --git a/modules/mono/glue/glue_header.h b/modules/mono/glue/glue_header.h
index 1d64fa4d72..cedc8e9992 100644
--- a/modules/mono/glue/glue_header.h
+++ b/modules/mono/glue/glue_header.h
@@ -27,6 +27,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#include "builtin_types_glue.h"
+
#include "../csharp_script.h"
#include "../mono_gd/gd_mono_class.h"
#include "../mono_gd/gd_mono_internals.h"
@@ -90,12 +93,6 @@ MonoString *godot_icall_NodePath_operator_String(NodePath *p_np) {
return GDMonoMarshal::mono_string_from_godot(p_np->operator String());
}
-MonoArray *godot_icall_String_md5_buffer(MonoString *p_str) {
- Vector<uint8_t> ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_buffer();
- // TODO Check possible Array/Vector<uint8_t> problem?
- return GDMonoMarshal::Array_to_mono_array(Variant(ret));
-}
-
// -- RID --
RID *godot_icall_RID_Ctor(Object *p_from) {
@@ -114,6 +111,12 @@ void godot_icall_RID_Dtor(RID *p_ptr) {
// -- String --
+MonoArray *godot_icall_String_md5_buffer(MonoString *p_str) {
+ Vector<uint8_t> ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_buffer();
+ // TODO Check possible Array/Vector<uint8_t> problem?
+ return GDMonoMarshal::Array_to_mono_array(Variant(ret));
+}
+
MonoString *godot_icall_String_md5_text(MonoString *p_str) {
String ret = GDMonoMarshal::mono_string_to_godot(p_str).md5_text();
return GDMonoMarshal::mono_string_from_godot(ret);
@@ -302,3 +305,7 @@ MonoObject *godot_icall_Godot_weakref(Object *p_obj) {
return GDMonoUtils::create_managed_for_godot_object(CACHED_CLASS(WeakRef), Reference::get_class_static(), Object::cast_to<Object>(wref.ptr()));
}
+
+void godot_register_header_icalls() {
+ godot_register_builtin_type_icalls();
+}
diff --git a/modules/mono/godotsharp_defs.h b/modules/mono/godotsharp_defs.h
index 1679eb6242..4c26c3e6bd 100644
--- a/modules/mono/godotsharp_defs.h
+++ b/modules/mono/godotsharp_defs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOTSHARP_DEFS_H
#define GODOTSHARP_DEFS_H
diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp
index a2965080d6..92c5cdc5c1 100644
--- a/modules/mono/godotsharp_dirs.cpp
+++ b/modules/mono/godotsharp_dirs.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "godotsharp_dirs.h"
#include "os/os.h"
diff --git a/modules/mono/godotsharp_dirs.h b/modules/mono/godotsharp_dirs.h
index 0e484fea91..e87b5a4150 100644
--- a/modules/mono/godotsharp_dirs.h
+++ b/modules/mono/godotsharp_dirs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GODOTSHARP_DIRS_H
#define GODOTSHARP_DIRS_H
diff --git a/modules/mono/mono_gc_handle.cpp b/modules/mono/mono_gc_handle.cpp
index 5ae12f5ebf..4e82bcd03e 100644
--- a/modules/mono/mono_gc_handle.cpp
+++ b/modules/mono/mono_gc_handle.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mono_gc_handle.h"
#include "mono_gd/gd_mono.h"
diff --git a/modules/mono/mono_gc_handle.h b/modules/mono/mono_gc_handle.h
index 565f5d4f76..9cb3ef0fbb 100644
--- a/modules/mono/mono_gc_handle.h
+++ b/modules/mono/mono_gc_handle.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CSHARP_GC_HANDLE_H
#define CSHARP_GC_HANDLE_H
diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp
index 5b65f020fc..f5febd415b 100644
--- a/modules/mono/mono_gd/gd_mono.cpp
+++ b/modules/mono/mono_gd/gd_mono.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono.h"
#include <mono/metadata/exception.h>
@@ -52,8 +53,7 @@ void gdmono_unhandled_exception_hook(MonoObject *exc, void *user_data) {
(void)user_data; // UNUSED
- ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
- mono_print_unhandled_exception(exc);
+ GDMonoUtils::print_unhandled_exception(exc);
abort();
}
@@ -226,7 +226,7 @@ void GDMono::initialize() {
mono_install_unhandled_exception_hook(gdmono_unhandled_exception_hook, NULL);
- OS::get_singleton()->print("Mono: ALL IS GOOD\n");
+ OS::get_singleton()->print("Mono: INITIALIZED\n");
}
#ifndef MONO_GLUE_DISABLED
@@ -696,11 +696,13 @@ bool _GodotSharp::is_domain_loaded() {
return GDMono::get_singleton()->get_scripts_domain() != NULL;
}
-#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \
- m_queue.push_back(m_inst); \
- if (queue_empty) { \
- queue_empty = false; \
- call_deferred("_dispose_callback"); \
+#define ENQUEUE_FOR_DISPOSAL(m_queue, m_inst) \
+ m_queue.push_back(m_inst); \
+ if (queue_empty) { \
+ queue_empty = false; \
+ if (!is_finalizing_domain()) { /* call_deferred may not be safe here */ \
+ call_deferred("_dispose_callback"); \
+ } \
}
void _GodotSharp::queue_dispose(MonoObject *p_mono_object, Object *p_object) {
diff --git a/modules/mono/mono_gd/gd_mono.h b/modules/mono/mono_gd/gd_mono.h
index c565e26de6..67251778c6 100644
--- a/modules/mono/mono_gd/gd_mono.h
+++ b/modules/mono/mono_gd/gd_mono.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_H
#define GD_MONO_H
@@ -112,14 +113,6 @@ public:
#endif
#endif
- enum MemberVisibility {
- PRIVATE,
- PROTECTED_AND_INTERNAL, // FAM_AND_ASSEM
- INTERNAL, // ASSEMBLY
- PROTECTED, // FAMILY
- PUBLIC
- };
-
static GDMono *get_singleton() { return singleton; }
// Do not use these, unless you know what you're doing
diff --git a/modules/mono/mono_gd/gd_mono_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp
index 7a1bf99a36..ba56ed6ed5 100644
--- a/modules/mono/mono_gd/gd_mono_assembly.cpp
+++ b/modules/mono/mono_gd/gd_mono_assembly.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_assembly.h"
#include <mono/metadata/mono-debug.h>
@@ -318,7 +319,7 @@ GDMonoClass *GDMonoAssembly::get_object_derived_class(const StringName &p_class)
void *iter = NULL;
while (true) {
- MonoClass *raw_nested = mono_class_get_nested_types(current_nested->get_raw(), &iter);
+ MonoClass *raw_nested = mono_class_get_nested_types(current_nested->get_mono_ptr(), &iter);
if (!raw_nested)
break;
diff --git a/modules/mono/mono_gd/gd_mono_assembly.h b/modules/mono/mono_gd/gd_mono_assembly.h
index 9f38202758..8e7aa701bf 100644
--- a/modules/mono/mono_gd/gd_mono_assembly.h
+++ b/modules/mono/mono_gd/gd_mono_assembly.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_ASSEMBLY_H
#define GD_MONO_ASSEMBLY_H
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index 2bcce86d8c..b826352f02 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_class.h"
#include <mono/metadata/attrdefs.h>
@@ -35,7 +36,7 @@
MonoType *GDMonoClass::get_raw_type(GDMonoClass *p_class) {
- return mono_class_get_type(p_class->get_raw());
+ return mono_class_get_type(p_class->get_mono_ptr());
}
bool GDMonoClass::is_assignable_from(GDMonoClass *p_from) const {
@@ -74,7 +75,7 @@ Vector<MonoClassField *> GDMonoClass::get_enum_fields() {
void *iter = NULL;
MonoClassField *raw_field = NULL;
- while ((raw_field = mono_class_get_fields(get_raw(), &iter)) != NULL) {
+ while ((raw_field = mono_class_get_fields(get_mono_ptr(), &iter)) != NULL) {
uint32_t field_flags = mono_field_get_flags(raw_field);
// Enums have an instance field named value__ which holds the value of the enum.
@@ -88,11 +89,6 @@ Vector<MonoClassField *> GDMonoClass::get_enum_fields() {
}
#endif
-bool GDMonoClass::has_method(const StringName &p_name) {
-
- return get_method(p_name) != NULL;
-}
-
bool GDMonoClass::has_attribute(GDMonoClass *p_attr_class) {
#ifdef DEBUG_ENABLED
@@ -105,7 +101,7 @@ bool GDMonoClass::has_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return false;
- return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr());
}
MonoObject *GDMonoClass::get_attribute(GDMonoClass *p_attr_class) {
@@ -120,14 +116,14 @@ MonoObject *GDMonoClass::get_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return NULL;
- return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr());
}
void GDMonoClass::fetch_attributes() {
ERR_FAIL_COND(attributes != NULL);
- attributes = mono_custom_attrs_from_class(get_raw());
+ attributes = mono_custom_attrs_from_class(get_mono_ptr());
attrs_fetched = true;
}
@@ -140,7 +136,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base
void *iter = NULL;
MonoMethod *raw_method = NULL;
- while ((raw_method = mono_class_get_methods(get_raw(), &iter)) != NULL) {
+ while ((raw_method = mono_class_get_methods(get_mono_ptr(), &iter)) != NULL) {
StringName name = mono_method_get_name(raw_method);
GDMonoMethod *method = get_method(raw_method, name);
@@ -224,7 +220,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base
methods_fetched = true;
}
-GDMonoMethod *GDMonoClass::get_method(const StringName &p_name) {
+GDMonoMethod *GDMonoClass::get_fetched_method_unknown_params(const StringName &p_name) {
ERR_FAIL_COND_V(!methods_fetched, NULL);
@@ -238,6 +234,11 @@ GDMonoMethod *GDMonoClass::get_method(const StringName &p_name) {
return NULL;
}
+bool GDMonoClass::has_fetched_method_unknown_params(const StringName &p_name) {
+
+ return get_fetched_method_unknown_params(p_name) != NULL;
+}
+
GDMonoMethod *GDMonoClass::get_method(const StringName &p_name, int p_params_count) {
MethodKey key = MethodKey(p_name, p_params_count);
@@ -302,6 +303,8 @@ GDMonoMethod *GDMonoClass::get_method_with_desc(const String &p_description, boo
MonoMethod *method = mono_method_desc_search_in_class(desc, mono_class);
mono_method_desc_free(desc);
+ ERR_FAIL_COND_V(mono_method_get_class(method) != mono_class, NULL);
+
return get_method(method);
}
@@ -334,7 +337,7 @@ const Vector<GDMonoField *> &GDMonoClass::get_all_fields() {
void *iter = NULL;
MonoClassField *raw_field = NULL;
- while ((raw_field = mono_class_get_fields(get_raw(), &iter)) != NULL) {
+ while ((raw_field = mono_class_get_fields(mono_class, &iter)) != NULL) {
StringName name = mono_field_get_name(raw_field);
Map<StringName, GDMonoField *>::Element *match = fields.find(name);
@@ -353,6 +356,54 @@ const Vector<GDMonoField *> &GDMonoClass::get_all_fields() {
return fields_list;
}
+GDMonoProperty *GDMonoClass::get_property(const StringName &p_name) {
+
+ Map<StringName, GDMonoProperty *>::Element *result = properties.find(p_name);
+
+ if (result)
+ return result->value();
+
+ if (properties_fetched)
+ return NULL;
+
+ MonoProperty *raw_property = mono_class_get_property_from_name(mono_class, String(p_name).utf8().get_data());
+
+ if (raw_property) {
+ GDMonoProperty *property = memnew(GDMonoProperty(raw_property, this));
+ properties.insert(p_name, property);
+
+ return property;
+ }
+
+ return NULL;
+}
+
+const Vector<GDMonoProperty *> &GDMonoClass::get_all_properties() {
+
+ if (properties_fetched)
+ return properties_list;
+
+ void *iter = NULL;
+ MonoProperty *raw_property = NULL;
+ while ((raw_property = mono_class_get_properties(mono_class, &iter)) != NULL) {
+ StringName name = mono_property_get_name(raw_property);
+
+ Map<StringName, GDMonoProperty *>::Element *match = properties.find(name);
+
+ if (match) {
+ properties_list.push_back(match->get());
+ } else {
+ GDMonoProperty *property = memnew(GDMonoProperty(raw_property, this));
+ properties.insert(name, property);
+ properties_list.push_back(property);
+ }
+ }
+
+ properties_fetched = true;
+
+ return properties_list;
+}
+
GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly) {
namespace_name = p_namespace;
@@ -365,6 +416,7 @@ GDMonoClass::GDMonoClass(const StringName &p_namespace, const StringName &p_name
methods_fetched = false;
fields_fetched = false;
+ properties_fetched = false;
}
GDMonoClass::~GDMonoClass() {
@@ -377,6 +429,10 @@ GDMonoClass::~GDMonoClass() {
memdelete(E->value());
}
+ for (Map<StringName, GDMonoProperty *>::Element *E = properties.front(); E; E = E->next()) {
+ memdelete(E->value());
+ }
+
{
// Ugly workaround...
// We may have duplicated values, because we redirect snake_case methods to PascalCasel (only Godot API methods).
diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h
index b9d34eef3a..f5895be144 100644
--- a/modules/mono/mono_gd/gd_mono_class.h
+++ b/modules/mono/mono_gd/gd_mono_class.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_CLASS_H
#define GD_MONO_CLASS_H
@@ -38,6 +39,7 @@
#include "gd_mono_field.h"
#include "gd_mono_header.h"
#include "gd_mono_method.h"
+#include "gd_mono_property.h"
#include "gd_mono_utils.h"
class GDMonoClass {
@@ -84,6 +86,10 @@ class GDMonoClass {
Map<StringName, GDMonoField *> fields;
Vector<GDMonoField *> fields_list;
+ bool properties_fetched;
+ Map<StringName, GDMonoProperty *> properties;
+ Vector<GDMonoProperty *> properties_list;
+
friend class GDMonoAssembly;
GDMonoClass(const StringName &p_namespace, const StringName &p_name, MonoClass *p_class, GDMonoAssembly *p_assembly);
@@ -95,7 +101,7 @@ public:
_FORCE_INLINE_ StringName get_namespace() const { return namespace_name; }
_FORCE_INLINE_ StringName get_name() const { return class_name; }
- _FORCE_INLINE_ MonoClass *get_raw() const { return mono_class; }
+ _FORCE_INLINE_ MonoClass *get_mono_ptr() const { return mono_class; }
_FORCE_INLINE_ const GDMonoAssembly *get_assembly() const { return assembly; }
String get_full_name() const;
@@ -106,7 +112,8 @@ public:
Vector<MonoClassField *> get_enum_fields();
#endif
- bool has_method(const StringName &p_name);
+ GDMonoMethod *get_fetched_method_unknown_params(const StringName &p_name);
+ bool has_fetched_method_unknown_params(const StringName &p_name);
bool has_attribute(GDMonoClass *p_attr_class);
MonoObject *get_attribute(GDMonoClass *p_attr_class);
@@ -114,8 +121,7 @@ public:
void fetch_attributes();
void fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base);
- GDMonoMethod *get_method(const StringName &p_name);
- GDMonoMethod *get_method(const StringName &p_name, int p_params_count);
+ GDMonoMethod *get_method(const StringName &p_name, int p_params_count = 0);
GDMonoMethod *get_method(MonoMethod *p_raw_method);
GDMonoMethod *get_method(MonoMethod *p_raw_method, const StringName &p_name);
GDMonoMethod *get_method(MonoMethod *p_raw_method, const StringName &p_name, int p_params_count);
@@ -124,6 +130,9 @@ public:
GDMonoField *get_field(const StringName &p_name);
const Vector<GDMonoField *> &get_all_fields();
+ GDMonoProperty *get_property(const StringName &p_name);
+ const Vector<GDMonoProperty *> &get_all_properties();
+
~GDMonoClass();
};
diff --git a/modules/pbm/bitmap_loader_pbm.h b/modules/mono/mono_gd/gd_mono_class_member.h
index d5955adba3..008ea0e416 100644
--- a/modules/pbm/bitmap_loader_pbm.h
+++ b/modules/mono/mono_gd/gd_mono_class_member.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* bitmap_loader_pbm.h */
+/* gd_mono_class_member.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,21 +27,41 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef BITMAP_LOADER_PBM_H
-#define BITMAP_LOADER_PBM_H
+#ifndef GD_MONO_CLASS_MEMBER_H
+#define GD_MONO_CLASS_MEMBER_H
-#include "io/resource_loader.h"
+#include "gd_mono_header.h"
-/**
- @author Juan Linietsky <reduzio@gmail.com>
-*/
-class ResourceFormatPBM : public ResourceFormatLoader {
+#include <mono/metadata/object.h>
+class GDMonoClassMember {
public:
- virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
- 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;
+ enum Visibility {
+ PRIVATE,
+ PROTECTED_AND_INTERNAL, // FAM_AND_ASSEM
+ INTERNAL, // ASSEMBLY
+ PROTECTED, // FAMILY
+ PUBLIC
+ };
+
+ enum MemberType {
+ MEMBER_TYPE_FIELD,
+ MEMBER_TYPE_PROPERTY,
+ MEMBER_TYPE_METHOD
+ };
+
+ virtual ~GDMonoClassMember() {}
+
+ virtual MemberType get_member_type() = 0;
+
+ virtual StringName get_name() = 0;
+
+ virtual bool is_static() = 0;
+
+ virtual Visibility get_visibility() = 0;
+
+ virtual bool has_attribute(GDMonoClass *p_attr_class) = 0;
+ virtual MonoObject *get_attribute(GDMonoClass *p_attr_class) = 0;
};
-#endif
+#endif // GD_MONO_CLASS_MEMBER_H
diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp
index 133cfc9145..3b91777ed4 100644
--- a/modules/mono/mono_gd/gd_mono_field.cpp
+++ b/modules/mono/mono_gd/gd_mono_field.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_field.h"
#include <mono/metadata/attrdefs.h>
@@ -38,7 +39,7 @@ void GDMonoField::set_value_raw(MonoObject *p_object, void *p_ptr) {
mono_field_set_value(p_object, mono_field, &p_ptr);
}
-void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
+void GDMonoField::set_value_from_variant(MonoObject *p_object, const Variant &p_value) {
#define SET_FROM_STRUCT_AND_BREAK(m_type) \
{ \
const m_type &val = p_value.operator ::m_type(); \
@@ -138,7 +139,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
if (tclass == CACHED_CLASS(Plane))
SET_FROM_STRUCT_AND_BREAK(Plane);
- if (mono_class_is_enum(tclass->get_raw()))
+ if (mono_class_is_enum(tclass->get_mono_ptr()))
SET_FROM_PRIMITIVE(signed int);
ERR_EXPLAIN(String() + "Attempted to set the value of a field of unmarshallable type: " + tclass->get_name());
@@ -264,7 +265,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
} break;
case MONO_TYPE_GENERICINST: {
- if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_raw()) {
+ if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_mono_ptr()) {
MonoObject *managed = GDMonoMarshal::Dictionary_to_mono_object(p_value.operator Dictionary());
mono_field_set_value(p_object, mono_field, managed);
break;
@@ -280,6 +281,10 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
#undef SET_FROM_PRIMITIVE
}
+MonoObject *GDMonoField::get_value(MonoObject *p_object) {
+ return mono_field_get_value_object(mono_domain_get(), mono_field, p_object);
+}
+
bool GDMonoField::get_bool_value(MonoObject *p_object) {
return (bool)GDMonoMarshal::unbox<MonoBoolean>(get_value(p_object));
}
@@ -302,7 +307,7 @@ bool GDMonoField::has_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return false;
- return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr());
}
MonoObject *GDMonoField::get_attribute(GDMonoClass *p_attr_class) {
@@ -314,12 +319,12 @@ MonoObject *GDMonoField::get_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return NULL;
- return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr());
}
void GDMonoField::fetch_attributes() {
ERR_FAIL_COND(attributes != NULL);
- attributes = mono_custom_attrs_from_field(owner->get_raw(), get_raw());
+ attributes = mono_custom_attrs_from_field(owner->get_mono_ptr(), mono_field);
attrs_fetched = true;
}
@@ -327,26 +332,26 @@ bool GDMonoField::is_static() {
return mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_STATIC;
}
-GDMono::MemberVisibility GDMonoField::get_visibility() {
+GDMonoClassMember::Visibility GDMonoField::get_visibility() {
switch (mono_field_get_flags(mono_field) & MONO_FIELD_ATTR_FIELD_ACCESS_MASK) {
case MONO_FIELD_ATTR_PRIVATE:
- return GDMono::PRIVATE;
+ return GDMonoClassMember::PRIVATE;
case MONO_FIELD_ATTR_FAM_AND_ASSEM:
- return GDMono::PROTECTED_AND_INTERNAL;
+ return GDMonoClassMember::PROTECTED_AND_INTERNAL;
case MONO_FIELD_ATTR_ASSEMBLY:
- return GDMono::INTERNAL;
+ return GDMonoClassMember::INTERNAL;
case MONO_FIELD_ATTR_FAMILY:
- return GDMono::PROTECTED;
+ return GDMonoClassMember::PROTECTED;
case MONO_FIELD_ATTR_PUBLIC:
- return GDMono::PUBLIC;
+ return GDMonoClassMember::PUBLIC;
default:
- ERR_FAIL_V(GDMono::PRIVATE);
+ ERR_FAIL_V(GDMonoClassMember::PRIVATE);
}
}
-GDMonoField::GDMonoField(MonoClassField *p_raw_field, GDMonoClass *p_owner) {
+GDMonoField::GDMonoField(MonoClassField *p_mono_field, GDMonoClass *p_owner) {
owner = p_owner;
- mono_field = p_raw_field;
+ mono_field = p_mono_field;
name = mono_field_get_name(mono_field);
MonoType *field_type = mono_field_get_type(mono_field);
type.type_encoding = mono_type_get_type(field_type);
diff --git a/modules/mono/mono_gd/gd_mono_field.h b/modules/mono/mono_gd/gd_mono_field.h
index a5559df059..a6b368c4d6 100644
--- a/modules/mono/mono_gd/gd_mono_field.h
+++ b/modules/mono/mono_gd/gd_mono_field.h
@@ -27,47 +27,49 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDMONOFIELD_H
#define GDMONOFIELD_H
#include "gd_mono.h"
+#include "gd_mono_class_member.h"
#include "gd_mono_header.h"
-class GDMonoField {
+class GDMonoField : public GDMonoClassMember {
+
GDMonoClass *owner;
MonoClassField *mono_field;
- String name;
+ StringName name;
ManagedType type;
bool attrs_fetched;
MonoCustomAttrInfo *attributes;
public:
- _FORCE_INLINE_ String get_name() const { return name; }
- _FORCE_INLINE_ ManagedType get_type() const { return type; }
+ virtual MemberType get_member_type() { return MEMBER_TYPE_FIELD; }
- _FORCE_INLINE_ MonoClassField *get_raw() const { return mono_field; }
+ virtual StringName get_name() { return name; }
+
+ virtual bool is_static();
+ virtual Visibility get_visibility();
+
+ virtual bool has_attribute(GDMonoClass *p_attr_class);
+ virtual MonoObject *get_attribute(GDMonoClass *p_attr_class);
+ void fetch_attributes();
+
+ _FORCE_INLINE_ ManagedType get_type() const { return type; }
void set_value_raw(MonoObject *p_object, void *p_ptr);
- void set_value(MonoObject *p_object, const Variant &p_value);
+ void set_value_from_variant(MonoObject *p_object, const Variant &p_value);
- _FORCE_INLINE_ MonoObject *get_value(MonoObject *p_object) {
- return mono_field_get_value_object(mono_domain_get(), mono_field, p_object);
- }
+ MonoObject *get_value(MonoObject *p_object);
bool get_bool_value(MonoObject *p_object);
int get_int_value(MonoObject *p_object);
String get_string_value(MonoObject *p_object);
- bool has_attribute(GDMonoClass *p_attr_class);
- MonoObject *get_attribute(GDMonoClass *p_attr_class);
- void fetch_attributes();
-
- bool is_static();
- GDMono::MemberVisibility get_visibility();
-
- GDMonoField(MonoClassField *p_raw_field, GDMonoClass *p_owner);
+ GDMonoField(MonoClassField *p_mono_field, GDMonoClass *p_owner);
~GDMonoField();
};
diff --git a/modules/mono/mono_gd/gd_mono_header.h b/modules/mono/mono_gd/gd_mono_header.h
index a749aa8768..2b5110f0b9 100644
--- a/modules/mono/mono_gd/gd_mono_header.h
+++ b/modules/mono/mono_gd/gd_mono_header.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_HEADER_H
#define GD_MONO_HEADER_H
@@ -34,8 +35,10 @@
class GDMonoAssembly;
class GDMonoClass;
-class GDMonoMethod;
+class GDMonoClassMember;
class GDMonoField;
+class GDMonoProperty;
+class GDMonoMethod;
struct ManagedType {
int type_encoding;
diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp
index 95d15c3581..a1a79f957f 100644
--- a/modules/mono/mono_gd/gd_mono_internals.cpp
+++ b/modules/mono/mono_gd/gd_mono_internals.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* godotsharp_internals.cpp */
+/* gd_mono_internals.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_internals.h"
#include "../csharp_script.h"
diff --git a/modules/mono/mono_gd/gd_mono_internals.h b/modules/mono/mono_gd/gd_mono_internals.h
index 91f6fcbbc7..abec65e7d4 100644
--- a/modules/mono/mono_gd/gd_mono_internals.h
+++ b/modules/mono/mono_gd/gd_mono_internals.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* godotsharp_internals.h */
+/* gd_mono_internals.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_INTERNALS_H
#define GD_MONO_INTERNALS_H
diff --git a/modules/mono/mono_gd/gd_mono_log.cpp b/modules/mono/mono_gd/gd_mono_log.cpp
index f954530552..eabea8dc3c 100644
--- a/modules/mono/mono_gd/gd_mono_log.cpp
+++ b/modules/mono/mono_gd/gd_mono_log.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_log.h"
#include <mono/utils/mono-logger.h>
diff --git a/modules/mono/mono_gd/gd_mono_log.h b/modules/mono/mono_gd/gd_mono_log.h
index 4ed5f2a255..a7e374858c 100644
--- a/modules/mono/mono_gd/gd_mono_log.h
+++ b/modules/mono/mono_gd/gd_mono_log.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_LOG_H
#define GD_MONO_LOG_H
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp
index 48d08b159c..aa1a8e39c7 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.cpp
+++ b/modules/mono/mono_gd/gd_mono_marshal.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_marshal.h"
#include "gd_mono.h"
@@ -113,7 +114,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
if (tclass == CACHED_CLASS(Plane))
return Variant::PLANE;
- if (mono_class_is_enum(tclass->get_raw()))
+ if (mono_class_is_enum(tclass->get_mono_ptr()))
return Variant::INT;
} break;
@@ -164,7 +165,7 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
} break;
case MONO_TYPE_GENERICINST: {
- if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) {
+ if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_mono_ptr()) {
return Variant::DICTIONARY;
}
} break;
@@ -306,9 +307,9 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
if (tclass == CACHED_CLASS(Plane))
RETURN_BOXED_STRUCT(Plane, p_var);
- if (mono_class_is_enum(tclass->get_raw())) {
+ if (mono_class_is_enum(tclass->get_mono_ptr())) {
int val = p_var->operator signed int();
- return BOX_ENUM(tclass->get_raw(), val);
+ return BOX_ENUM(tclass->get_mono_ptr(), val);
}
} break;
@@ -432,7 +433,7 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
}
break;
case MONO_TYPE_GENERICINST: {
- if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) {
+ if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_mono_ptr()) {
return Dictionary_to_mono_object(p_var->operator Dictionary());
}
} break;
@@ -458,11 +459,7 @@ Variant mono_object_to_variant(MonoObject *p_obj) {
type.type_encoding = mono_type_get_type(raw_type);
type.type_class = tclass;
- return mono_object_to_variant(p_obj, type);
-}
-
-Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
- switch (p_type.type_encoding) {
+ switch (type.type_encoding) {
case MONO_TYPE_BOOLEAN:
return (bool)unbox<MonoBoolean>(p_obj);
@@ -496,7 +493,7 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
} break;
case MONO_TYPE_VALUETYPE: {
- GDMonoClass *tclass = p_type.type_class;
+ GDMonoClass *tclass = type.type_class;
if (tclass == CACHED_CLASS(Vector2))
RETURN_UNBOXED_STRUCT(Vector2, p_obj);
@@ -528,13 +525,13 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
if (tclass == CACHED_CLASS(Plane))
RETURN_UNBOXED_STRUCT(Plane, p_obj);
- if (mono_class_is_enum(tclass->get_raw()))
+ if (mono_class_is_enum(tclass->get_mono_ptr()))
return unbox<int32_t>(p_obj);
} break;
case MONO_TYPE_ARRAY:
case MONO_TYPE_SZARRAY: {
- MonoArrayType *array_type = mono_type_get_array_type(GDMonoClass::get_raw_type(p_type.type_class));
+ MonoArrayType *array_type = mono_type_get_array_type(GDMonoClass::get_raw_type(type.type_class));
if (array_type->eklass == CACHED_CLASS_RAW(MonoObject))
return mono_array_to_Array((MonoArray *)p_obj);
@@ -565,7 +562,7 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
} break;
case MONO_TYPE_CLASS: {
- GDMonoClass *type_class = p_type.type_class;
+ GDMonoClass *type_class = type.type_class;
// GodotObject
if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) {
@@ -585,14 +582,14 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
} break;
case MONO_TYPE_GENERICINST: {
- if (CACHED_RAW_MONO_CLASS(Dictionary) == p_type.type_class->get_raw()) {
+ if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_mono_ptr()) {
return mono_object_to_Dictionary(p_obj);
}
} break;
}
ERR_EXPLAIN(String() + "Attempted to convert an unmarshallable managed type to Variant. Name: \'" +
- p_type.type_class->get_name() + "\' Encoding: " + itos(p_type.type_encoding));
+ type.type_class->get_name() + "\' Encoding: " + itos(type.type_encoding));
ERR_FAIL_V(Variant());
}
diff --git a/modules/mono/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h
index 0570415575..6572408ab5 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.h
+++ b/modules/mono/mono_gd/gd_mono_marshal.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GDMONOMARSHAL_H
#define GDMONOMARSHAL_H
@@ -101,7 +102,6 @@ _FORCE_INLINE_ MonoObject *variant_to_mono_object(Variant p_var) {
}
Variant mono_object_to_variant(MonoObject *p_obj);
-Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type);
// Array
diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp
index 01afd1e51e..1f8e9a1926 100644
--- a/modules/mono/mono_gd/gd_mono_method.cpp
+++ b/modules/mono/mono_gd/gd_mono_method.cpp
@@ -27,11 +27,14 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_method.h"
#include "gd_mono_class.h"
#include "gd_mono_marshal.h"
+#include <mono/metadata/attrdefs.h>
+
void GDMonoMethod::_update_signature() {
// Apparently MonoMethodSignature needs not to be freed.
// mono_method_signature caches the result, we don't need to cache it ourselves.
@@ -41,7 +44,6 @@ void GDMonoMethod::_update_signature() {
}
void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) {
- is_instance = mono_signature_is_instance(p_method_sig);
params_count = mono_signature_get_param_count(p_method_sig);
MonoType *ret_type = mono_signature_get_return_type(p_method_sig);
@@ -61,15 +63,34 @@ void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) {
param_type.type_encoding = mono_type_get_type(param_raw_type);
- if (param_type.type_encoding != MONO_TYPE_VOID) {
- MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type);
- param_type.type_class = GDMono::get_singleton()->get_class(param_type_class);
- }
+ MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type);
+ param_type.type_class = GDMono::get_singleton()->get_class(param_type_class);
param_types.push_back(param_type);
}
}
+bool GDMonoMethod::is_static() {
+ return mono_method_get_flags(mono_method, NULL) & MONO_METHOD_ATTR_STATIC;
+}
+
+GDMonoClassMember::Visibility GDMonoMethod::get_visibility() {
+ switch (mono_method_get_flags(mono_method, NULL) & MONO_METHOD_ATTR_ACCESS_MASK) {
+ case MONO_METHOD_ATTR_PRIVATE:
+ return GDMonoClassMember::PRIVATE;
+ case MONO_METHOD_ATTR_FAM_AND_ASSEM:
+ return GDMonoClassMember::PROTECTED_AND_INTERNAL;
+ case MONO_METHOD_ATTR_ASSEM:
+ return GDMonoClassMember::INTERNAL;
+ case MONO_METHOD_ATTR_FAMILY:
+ return GDMonoClassMember::PROTECTED;
+ case MONO_METHOD_ATTR_PUBLIC:
+ return GDMonoClassMember::PUBLIC;
+ default:
+ ERR_FAIL_V(GDMonoClassMember::PRIVATE);
+ }
+}
+
void *GDMonoMethod::get_thunk() {
return mono_method_get_unmanaged_thunk(mono_method);
}
@@ -87,11 +108,11 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, const Variant **p_params,
MonoObject *ret = mono_runtime_invoke_array(mono_method, p_object, params, &exc);
if (exc) {
+ ret = NULL;
if (r_exc) {
*r_exc = exc;
} else {
- ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
- mono_print_unhandled_exception(exc);
+ GDMonoUtils::print_unhandled_exception(exc);
}
}
@@ -104,8 +125,7 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, const Variant **p_params,
if (r_exc) {
*r_exc = exc;
} else {
- ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
- mono_print_unhandled_exception(exc);
+ GDMonoUtils::print_unhandled_exception(exc);
}
}
@@ -123,11 +143,11 @@ MonoObject *GDMonoMethod::invoke_raw(MonoObject *p_object, void **p_params, Mono
MonoObject *ret = mono_runtime_invoke(mono_method, p_object, p_params, &exc);
if (exc) {
+ ret = NULL;
if (r_exc) {
*r_exc = exc;
} else {
- ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
- mono_print_unhandled_exception(exc);
+ GDMonoUtils::print_unhandled_exception(exc);
}
}
@@ -143,7 +163,7 @@ bool GDMonoMethod::has_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return false;
- return mono_custom_attrs_has_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr());
}
MonoObject *GDMonoMethod::get_attribute(GDMonoClass *p_attr_class) {
@@ -155,7 +175,7 @@ MonoObject *GDMonoMethod::get_attribute(GDMonoClass *p_attr_class) {
if (!attributes)
return NULL;
- return mono_custom_attrs_get_attr(attributes, p_attr_class->get_raw());
+ return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr());
}
void GDMonoMethod::fetch_attributes() {
diff --git a/modules/mono/mono_gd/gd_mono_method.h b/modules/mono/mono_gd/gd_mono_method.h
index f1f6e51d45..14df8dcfb4 100644
--- a/modules/mono/mono_gd/gd_mono_method.h
+++ b/modules/mono/mono_gd/gd_mono_method.h
@@ -27,17 +27,18 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONO_METHOD_H
#define GD_MONO_METHOD_H
#include "gd_mono.h"
+#include "gd_mono_class_member.h"
#include "gd_mono_header.h"
-class GDMonoMethod {
+class GDMonoMethod : public GDMonoClassMember {
StringName name;
- bool is_instance;
int params_count;
ManagedType return_type;
Vector<ManagedType> param_types;
@@ -53,9 +54,18 @@ class GDMonoMethod {
MonoMethod *mono_method;
public:
- _FORCE_INLINE_ StringName get_name() { return name; }
+ virtual MemberType get_member_type() { return MEMBER_TYPE_METHOD; }
+
+ virtual StringName get_name() { return name; }
+
+ virtual bool is_static();
+
+ virtual Visibility get_visibility();
+
+ virtual bool has_attribute(GDMonoClass *p_attr_class);
+ virtual MonoObject *get_attribute(GDMonoClass *p_attr_class);
+ virtual void fetch_attributes();
- _FORCE_INLINE_ bool is_static() { return !is_instance; }
_FORCE_INLINE_ int get_parameters_count() { return params_count; }
_FORCE_INLINE_ ManagedType get_return_type() { return return_type; }
@@ -65,10 +75,6 @@ public:
MonoObject *invoke(MonoObject *p_object, MonoObject **r_exc = NULL);
MonoObject *invoke_raw(MonoObject *p_object, void **p_params, MonoObject **r_exc = NULL);
- bool has_attribute(GDMonoClass *p_attr_class);
- MonoObject *get_attribute(GDMonoClass *p_attr_class);
- void fetch_attributes();
-
String get_full_name(bool p_signature = false) const;
String get_full_name_no_class() const;
String get_ret_type_full_name() const;
diff --git a/modules/mono/mono_gd/gd_mono_property.cpp b/modules/mono/mono_gd/gd_mono_property.cpp
new file mode 100644
index 0000000000..0fe527b199
--- /dev/null
+++ b/modules/mono/mono_gd/gd_mono_property.cpp
@@ -0,0 +1,199 @@
+/*************************************************************************/
+/* gd_mono_property.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "gd_mono_property.h"
+
+#include "gd_mono_class.h"
+#include "gd_mono_marshal.h"
+
+#include <mono/metadata/attrdefs.h>
+
+GDMonoProperty::GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_owner) {
+ owner = p_owner;
+ mono_property = p_mono_property;
+ name = mono_property_get_name(mono_property);
+
+ MonoMethod *prop_method = mono_property_get_get_method(mono_property);
+
+ if (prop_method) {
+ MonoMethodSignature *getter_sig = mono_method_signature(prop_method);
+
+ MonoType *ret_type = mono_signature_get_return_type(getter_sig);
+
+ type.type_encoding = mono_type_get_type(ret_type);
+ MonoClass *ret_type_class = mono_class_from_mono_type(ret_type);
+ type.type_class = GDMono::get_singleton()->get_class(ret_type_class);
+ } else {
+ prop_method = mono_property_get_set_method(mono_property);
+
+ MonoMethodSignature *setter_sig = mono_method_signature(prop_method);
+
+ void *iter = NULL;
+ MonoType *param_raw_type = mono_signature_get_params(setter_sig, &iter);
+
+ type.type_encoding = mono_type_get_type(param_raw_type);
+ MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type);
+ type.type_class = GDMono::get_singleton()->get_class(param_type_class);
+ }
+
+ attrs_fetched = false;
+ attributes = NULL;
+}
+
+GDMonoProperty::~GDMonoProperty() {
+ if (attributes) {
+ mono_custom_attrs_free(attributes);
+ }
+}
+
+bool GDMonoProperty::is_static() {
+ MonoMethod *prop_method = mono_property_get_get_method(mono_property);
+ if (prop_method == NULL)
+ prop_method = mono_property_get_set_method(mono_property);
+ return mono_method_get_flags(prop_method, NULL) & MONO_METHOD_ATTR_STATIC;
+}
+
+GDMonoClassMember::Visibility GDMonoProperty::get_visibility() {
+ MonoMethod *prop_method = mono_property_get_get_method(mono_property);
+ if (prop_method == NULL)
+ prop_method = mono_property_get_set_method(mono_property);
+
+ switch (mono_method_get_flags(prop_method, NULL) & MONO_METHOD_ATTR_ACCESS_MASK) {
+ case MONO_METHOD_ATTR_PRIVATE:
+ return GDMonoClassMember::PRIVATE;
+ case MONO_METHOD_ATTR_FAM_AND_ASSEM:
+ return GDMonoClassMember::PROTECTED_AND_INTERNAL;
+ case MONO_METHOD_ATTR_ASSEM:
+ return GDMonoClassMember::INTERNAL;
+ case MONO_METHOD_ATTR_FAMILY:
+ return GDMonoClassMember::PROTECTED;
+ case MONO_METHOD_ATTR_PUBLIC:
+ return GDMonoClassMember::PUBLIC;
+ default:
+ ERR_FAIL_V(GDMonoClassMember::PRIVATE);
+ }
+}
+
+bool GDMonoProperty::has_attribute(GDMonoClass *p_attr_class) {
+ ERR_FAIL_NULL_V(p_attr_class, false);
+
+ if (!attrs_fetched)
+ fetch_attributes();
+
+ if (!attributes)
+ return false;
+
+ return mono_custom_attrs_has_attr(attributes, p_attr_class->get_mono_ptr());
+}
+
+MonoObject *GDMonoProperty::get_attribute(GDMonoClass *p_attr_class) {
+ ERR_FAIL_NULL_V(p_attr_class, NULL);
+
+ if (!attrs_fetched)
+ fetch_attributes();
+
+ if (!attributes)
+ return NULL;
+
+ return mono_custom_attrs_get_attr(attributes, p_attr_class->get_mono_ptr());
+}
+
+void GDMonoProperty::fetch_attributes() {
+ ERR_FAIL_COND(attributes != NULL);
+ attributes = mono_custom_attrs_from_property(owner->get_mono_ptr(), mono_property);
+ attrs_fetched = true;
+}
+
+bool GDMonoProperty::has_getter() {
+ return mono_property_get_get_method(mono_property) != NULL;
+}
+
+bool GDMonoProperty::has_setter() {
+ return mono_property_get_set_method(mono_property) != NULL;
+}
+
+void GDMonoProperty::set_value(MonoObject *p_object, MonoObject *p_value, MonoObject **r_exc) {
+ MonoMethod *prop_method = mono_property_get_set_method(mono_property);
+
+ MonoArray *params = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(MonoObject), 1);
+ mono_array_set(params, MonoObject *, 0, p_value);
+
+ MonoObject *exc = NULL;
+ mono_runtime_invoke_array(prop_method, p_object, params, &exc);
+
+ if (exc) {
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ GDMonoUtils::print_unhandled_exception(exc);
+ }
+ }
+}
+
+void GDMonoProperty::set_value(MonoObject *p_object, void **p_params, MonoObject **r_exc) {
+ MonoObject *exc = NULL;
+ mono_property_set_value(mono_property, p_object, p_params, &exc);
+
+ if (exc) {
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ GDMonoUtils::print_unhandled_exception(exc);
+ }
+ }
+}
+
+MonoObject *GDMonoProperty::get_value(MonoObject *p_object, MonoObject **r_exc) {
+ MonoObject *exc = NULL;
+ MonoObject *ret = mono_property_get_value(mono_property, p_object, NULL, &exc);
+
+ if (exc) {
+ ret = NULL;
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ GDMonoUtils::print_unhandled_exception(exc);
+ }
+ }
+
+ return ret;
+}
+
+bool GDMonoProperty::get_bool_value(MonoObject *p_object) {
+ return (bool)GDMonoMarshal::unbox<MonoBoolean>(get_value(p_object));
+}
+
+int GDMonoProperty::get_int_value(MonoObject *p_object) {
+ return GDMonoMarshal::unbox<int32_t>(get_value(p_object));
+}
+
+String GDMonoProperty::get_string_value(MonoObject *p_object) {
+ MonoObject *val = get_value(p_object);
+ return GDMonoMarshal::mono_string_to_godot((MonoString *)val);
+}
diff --git a/modules/pbm/register_types.cpp b/modules/mono/mono_gd/gd_mono_property.h
index c2a1585afa..2a0065e850 100644
--- a/modules/pbm/register_types.cpp
+++ b/modules/mono/mono_gd/gd_mono_property.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* register_types.cpp */
+/* gd_mono_property.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,19 +27,51 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "register_types.h"
+#ifndef GD_MONO_PROPERTY_H
+#define GD_MONO_PROPERTY_H
-#include "bitmap_loader_pbm.h"
+#include "gd_mono.h"
+#include "gd_mono_class_member.h"
+#include "gd_mono_header.h"
-static ResourceFormatPBM *pbm_loader = NULL;
+class GDMonoProperty : public GDMonoClassMember {
-void register_pbm_types() {
+ GDMonoClass *owner;
+ MonoProperty *mono_property;
- pbm_loader = memnew(ResourceFormatPBM);
- ResourceLoader::add_resource_format_loader(pbm_loader);
-}
+ StringName name;
+ ManagedType type;
-void unregister_pbm_types() {
+ bool attrs_fetched;
+ MonoCustomAttrInfo *attributes;
- memdelete(pbm_loader);
-}
+public:
+ virtual MemberType get_member_type() { return MEMBER_TYPE_PROPERTY; }
+
+ virtual StringName get_name() { return name; }
+
+ virtual bool is_static();
+ virtual Visibility get_visibility();
+
+ virtual bool has_attribute(GDMonoClass *p_attr_class);
+ virtual MonoObject *get_attribute(GDMonoClass *p_attr_class);
+ void fetch_attributes();
+
+ bool has_getter();
+ bool has_setter();
+
+ _FORCE_INLINE_ ManagedType get_type() const { return type; }
+
+ void set_value(MonoObject *p_object, MonoObject *p_value, MonoObject **r_exc = NULL);
+ void set_value(MonoObject *p_object, void **p_params, MonoObject **r_exc = NULL);
+ MonoObject *get_value(MonoObject *p_object, MonoObject **r_exc = NULL);
+
+ bool get_bool_value(MonoObject *p_object);
+ int get_int_value(MonoObject *p_object);
+ String get_string_value(MonoObject *p_object);
+
+ GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_owner);
+ ~GDMonoProperty();
+};
+
+#endif // GD_MONO_PROPERTY_H
diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp
index 03f3053372..a2f0819a72 100644
--- a/modules/mono/mono_gd/gd_mono_utils.cpp
+++ b/modules/mono/mono_gd/gd_mono_utils.cpp
@@ -27,9 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gd_mono_utils.h"
#include "os/dir_access.h"
+#include "os/os.h"
#include "project_settings.h"
#include "reference.h"
@@ -42,16 +44,20 @@ namespace GDMonoUtils {
MonoCache mono_cache;
-#define CACHE_AND_CHECK(m_var, m_val) \
- { \
- m_var = m_val; \
- if (!m_var) ERR_PRINT("Mono Cache: Member " #m_var " is null. This is really bad!"); \
+#define CACHE_AND_CHECK(m_var, m_val) \
+ { \
+ m_var = m_val; \
+ if (!m_var) { \
+ ERR_EXPLAIN("Mono Cache: Member " #m_var " is null"); \
+ ERR_FAIL(); \
+ } \
}
#define CACHE_CLASS_AND_CHECK(m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.class_##m_class, m_val)
#define CACHE_NS_CLASS_AND_CHECK(m_ns, m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.class_##m_ns##_##m_class, m_val)
#define CACHE_RAW_MONO_CLASS_AND_CHECK(m_class, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.rawclass_##m_class, m_val)
#define CACHE_FIELD_AND_CHECK(m_class, m_field, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.field_##m_class##_##m_field, m_val)
+#define CACHE_METHOD_AND_CHECK(m_class, m_method, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.method_##m_class##_##m_method, m_val)
#define CACHE_METHOD_THUNK_AND_CHECK(m_class, m_method, m_val) CACHE_AND_CHECK(GDMonoUtils::mono_cache.methodthunk_##m_class##_##m_method, m_val)
void MonoCache::clear_members() {
@@ -71,6 +77,13 @@ void MonoCache::clear_members() {
class_String = NULL;
class_IntPtr = NULL;
+#ifdef DEBUG_ENABLED
+ class_System_Diagnostics_StackTrace = NULL;
+ methodthunk_System_Diagnostics_StackTrace_GetFrames = NULL;
+ method_System_Diagnostics_StackTrace_ctor_bool = NULL;
+ method_System_Diagnostics_StackTrace_ctor_Exception_bool = NULL;
+#endif
+
rawclass_Dictionary = NULL;
class_Vector2 = NULL;
@@ -93,6 +106,11 @@ void MonoCache::clear_members() {
class_WeakRef = NULL;
class_MarshalUtils = NULL;
+#ifdef DEBUG_ENABLED
+ class_DebuggingUtils = NULL;
+ methodthunk_DebuggingUtils_GetStackFrameInfo = NULL;
+#endif
+
class_ExportAttribute = NULL;
field_ExportAttribute_hint = NULL;
field_ExportAttribute_hintString = NULL;
@@ -118,6 +136,12 @@ void MonoCache::clear_members() {
task_scheduler_handle = Ref<MonoGCHandle>();
}
+void MonoCache::cleanup() {
+
+ corlib_cache_updated = false;
+ godot_api_cache_updated = false;
+}
+
#define GODOT_API_CLASS(m_class) (GDMono::get_singleton()->get_api_assembly()->get_class(BINDINGS_NAMESPACE, #m_class))
void update_corlib_cache() {
@@ -136,6 +160,15 @@ void update_corlib_cache() {
CACHE_CLASS_AND_CHECK(double, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_double_class()));
CACHE_CLASS_AND_CHECK(String, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_string_class()));
CACHE_CLASS_AND_CHECK(IntPtr, GDMono::get_singleton()->get_corlib_assembly()->get_class(mono_get_intptr_class()));
+
+#ifdef DEBUG_ENABLED
+ CACHE_CLASS_AND_CHECK(System_Diagnostics_StackTrace, GDMono::get_singleton()->get_corlib_assembly()->get_class("System.Diagnostics", "StackTrace"));
+ CACHE_METHOD_THUNK_AND_CHECK(System_Diagnostics_StackTrace, GetFrames, (StackTrace_GetFrames)CACHED_CLASS(System_Diagnostics_StackTrace)->get_method("GetFrames")->get_thunk());
+ CACHE_METHOD_AND_CHECK(System_Diagnostics_StackTrace, ctor_bool, CACHED_CLASS(System_Diagnostics_StackTrace)->get_method_with_desc("System.Diagnostics.StackTrace:.ctor(bool)", true));
+ CACHE_METHOD_AND_CHECK(System_Diagnostics_StackTrace, ctor_Exception_bool, CACHED_CLASS(System_Diagnostics_StackTrace)->get_method_with_desc("System.Diagnostics.StackTrace:.ctor(System.Exception,bool)", true));
+#endif
+
+ mono_cache.corlib_cache_updated = true;
}
void update_godot_api_cache() {
@@ -151,7 +184,7 @@ void update_godot_api_cache() {
CACHE_CLASS_AND_CHECK(Color, GODOT_API_CLASS(Color));
CACHE_CLASS_AND_CHECK(Plane, GODOT_API_CLASS(Plane));
CACHE_CLASS_AND_CHECK(NodePath, GODOT_API_CLASS(NodePath));
- CACHE_CLASS_AND_CHECK(RID, GODOT_API_CLASS(NodePath));
+ CACHE_CLASS_AND_CHECK(RID, GODOT_API_CLASS(RID));
CACHE_CLASS_AND_CHECK(GodotObject, GODOT_API_CLASS(Object));
CACHE_CLASS_AND_CHECK(GodotReference, GODOT_API_CLASS(Reference));
CACHE_CLASS_AND_CHECK(Node, GODOT_API_CLASS(Node));
@@ -160,6 +193,10 @@ void update_godot_api_cache() {
CACHE_CLASS_AND_CHECK(WeakRef, GODOT_API_CLASS(WeakRef));
CACHE_CLASS_AND_CHECK(MarshalUtils, GODOT_API_CLASS(MarshalUtils));
+#ifdef DEBUG_ENABLED
+ CACHE_CLASS_AND_CHECK(DebuggingUtils, GODOT_API_CLASS(DebuggingUtils));
+#endif
+
// Attributes
CACHE_CLASS_AND_CHECK(ExportAttribute, GODOT_API_CLASS(ExportAttribute));
CACHE_FIELD_AND_CHECK(ExportAttribute, hint, CACHED_CLASS(ExportAttribute)->get_field("hint"));
@@ -182,6 +219,10 @@ void update_godot_api_cache() {
CACHE_METHOD_THUNK_AND_CHECK(SignalAwaiter, FailureCallback, (SignalAwaiter_FailureCallback)GODOT_API_CLASS(SignalAwaiter)->get_method("FailureCallback", 0)->get_thunk());
CACHE_METHOD_THUNK_AND_CHECK(GodotTaskScheduler, Activate, (GodotTaskScheduler_Activate)GODOT_API_CLASS(GodotTaskScheduler)->get_method("Activate", 0)->get_thunk());
+#ifdef DEBUG_ENABLED
+ CACHE_METHOD_THUNK_AND_CHECK(DebuggingUtils, GetStackFrameInfo, (DebugUtils_StackFrameInfo)GODOT_API_CLASS(DebuggingUtils)->get_method("GetStackFrameInfo", 4)->get_thunk());
+#endif
+
{
/*
* TODO Right now we only support Dictionary<object, object>.
@@ -198,9 +239,11 @@ void update_godot_api_cache() {
CACHE_RAW_MONO_CLASS_AND_CHECK(Dictionary, mono_class_from_mono_type(dict_type));
}
- MonoObject *task_scheduler = mono_object_new(SCRIPTS_DOMAIN, GODOT_API_CLASS(GodotTaskScheduler)->get_raw());
+ MonoObject *task_scheduler = mono_object_new(SCRIPTS_DOMAIN, GODOT_API_CLASS(GodotTaskScheduler)->get_mono_ptr());
mono_runtime_object_init(task_scheduler);
mono_cache.task_scheduler_handle = MonoGCHandle::create_strong(task_scheduler);
+
+ mono_cache.corlib_cache_updated = true;
}
void clear_cache() {
@@ -298,7 +341,7 @@ MonoObject *create_managed_for_godot_object(GDMonoClass *p_class, const StringNa
ERR_FAIL_V(NULL);
}
- MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, p_class->get_raw());
+ MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, p_class->get_mono_ptr());
ERR_FAIL_NULL_V(mono_object, NULL);
CACHED_FIELD(GodotObject, ptr)->set_value_raw(mono_object, p_object);
@@ -364,4 +407,51 @@ String get_exception_name_and_message(MonoObject *p_ex) {
return res;
}
+
+void print_unhandled_exception(MonoObject *p_exc) {
+ print_unhandled_exception(p_exc, false);
+}
+
+void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution) {
+ mono_print_unhandled_exception(p_exc);
+#ifdef DEBUG_ENABLED
+ if (!ScriptDebugger::get_singleton())
+ return;
+
+ GDMonoClass *st_klass = CACHED_CLASS(System_Diagnostics_StackTrace);
+ MonoObject *stack_trace = mono_object_new(mono_domain_get(), st_klass->get_mono_ptr());
+
+ MonoBoolean need_file_info = true;
+ void *ctor_args[2] = { p_exc, &need_file_info };
+
+ MonoObject *unexpected_exc = NULL;
+ CACHED_METHOD(System_Diagnostics_StackTrace, ctor_Exception_bool)->invoke_raw(stack_trace, ctor_args, &unexpected_exc);
+
+ if (unexpected_exc != NULL) {
+ mono_print_unhandled_exception(unexpected_exc);
+
+ if (p_recursion_caution) {
+ // Called from CSharpLanguage::get_current_stack_info,
+ // so printing an error here could result in endless recursion
+ OS::get_singleton()->printerr("Mono: Method GDMonoUtils::print_unhandled_exception failed");
+ return;
+ } else {
+ ERR_FAIL();
+ }
+ }
+
+ Vector<ScriptLanguage::StackInfo> si;
+ if (stack_trace != NULL && !p_recursion_caution)
+ si = CSharpLanguage::get_singleton()->stack_trace_get_info(stack_trace);
+
+ String file = si.size() ? si[0].file : __FILE__;
+ String func = si.size() ? si[0].func : FUNCTION_STR;
+ int line = si.size() ? si[0].line : __LINE__;
+ String error_msg = "Unhandled exception";
+ String exc_msg = GDMonoUtils::get_exception_name_and_message(p_exc);
+
+ ScriptDebugger::get_singleton()->send_error(func, file, line, error_msg, exc_msg, ERR_HANDLER_ERROR, si);
+#endif
+}
+
} // namespace GDMonoUtils
diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h
index 62d31f78fb..259da46c31 100644
--- a/modules/mono/mono_gd/gd_mono_utils.h
+++ b/modules/mono/mono_gd/gd_mono_utils.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GD_MONOUTILS_H
#define GD_MONOUTILS_H
@@ -42,16 +43,13 @@ namespace GDMonoUtils {
typedef MonoObject *(*MarshalUtils_DictToArrays)(MonoObject *, MonoArray **, MonoArray **, MonoObject **);
typedef MonoObject *(*MarshalUtils_ArraysToDict)(MonoArray *, MonoArray *, MonoObject **);
-typedef MonoObject *(*SignalAwaiter_SignalCallback)(MonoObject *, MonoArray **, MonoObject **);
+typedef MonoObject *(*SignalAwaiter_SignalCallback)(MonoObject *, MonoArray *, MonoObject **);
typedef MonoObject *(*SignalAwaiter_FailureCallback)(MonoObject *, MonoObject **);
typedef MonoObject *(*GodotTaskScheduler_Activate)(MonoObject *, MonoObject **);
+typedef MonoArray *(*StackTrace_GetFrames)(MonoObject *, MonoObject **);
+typedef void (*DebugUtils_StackFrameInfo)(MonoObject *, MonoString **, int *, MonoString **, MonoObject **);
struct MonoCache {
- // Format for cached classes in the Godot namespace: class_<Class>
- // Macro: CACHED_CLASS(<Class>)
-
- // Format for cached classes in a different namespace: class_<Namespace>_<Class>
- // Macro: CACHED_NS_CLASS(<Namespace>, <Class>)
// -----------------------------------------------
// corlib classes
@@ -72,6 +70,13 @@ struct MonoCache {
GDMonoClass *class_String;
GDMonoClass *class_IntPtr;
+#ifdef DEBUG_ENABLED
+ GDMonoClass *class_System_Diagnostics_StackTrace;
+ StackTrace_GetFrames methodthunk_System_Diagnostics_StackTrace_GetFrames;
+ GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_bool;
+ GDMonoMethod *method_System_Diagnostics_StackTrace_ctor_Exception_bool;
+#endif
+
MonoClass *rawclass_Dictionary;
// -----------------------------------------------
@@ -95,6 +100,11 @@ struct MonoCache {
GDMonoClass *class_WeakRef;
GDMonoClass *class_MarshalUtils;
+#ifdef DEBUG_ENABLED
+ GDMonoClass *class_DebuggingUtils;
+ DebugUtils_StackFrameInfo methodthunk_DebuggingUtils_GetStackFrameInfo;
+#endif
+
GDMonoClass *class_ExportAttribute;
GDMonoField *field_ExportAttribute_hint;
GDMonoField *field_ExportAttribute_hintString;
@@ -119,10 +129,16 @@ struct MonoCache {
Ref<MonoGCHandle> task_scheduler_handle;
+ bool corlib_cache_updated;
+ bool godot_api_cache_updated;
+
void clear_members();
- void cleanup() {}
+ void cleanup();
MonoCache() {
+ corlib_cache_updated = false;
+ godot_api_cache_updated = false;
+
clear_members();
}
};
@@ -166,15 +182,18 @@ MonoDomain *create_domain(const String &p_friendly_name);
String get_exception_name_and_message(MonoObject *p_ex);
+void print_unhandled_exception(MonoObject *p_exc);
+void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution);
+
} // namespace GDMonoUtils
#define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field(BINDINGS_NATIVE_NAME_FIELD)->get_value(NULL)))
#define CACHED_CLASS(m_class) (GDMonoUtils::mono_cache.class_##m_class)
-#define CACHED_CLASS_RAW(m_class) (GDMonoUtils::mono_cache.class_##m_class->get_raw())
-#define CACHED_NS_CLASS(m_ns, m_class) (GDMonoUtils::mono_cache.class_##m_ns##_##m_class)
+#define CACHED_CLASS_RAW(m_class) (GDMonoUtils::mono_cache.class_##m_class->get_mono_ptr())
#define CACHED_RAW_MONO_CLASS(m_class) (GDMonoUtils::mono_cache.rawclass_##m_class)
#define CACHED_FIELD(m_class, m_field) (GDMonoUtils::mono_cache.field_##m_class##_##m_field)
+#define CACHED_METHOD(m_class, m_method) (GDMonoUtils::mono_cache.method_##m_class##_##m_method)
#define CACHED_METHOD_THUNK(m_class, m_method) (GDMonoUtils::mono_cache.methodthunk_##m_class##_##m_method)
#ifdef REAL_T_IS_DOUBLE
diff --git a/modules/mono/register_types.cpp b/modules/mono/register_types.cpp
index 9bc384063d..4410996546 100644
--- a/modules/mono/register_types.cpp
+++ b/modules/mono/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "engine.h"
diff --git a/modules/mono/register_types.h b/modules/mono/register_types.h
index d4f052b793..ab8a7d6463 100644
--- a/modules/mono/register_types.h
+++ b/modules/mono/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_mono_types();
void unregister_mono_types();
diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp
index bad75224dc..b9d8520ac9 100644
--- a/modules/mono/signal_awaiter_utils.cpp
+++ b/modules/mono/signal_awaiter_utils.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "signal_awaiter_utils.h"
#include "csharp_script.h"
@@ -101,7 +102,7 @@ Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argc
GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback);
MonoObject *ex = NULL;
- thunk(get_target(), &signal_args, &ex);
+ thunk(get_target(), signal_args, &ex);
if (ex) {
mono_print_unhandled_exception(ex);
diff --git a/modules/mono/signal_awaiter_utils.h b/modules/mono/signal_awaiter_utils.h
index 97cf4238da..a6a205ff8d 100644
--- a/modules/mono/signal_awaiter_utils.h
+++ b/modules/mono/signal_awaiter_utils.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SIGNAL_AWAITER_UTILS_H
#define SIGNAL_AWAITER_UTILS_H
diff --git a/modules/mono/utils/mono_reg_utils.cpp b/modules/mono/utils/mono_reg_utils.cpp
index 8d91e16c5c..9bb8da8ac0 100644
--- a/modules/mono/utils/mono_reg_utils.cpp
+++ b/modules/mono/utils/mono_reg_utils.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mono_reg_utils.h"
#ifdef WINDOWS_ENABLED
diff --git a/modules/mono/utils/mono_reg_utils.h b/modules/mono/utils/mono_reg_utils.h
index 80270ad794..edf31f5a07 100644
--- a/modules/mono/utils/mono_reg_utils.h
+++ b/modules/mono/utils/mono_reg_utils.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MONO_REG_UTILS_H
#define MONO_REG_UTILS_H
diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp
index dfbb1b9ba4..4b77aeb54e 100644
--- a/modules/mono/utils/path_utils.cpp
+++ b/modules/mono/utils/path_utils.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_utils.h"
#include "os/dir_access.h"
diff --git a/modules/mono/utils/path_utils.h b/modules/mono/utils/path_utils.h
index 4e8d8f2815..184cacfac7 100644
--- a/modules/mono/utils/path_utils.h
+++ b/modules/mono/utils/path_utils.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_UTILS_H
#define PATH_UTILS_H
diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp
index 4bea504d28..8691932f9a 100644
--- a/modules/mono/utils/string_utils.cpp
+++ b/modules/mono/utils/string_utils.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "string_utils.h"
namespace {
diff --git a/modules/mono/utils/string_utils.h b/modules/mono/utils/string_utils.h
index b02abc77be..5dddaee6e8 100644
--- a/modules/mono/utils/string_utils.h
+++ b/modules/mono/utils/string_utils.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STRING_FORMAT_H
#define STRING_FORMAT_H
diff --git a/modules/ogg/register_types.cpp b/modules/ogg/register_types.cpp
index 993b2f9e1b..dba5dcc6e2 100644
--- a/modules/ogg/register_types.cpp
+++ b/modules/ogg/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
// Dummy module as libogg is needed by other modules (vorbis, theora, opus, ...)
diff --git a/modules/ogg/register_types.h b/modules/ogg/register_types.h
index 39482dc71b..e82c90de0b 100644
--- a/modules/ogg/register_types.h
+++ b/modules/ogg/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_ogg_types();
void unregister_ogg_types();
diff --git a/modules/openssl/register_types.cpp b/modules/openssl/register_types.cpp
index e103b3b9bf..916acc260e 100644
--- a/modules/openssl/register_types.cpp
+++ b/modules/openssl/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "stream_peer_openssl.h"
diff --git a/modules/openssl/register_types.h b/modules/openssl/register_types.h
index d87f1a31df..94d917ca81 100644
--- a/modules/openssl/register_types.h
+++ b/modules/openssl/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_openssl_types();
void unregister_openssl_types();
diff --git a/modules/openssl/stream_peer_openssl.cpp b/modules/openssl/stream_peer_openssl.cpp
index 30a03f9000..e3cb9bbdf8 100644
--- a/modules/openssl/stream_peer_openssl.cpp
+++ b/modules/openssl/stream_peer_openssl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "stream_peer_openssl.h"
// Compatibility with OpenSSL 1.1.0.
diff --git a/modules/openssl/stream_peer_openssl.h b/modules/openssl/stream_peer_openssl.h
index a696e29d6c..29c8647e58 100644
--- a/modules/openssl/stream_peer_openssl.h
+++ b/modules/openssl/stream_peer_openssl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STREAM_PEER_OPEN_SSL_H
#define STREAM_PEER_OPEN_SSL_H
diff --git a/modules/opus/audio_stream_opus.cpp b/modules/opus/audio_stream_opus.cpp
index 260612e370..8323ff33ac 100644
--- a/modules/opus/audio_stream_opus.cpp
+++ b/modules/opus/audio_stream_opus.cpp
@@ -8,8 +8,6 @@
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
-/* Author: George Marques <george@gmarqu.es> */
-/* */
/* 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 */
@@ -29,8 +27,13 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_stream_opus.h"
+/**
+ @author George Marques <george@gmarqu.es>
+*/
+
const float AudioStreamPlaybackOpus::osrate = 48000.0f;
int AudioStreamPlaybackOpus::_op_read_func(void *_stream, unsigned char *_ptr, int _nbytes) {
diff --git a/modules/opus/audio_stream_opus.h b/modules/opus/audio_stream_opus.h
index 7be133b5bc..3ffdaf2c18 100644
--- a/modules/opus/audio_stream_opus.h
+++ b/modules/opus/audio_stream_opus.h
@@ -8,8 +8,6 @@
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
/* */
-/* Author: George Marques <george@gmarqu.es> */
-/* */
/* 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 */
@@ -39,6 +37,10 @@
#include <opus/opusfile.h>
+/**
+ @author George Marques <george@gmarqu.es>
+*/
+
class AudioStreamPlaybackOpus : public AudioStreamPlayback {
GDCLASS(AudioStreamPlaybackOpus, AudioStreamPlayback)
diff --git a/modules/opus/register_types.cpp b/modules/opus/register_types.cpp
index 41bee6d552..f34555841e 100644
--- a/modules/opus/register_types.cpp
+++ b/modules/opus/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "audio_stream_opus.h"
diff --git a/modules/opus/register_types.h b/modules/opus/register_types.h
index 85a7efbfc0..84335adfc9 100644
--- a/modules/opus/register_types.h
+++ b/modules/opus/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_opus_types();
void unregister_opus_types();
diff --git a/modules/opus/stub/register_types.cpp b/modules/opus/stub/register_types.cpp
index 449edcc0f5..fe2bce63ba 100644
--- a/modules/opus/stub/register_types.cpp
+++ b/modules/opus/stub/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
// Dummy module as libvorbis is needed by other modules (theora ...)
diff --git a/modules/opus/stub/register_types.h b/modules/opus/stub/register_types.h
index c41cc4818c..84335adfc9 100644
--- a/modules/opus/stub/register_types.h
+++ b/modules/opus/stub/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_opus_types();
void unregister_opus_types();
diff --git a/modules/pbm/SCsub b/modules/pbm/SCsub
deleted file mode 100644
index fa328be025..0000000000
--- a/modules/pbm/SCsub
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-Import('env_modules')
-
-env_pbm = env_modules.Clone()
-
-env_pbm.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/pbm/bitmap_loader_pbm.cpp b/modules/pbm/bitmap_loader_pbm.cpp
deleted file mode 100644
index 39d238ae5c..0000000000
--- a/modules/pbm/bitmap_loader_pbm.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*************************************************************************/
-/* bitmap_loader_pbm.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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 "bitmap_loader_pbm.h"
-#include "os/file_access.h"
-#include "scene/resources/bit_mask.h"
-
-static bool _get_token(FileAccessRef &f, uint8_t &saved, PoolVector<uint8_t> &r_token, bool p_binary = false, bool p_single_chunk = false) {
-
- int token_max = r_token.size();
- PoolVector<uint8_t>::Write w;
- if (token_max)
- w = r_token.write();
- int ofs = 0;
- bool lf = false;
-
- while (true) {
-
- uint8_t b;
- if (saved) {
- b = saved;
- saved = 0;
- } else {
- b = f->get_8();
- }
- if (f->eof_reached()) {
- if (ofs) {
- w = PoolVector<uint8_t>::Write();
- r_token.resize(ofs);
- return true;
- } else {
- return false;
- }
- }
-
- if (!ofs && !p_binary && b == '#') {
- //skip comment
- while (b != '\n') {
- if (f->eof_reached()) {
- return false;
- }
-
- b = f->get_8();
- }
-
- lf = true;
-
- } else if (b <= 32 && !(p_binary && (ofs || lf))) {
-
- if (b == '\n') {
- lf = true;
- }
-
- if (ofs && !p_single_chunk) {
- w = PoolVector<uint8_t>::Write();
- r_token.resize(ofs);
- saved = b;
-
- return true;
- }
- } else {
-
- bool resized = false;
- while (ofs >= token_max) {
- if (token_max)
- token_max <<= 1;
- else
- token_max = 1;
- resized = true;
- }
- if (resized) {
- // Note: Certain C++ static analyzers might point out that the following assigment is unnecessary.
- // This is wrong since PoolVector<class T>::Write has an operator= method where the lhs gets updated under certain conditions.
- // See core/dvector.h.
- w = PoolVector<uint8_t>::Write();
- r_token.resize(token_max);
- w = r_token.write();
- }
- w[ofs++] = b;
- }
- }
-
- return false;
-}
-
-static int _get_number_from_token(PoolVector<uint8_t> &r_token) {
-
- int len = r_token.size();
- PoolVector<uint8_t>::Read r = r_token.read();
- return String::to_int((const char *)r.ptr(), len);
-}
-
-RES ResourceFormatPBM::load(const String &p_path, const String &p_original_path, Error *r_error) {
-
-#define _RETURN(m_err) \
- { \
- if (r_error) \
- *r_error = m_err; \
- ERR_FAIL_V(RES()); \
- }
-
- FileAccessRef f = FileAccess::open(p_path, FileAccess::READ);
- uint8_t saved = 0;
- if (!f)
- _RETURN(ERR_CANT_OPEN);
-
- PoolVector<uint8_t> token;
-
- if (!_get_token(f, saved, token)) {
- _RETURN(ERR_PARSE_ERROR);
- }
-
- if (token.size() != 2) {
- _RETURN(ERR_FILE_CORRUPT);
- }
- if (token[0] != 'P') {
- _RETURN(ERR_FILE_CORRUPT);
- }
- if (token[1] != '1' && token[1] != '4') {
- _RETURN(ERR_FILE_CORRUPT);
- }
-
- bool bits = token[1] == '4';
-
- if (!_get_token(f, saved, token)) {
- _RETURN(ERR_PARSE_ERROR);
- }
-
- int width = _get_number_from_token(token);
- if (width <= 0) {
- _RETURN(ERR_FILE_CORRUPT);
- }
-
- if (!_get_token(f, saved, token)) {
- _RETURN(ERR_PARSE_ERROR);
- }
-
- int height = _get_number_from_token(token);
- if (height <= 0) {
- _RETURN(ERR_FILE_CORRUPT);
- }
-
- Ref<BitMap> bm;
- bm.instance();
- bm->create(Size2i(width, height));
-
- if (!bits) {
-
- int required_bytes = width * height;
- if (!_get_token(f, saved, token, false, true)) {
- _RETURN(ERR_PARSE_ERROR);
- }
-
- if (token.size() < required_bytes) {
- _RETURN(ERR_FILE_CORRUPT);
- }
-
- PoolVector<uint8_t>::Read r = token.read();
-
- for (int i = 0; i < height; i++) {
- for (int j = 0; j < width; j++) {
-
- char num = r[i * width + j];
- bm->set_bit(Point2i(j, i), num == '0');
- }
- }
-
- } else {
- //a single, entire token of bits!
- if (!_get_token(f, saved, token, true)) {
- _RETURN(ERR_PARSE_ERROR);
- }
- int required_bytes = Math::ceil((width * height) / 8.0);
- if (token.size() < required_bytes) {
- _RETURN(ERR_FILE_CORRUPT);
- }
-
- PoolVector<uint8_t>::Read r = token.read();
- int bitwidth = width;
- if (bitwidth % 8)
- bitwidth += 8 - (bitwidth % 8);
-
- for (int i = 0; i < height; i++) {
- for (int j = 0; j < width; j++) {
-
- int ofs = bitwidth * i + j;
-
- uint8_t byte = r[ofs / 8];
- bool bit = (byte >> (7 - (ofs % 8))) & 1;
-
- bm->set_bit(Point2i(j, i), !bit);
- }
- }
- }
-
- return bm;
-}
-
-void ResourceFormatPBM::get_recognized_extensions(List<String> *p_extensions) const {
- p_extensions->push_back("pbm");
-}
-bool ResourceFormatPBM::handles_type(const String &p_type) const {
- return p_type == "BitMap";
-}
-String ResourceFormatPBM::get_resource_type(const String &p_path) const {
-
- if (p_path.get_extension().to_lower() == "pbm")
- return "BitMap";
- return "";
-}
diff --git a/modules/pbm/config.py b/modules/pbm/config.py
deleted file mode 100644
index 5f133eba90..0000000000
--- a/modules/pbm/config.py
+++ /dev/null
@@ -1,5 +0,0 @@
-def can_build(platform):
- return True
-
-def configure(env):
- pass
diff --git a/modules/pbm/register_types.h b/modules/pbm/register_types.h
deleted file mode 100644
index 958e162da1..0000000000
--- a/modules/pbm/register_types.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*************************************************************************/
-/* register_types.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2018 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. */
-/*************************************************************************/
-void register_pbm_types();
-void unregister_pbm_types();
diff --git a/modules/pvr/register_types.cpp b/modules/pvr/register_types.cpp
index f1cd481a4a..0991828ef2 100644
--- a/modules/pvr/register_types.cpp
+++ b/modules/pvr/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "texture_loader_pvr.h"
diff --git a/modules/pvr/register_types.h b/modules/pvr/register_types.h
index b53dd8da52..d187ab5334 100644
--- a/modules/pvr/register_types.h
+++ b/modules/pvr/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_pvr_types();
void unregister_pvr_types();
diff --git a/modules/pvr/texture_loader_pvr.cpp b/modules/pvr/texture_loader_pvr.cpp
index 5046526d81..76c0b969d8 100644
--- a/modules/pvr/texture_loader_pvr.cpp
+++ b/modules/pvr/texture_loader_pvr.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_loader_pvr.h"
#include "PvrTcEncoder.h"
#include "RgbaBitmap.h"
diff --git a/modules/pvr/texture_loader_pvr.h b/modules/pvr/texture_loader_pvr.h
index ae6df3658a..9369178336 100644
--- a/modules/pvr/texture_loader_pvr.h
+++ b/modules/pvr/texture_loader_pvr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_LOADER_PVR_H
#define TEXTURE_LOADER_PVR_H
diff --git a/modules/regex/doc_classes/RegEx.xml b/modules/regex/doc_classes/RegEx.xml
index 8cd163b0c8..2cf80acd28 100644
--- a/modules/regex/doc_classes/RegEx.xml
+++ b/modules/regex/doc_classes/RegEx.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RegEx" inherits="Reference" category="Core" version="3.0-beta">
+<class name="RegEx" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Class for searching text for patterns using regular expressions.
</brief_description>
diff --git a/modules/regex/doc_classes/RegExMatch.xml b/modules/regex/doc_classes/RegExMatch.xml
index 0217099ce6..9eba0f738b 100644
--- a/modules/regex/doc_classes/RegExMatch.xml
+++ b/modules/regex/doc_classes/RegExMatch.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RegExMatch" inherits="Reference" category="Core" version="3.0-beta">
+<class name="RegExMatch" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
Contains the results of a regex search.
</brief_description>
@@ -28,13 +28,6 @@
Returns the number of capturing groups.
</description>
</method>
- <method name="get_names" qualifiers="const">
- <return type="Dictionary">
- </return>
- <description>
- Returns a dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one.
- </description>
- </method>
<method name="get_start" qualifiers="const">
<return type="int">
</return>
@@ -55,21 +48,18 @@
Returns an empty string if the group did not match or doesn't exist.
</description>
</method>
- <method name="get_strings" qualifiers="const">
- <return type="Array">
- </return>
- <description>
- Returns an [Array] of the match and its capturing groups.
- </description>
- </method>
- <method name="get_subject" qualifiers="const">
- <return type="String">
- </return>
- <description>
- Returns the source string used with the search pattern to find this matching result.
- </description>
- </method>
</methods>
+ <members>
+ <member name="names" type="Dictionary" setter="" getter="get_names">
+ A dictionary of named groups and its corresponding group number. Only groups with that were matched are included. If multiple groups have the same name, that name would refer to the first matching one.
+ </member>
+ <member name="strings" type="Array" setter="" getter="get_strings">
+ An [Array] of the match and its capturing groups.
+ </member>
+ <member name="subject" type="String" setter="" getter="get_subject">
+ The source string used with the search pattern to find this matching result.
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/modules/regex/regex.cpp b/modules/regex/regex.cpp
index 9bcbc4c4ea..6f2bb46fc8 100644
--- a/modules/regex/regex.cpp
+++ b/modules/regex/regex.cpp
@@ -156,6 +156,10 @@ void RegExMatch::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_string", "name"), &RegExMatch::get_string, DEFVAL(0));
ClassDB::bind_method(D_METHOD("get_start", "name"), &RegExMatch::get_start, DEFVAL(0));
ClassDB::bind_method(D_METHOD("get_end", "name"), &RegExMatch::get_end, DEFVAL(0));
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "subject"), "", "get_subject");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "names"), "", "get_names");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "strings"), "", "get_strings");
}
void RegEx::_pattern_info(uint32_t what, void *where) const {
@@ -343,15 +347,20 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a
ERR_FAIL_COND_V(!is_valid(), String());
- String output;
- output.resize(p_subject.length());
+ // safety_zone is the number of chars we allocate in addition to the number of chars expected in order to
+ // guard against the PCRE API writing one additional \0 at the end. PCRE's API docs are unclear on whether
+ // PCRE understands outlength in pcre2_substitute() as counting an implicit additional terminating char or
+ // not. always allocating one char more than telling PCRE has us on the safe side.
+ const int safety_zone = 1;
+
+ PCRE2_SIZE olength = p_subject.length() + 1; // space for output string and one terminating \0 character
+ Vector<CharType> output;
+ output.resize(olength + safety_zone);
uint32_t flags = PCRE2_SUBSTITUTE_OVERFLOW_LENGTH;
if (p_all)
flags |= PCRE2_SUBSTITUTE_GLOBAL;
- PCRE2_SIZE olength = output.length();
-
PCRE2_SIZE length = p_subject.length();
if (p_end >= 0 && (uint32_t)p_end < length)
length = p_end;
@@ -363,15 +372,15 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a
pcre2_match_context_16 *mctx = pcre2_match_context_create_16(gctx);
PCRE2_SPTR16 s = (PCRE2_SPTR16)p_subject.c_str();
PCRE2_SPTR16 r = (PCRE2_SPTR16)p_replacement.c_str();
- PCRE2_UCHAR16 *o = (PCRE2_UCHAR16 *)output.c_str();
+ PCRE2_UCHAR16 *o = (PCRE2_UCHAR16 *)output.ptrw();
pcre2_match_data_16 *match = pcre2_match_data_create_from_pattern_16(c, gctx);
int res = pcre2_substitute_16(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength);
if (res == PCRE2_ERROR_NOMEMORY) {
- output.resize(olength);
- o = (PCRE2_UCHAR16 *)output.c_str();
+ output.resize(olength + safety_zone);
+ o = (PCRE2_UCHAR16 *)output.ptrw();
res = pcre2_substitute_16(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength);
}
@@ -388,15 +397,15 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a
pcre2_match_context_32 *mctx = pcre2_match_context_create_32(gctx);
PCRE2_SPTR32 s = (PCRE2_SPTR32)p_subject.c_str();
PCRE2_SPTR32 r = (PCRE2_SPTR32)p_replacement.c_str();
- PCRE2_UCHAR32 *o = (PCRE2_UCHAR32 *)output.c_str();
+ PCRE2_UCHAR32 *o = (PCRE2_UCHAR32 *)output.ptrw();
pcre2_match_data_32 *match = pcre2_match_data_create_from_pattern_32(c, gctx);
int res = pcre2_substitute_32(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength);
if (res == PCRE2_ERROR_NOMEMORY) {
- output.resize(olength);
- o = (PCRE2_UCHAR32 *)output.c_str();
+ output.resize(olength + safety_zone);
+ o = (PCRE2_UCHAR32 *)output.ptrw();
res = pcre2_substitute_32(c, s, length, p_offset, flags, match, mctx, r, p_replacement.length(), o, &olength);
}
@@ -407,7 +416,7 @@ String RegEx::sub(const String &p_subject, const String &p_replacement, bool p_a
return String();
}
- return output;
+ return String(output.ptr(), olength);
}
bool RegEx::is_valid() const {
diff --git a/modules/register_module_types.h b/modules/register_module_types.h
index 4f9c2eb41f..f4163418e8 100644
--- a/modules/register_module_types.h
+++ b/modules/register_module_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_MODULE_TYPES_H
#define REGISTER_MODULE_TYPES_H
diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp
index c97cee6e1d..0cf24dd8d8 100644
--- a/modules/squish/image_compress_squish.cpp
+++ b/modules/squish/image_compress_squish.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_compress_squish.h"
#include "print_string.h"
diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h
index 83dab024b2..c022063fe5 100644
--- a/modules/squish/image_compress_squish.h
+++ b/modules/squish/image_compress_squish.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_COMPRESS_SQUISH_H
#define IMAGE_COMPRESS_SQUISH_H
diff --git a/modules/squish/register_types.cpp b/modules/squish/register_types.cpp
index 600a33cdd6..d4ed676cce 100644
--- a/modules/squish/register_types.cpp
+++ b/modules/squish/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#ifdef TOOLS_ENABLED
diff --git a/modules/squish/register_types.h b/modules/squish/register_types.h
index f9971f4f19..00f5c345c4 100644
--- a/modules/squish/register_types.h
+++ b/modules/squish/register_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef TOOLS_ENABLED
void register_squish_types();
void unregister_squish_types();
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
index 7ab3d0a140..18ab616826 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_stream_ogg_vorbis.h"
#include "os/file_access.h"
@@ -114,7 +115,7 @@ void AudioStreamPlaybackOGGVorbis::seek(float p_time) {
if (!active)
return;
- if (p_time >= get_length()) {
+ if (p_time >= vorbis_stream->get_length()) {
p_time = 0;
}
frames_mixed = uint32_t(vorbis_stream->sample_rate * p_time);
@@ -122,11 +123,6 @@ void AudioStreamPlaybackOGGVorbis::seek(float p_time) {
stb_vorbis_seek(ogg_stream, frames_mixed);
}
-float AudioStreamPlaybackOGGVorbis::get_length() const {
-
- return vorbis_stream->length;
-}
-
AudioStreamPlaybackOGGVorbis::~AudioStreamPlaybackOGGVorbis() {
if (ogg_alloc.alloc_buffer) {
stb_vorbis_close(ogg_stream);
@@ -164,6 +160,14 @@ String AudioStreamOGGVorbis::get_stream_name() const {
return ""; //return stream_name;
}
+void AudioStreamOGGVorbis::clear_data() {
+ if (data) {
+ AudioServer::get_singleton()->audio_data_free(data);
+ data = NULL;
+ data_len = 0;
+ }
+}
+
void AudioStreamOGGVorbis::set_data(const PoolVector<uint8_t> &p_data) {
int src_data_len = p_data.size();
@@ -209,6 +213,9 @@ void AudioStreamOGGVorbis::set_data(const PoolVector<uint8_t> &p_data) {
length = stb_vorbis_stream_length_in_seconds(ogg_stream);
stb_vorbis_close(ogg_stream);
+ // free any existing data
+ clear_data();
+
data = AudioServer::get_singleton()->audio_data_alloc(src_data_len, src_datar.ptr());
data_len = src_data_len;
@@ -249,10 +256,15 @@ float AudioStreamOGGVorbis::get_loop_offset() const {
return loop_offset;
}
+float AudioStreamOGGVorbis::get_length() const {
+
+ return length;
+}
+
void AudioStreamOGGVorbis::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamOGGVorbis::set_data);
- ClassDB::bind_method(D_METHOD("get_data"), &AudioStreamOGGVorbis::get_data);
+ ClassDB::bind_method(D_METHOD("_set_data", "data"), &AudioStreamOGGVorbis::set_data);
+ ClassDB::bind_method(D_METHOD("_get_data"), &AudioStreamOGGVorbis::get_data);
ClassDB::bind_method(D_METHOD("set_loop", "enable"), &AudioStreamOGGVorbis::set_loop);
ClassDB::bind_method(D_METHOD("has_loop"), &AudioStreamOGGVorbis::has_loop);
@@ -260,7 +272,7 @@ void AudioStreamOGGVorbis::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_loop_offset", "seconds"), &AudioStreamOGGVorbis::set_loop_offset);
ClassDB::bind_method(D_METHOD("get_loop_offset"), &AudioStreamOGGVorbis::get_loop_offset);
- ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop", "has_loop");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "loop_offset", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_loop_offset", "get_loop_offset");
}
@@ -275,3 +287,7 @@ AudioStreamOGGVorbis::AudioStreamOGGVorbis() {
decode_mem_size = 0;
loop = false;
}
+
+AudioStreamOGGVorbis::~AudioStreamOGGVorbis() {
+ clear_data();
+}
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.h b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
index f920047703..d7bc7cc0d7 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_STREAM_STB_VORBIS_H
#define AUDIO_STREAM_STB_VORBIS_H
@@ -70,8 +71,6 @@ public:
virtual float get_playback_position() const;
virtual void seek(float p_time);
- virtual float get_length() const; //if supported, otherwise return 0
-
AudioStreamPlaybackOGGVorbis() {}
~AudioStreamPlaybackOGGVorbis();
};
@@ -93,6 +92,7 @@ class AudioStreamOGGVorbis : public AudioStream {
float length;
bool loop;
float loop_offset;
+ void clear_data();
protected:
static void _bind_methods();
@@ -110,7 +110,10 @@ public:
void set_data(const PoolVector<uint8_t> &p_data);
PoolVector<uint8_t> get_data() const;
+ virtual float get_length() const; //if supported, otherwise return 0
+
AudioStreamOGGVorbis();
+ virtual ~AudioStreamOGGVorbis();
};
#endif
diff --git a/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml b/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml
index 4533d59cae..827e947a79 100644
--- a/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml
+++ b/modules/stb_vorbis/doc_classes/AudioStreamOGGVorbis.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioStreamOGGVorbis" inherits="AudioStream" category="Core" version="3.0-beta">
+<class name="AudioStreamOGGVorbis" inherits="AudioStream" category="Core" version="3.0-stable">
<brief_description>
OGG Vorbis audio stream driver.
</brief_description>
@@ -11,49 +11,13 @@
<demos>
</demos>
<methods>
- <method name="get_data" qualifiers="const">
- <return type="PoolByteArray">
- </return>
- <description>
- </description>
- </method>
- <method name="get_loop_offset" qualifiers="const">
- <return type="float">
- </return>
- <description>
- </description>
- </method>
- <method name="has_loop" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
- <method name="set_data">
- <return type="void">
- </return>
- <argument index="0" name="data" type="PoolByteArray">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_loop">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
- <method name="set_loop_offset">
- <return type="void">
- </return>
- <argument index="0" name="seconds" type="float">
- </argument>
- <description>
- </description>
- </method>
</methods>
+ <members>
+ <member name="loop" type="bool" setter="set_loop" getter="has_loop">
+ </member>
+ <member name="loop_offset" type="float" setter="set_loop_offset" getter="get_loop_offset">
+ </member>
+ </members>
<constants>
</constants>
</class>
diff --git a/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml b/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml
index 9d541cda58..9a095c3ddd 100644
--- a/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml
+++ b/modules/stb_vorbis/doc_classes/ResourceImporterOGGVorbis.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceImporterOGGVorbis" inherits="ResourceImporter" category="Core" version="3.0-beta">
+<class name="ResourceImporterOGGVorbis" inherits="ResourceImporter" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/stb_vorbis/register_types.cpp b/modules/stb_vorbis/register_types.cpp
index 992cc1f159..514ef4c071 100644
--- a/modules/stb_vorbis/register_types.cpp
+++ b/modules/stb_vorbis/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "audio_stream_ogg_vorbis.h"
#include "resource_importer_ogg_vorbis.h"
diff --git a/modules/stb_vorbis/register_types.h b/modules/stb_vorbis/register_types.h
index 9af22e2374..142be0efdf 100644
--- a/modules/stb_vorbis/register_types.h
+++ b/modules/stb_vorbis/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_stb_vorbis_types();
void unregister_stb_vorbis_types();
diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
index db4443255d..16ebfa2832 100644
--- a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_ogg_vorbis.h"
#include "io/resource_saver.h"
diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.h b/modules/stb_vorbis/resource_importer_ogg_vorbis.h
index 9b7bf1946e..a1847545aa 100644
--- a/modules/stb_vorbis/resource_importer_ogg_vorbis.h
+++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTEROGGVORBIS_H
#define RESOURCEIMPORTEROGGVORBIS_H
diff --git a/modules/svg/image_loader_svg.cpp b/modules/svg/image_loader_svg.cpp
index ea538a2895..8ccd229f3d 100644
--- a/modules/svg/image_loader_svg.cpp
+++ b/modules/svg/image_loader_svg.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_svg.h"
#include "os/os.h"
diff --git a/modules/svg/image_loader_svg.h b/modules/svg/image_loader_svg.h
index 61bf390bc7..63854da2f6 100644
--- a/modules/svg/image_loader_svg.h
+++ b/modules/svg/image_loader_svg.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_SVG_H
#define IMAGE_LOADER_SVG_H
diff --git a/modules/svg/register_types.cpp b/modules/svg/register_types.cpp
index ddd63009f7..56426662cd 100644
--- a/modules/svg/register_types.cpp
+++ b/modules/svg/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_svg.h"
diff --git a/modules/svg/register_types.h b/modules/svg/register_types.h
index 8759e3cdd5..015c586c6b 100644
--- a/modules/svg/register_types.h
+++ b/modules/svg/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_svg_types();
void unregister_svg_types();
diff --git a/modules/tga/image_loader_tga.cpp b/modules/tga/image_loader_tga.cpp
index dec8526b0a..7391bed699 100644
--- a/modules/tga/image_loader_tga.cpp
+++ b/modules/tga/image_loader_tga.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_tga.h"
#include "os/os.h"
diff --git a/modules/tga/image_loader_tga.h b/modules/tga/image_loader_tga.h
index 2a0b6f4504..c4b10b7f49 100644
--- a/modules/tga/image_loader_tga.h
+++ b/modules/tga/image_loader_tga.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_TGA_H
#define IMAGE_LOADER_TGA_H
diff --git a/modules/tga/register_types.cpp b/modules/tga/register_types.cpp
index 81991b1142..ac1b56af16 100644
--- a/modules/tga/register_types.cpp
+++ b/modules/tga/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_tga.h"
diff --git a/modules/tga/register_types.h b/modules/tga/register_types.h
index 1b6f66a4d0..6483f2576e 100644
--- a/modules/tga/register_types.h
+++ b/modules/tga/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_tga_types();
void unregister_tga_types();
diff --git a/modules/thekla_unwrap/SCsub b/modules/thekla_unwrap/SCsub
index c57bf326ea..d23ba10d4c 100644
--- a/modules/thekla_unwrap/SCsub
+++ b/modules/thekla_unwrap/SCsub
@@ -1,5 +1,7 @@
#!/usr/bin/env python
+import platform
+
Import('env')
Import('env_modules')
@@ -60,7 +62,13 @@ if env['builtin_thekla_atlas']:
env_thekla_unwrap.Append(CXXFLAGS="-std=c++11")
if env["platform"] == 'x11':
- env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_LINUX", "-DPOSH_COMPILER_GCC"])
+ # if not specifically one of the *BSD, then use LINUX as default
+ if platform.system() == "FreeBSD":
+ env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_FREEBSD", "-DPOSH_COMPILER_GCC"])
+ elif platform.system() == "OpenBSD":
+ env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_OPENBSD", "-DPOSH_COMPILER_GCC"])
+ else:
+ env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_LINUX", "-DPOSH_COMPILER_GCC"])
elif env["platform"] == 'osx':
env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_DARWIN", "-DPOSH_COMPILER_GCC"])
elif env["platform"] == 'windows':
@@ -69,6 +77,6 @@ if env['builtin_thekla_atlas']:
else:
env_thekla_unwrap.Append(CCFLAGS=["-DNV_OS_MINGW", "-DNV_CC_GNUC", "-DPOSH_COMPILER_GCC", "-U__STRICT_ANSI__"])
env.Append(LIBS=["dbghelp"])
-
+
# Godot source files
env_thekla_unwrap.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/thekla_unwrap/register_types.cpp b/modules/thekla_unwrap/register_types.cpp
index 2dc9217e48..c74cbd9d18 100644
--- a/modules/thekla_unwrap/register_types.cpp
+++ b/modules/thekla_unwrap/register_types.cpp
@@ -27,8 +27,11 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
+#include "error_macros.h"
#include "thirdparty/thekla_atlas/thekla/thekla_atlas.h"
+
#include <stdio.h>
#include <stdlib.h>
extern bool (*array_mesh_lightmap_unwrap_callback)(float p_texel_size, const float *p_vertices, const float *p_normals, int p_vertex_count, const int *p_indices, const int *p_face_materials, int p_index_count, float **r_uv, int **r_vertex, int *r_vertex_count, int **r_index, int *r_index_count, int *r_size_hint_x, int *r_size_hint_y);
@@ -74,6 +77,11 @@ bool thekla_mesh_lightmap_unwrap_callback(float p_texel_size, const float *p_ver
delete[] input_mesh.face_array;
delete[] input_mesh.vertex_array;
+ if (output == NULL) {
+ ERR_PRINT("could not generate atlas output mesh");
+ return false;
+ }
+
if (err != Thekla::Atlas_Error_Success) {
printf("error with atlas\n");
} else {
diff --git a/modules/thekla_unwrap/register_types.h b/modules/thekla_unwrap/register_types.h
index 7a542592b5..8a0eab9437 100644
--- a/modules/thekla_unwrap/register_types.h
+++ b/modules/thekla_unwrap/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_thekla_unwrap_types();
void unregister_thekla_unwrap_types();
diff --git a/modules/theora/doc_classes/ResourceImporterTheora.xml b/modules/theora/doc_classes/ResourceImporterTheora.xml
index 85c7c6bf89..a280d767c3 100644
--- a/modules/theora/doc_classes/ResourceImporterTheora.xml
+++ b/modules/theora/doc_classes/ResourceImporterTheora.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceImporterTheora" inherits="ResourceImporter" category="Core" version="3.0-beta">
+<class name="ResourceImporterTheora" inherits="ResourceImporter" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/theora/doc_classes/VideoStreamTheora.xml b/modules/theora/doc_classes/VideoStreamTheora.xml
index 6c8806ed72..9da3dc0d02 100644
--- a/modules/theora/doc_classes/VideoStreamTheora.xml
+++ b/modules/theora/doc_classes/VideoStreamTheora.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VideoStreamTheora" inherits="VideoStream" category="Core" version="3.0-beta">
+<class name="VideoStreamTheora" inherits="VideoStream" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/theora/register_types.cpp b/modules/theora/register_types.cpp
index c6d125226b..9bc5ed903a 100644
--- a/modules/theora/register_types.cpp
+++ b/modules/theora/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "resource_importer_theora.h"
#include "video_stream_theora.h"
diff --git a/modules/theora/register_types.h b/modules/theora/register_types.h
index 69b43744b5..4a81d7743b 100644
--- a/modules/theora/register_types.h
+++ b/modules/theora/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_theora_types();
void unregister_theora_types();
diff --git a/modules/theora/resource_importer_theora.cpp b/modules/theora/resource_importer_theora.cpp
index 0c9a21c825..ee9bab74a7 100644
--- a/modules/theora/resource_importer_theora.cpp
+++ b/modules/theora/resource_importer_theora.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_theora.h"
#include "io/resource_saver.h"
diff --git a/modules/theora/resource_importer_theora.h b/modules/theora/resource_importer_theora.h
index 913bf87a42..e3c79287ad 100644
--- a/modules/theora/resource_importer_theora.h
+++ b/modules/theora/resource_importer_theora.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTEROGGTHEORA_H
#define RESOURCEIMPORTEROGGTHEORA_H
diff --git a/modules/theora/video_stream_theora.cpp b/modules/theora/video_stream_theora.cpp
index 5702134791..58c6d73ab2 100644
--- a/modules/theora/video_stream_theora.cpp
+++ b/modules/theora/video_stream_theora.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "video_stream_theora.h"
#include "os/os.h"
@@ -309,9 +310,6 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
/* and now we have it all. initialize decoders */
if (theora_p) {
td = th_decode_alloc(&ti, ts);
- printf("Ogg logical stream %lx is Theora %dx%d %.02f fps",
- to.serialno, ti.pic_width, ti.pic_height,
- (double)ti.fps_numerator / ti.fps_denominator);
px_fmt = ti.pixel_fmt;
switch (ti.pixel_fmt) {
case TH_PF_420: printf(" 4:2:0 video\n"); break;
@@ -322,9 +320,6 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
printf(" video\n (UNKNOWN Chroma sampling!)\n");
break;
}
- if (ti.pic_width != ti.frame_width || ti.pic_height != ti.frame_height)
- printf(" Frame content is %dx%d with offset (%d,%d).\n",
- ti.frame_width, ti.frame_height, ti.pic_x, ti.pic_y);
th_decode_ctl(td, TH_DECCTL_GET_PPLEVEL_MAX, &pp_level_max,
sizeof(pp_level_max));
pp_level = 0;
@@ -351,10 +346,7 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
if (vorbis_p) {
vorbis_synthesis_init(&vd, &vi);
vorbis_block_init(&vd, &vb);
- fprintf(stderr, "Ogg logical stream %lx is Vorbis %d channel %ld Hz audio.\n",
- vo.serialno, vi.channels, vi.rate);
//_setup(vi.channels, vi.rate);
-
} else {
/* tear down the partial vorbis setup */
vorbis_info_clear(&vi);
@@ -732,5 +724,5 @@ void VideoStreamTheora::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamTheora::set_file);
ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamTheora::get_file);
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_file", "get_file");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file");
}
diff --git a/modules/theora/video_stream_theora.h b/modules/theora/video_stream_theora.h
index cbcdd34bfc..4bdbbdae20 100644
--- a/modules/theora/video_stream_theora.h
+++ b/modules/theora/video_stream_theora.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VIDEO_STREAM_THEORA_H
#define VIDEO_STREAM_THEORA_H
diff --git a/modules/tinyexr/image_loader_tinyexr.cpp b/modules/tinyexr/image_loader_tinyexr.cpp
index c4d9e7c7e0..0abefe11ee 100644
--- a/modules/tinyexr/image_loader_tinyexr.cpp
+++ b/modules/tinyexr/image_loader_tinyexr.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_tinyexr.h"
#include "os/os.h"
diff --git a/modules/tinyexr/image_loader_tinyexr.h b/modules/tinyexr/image_loader_tinyexr.h
index b46c9582e1..6706e0972a 100644
--- a/modules/tinyexr/image_loader_tinyexr.h
+++ b/modules/tinyexr/image_loader_tinyexr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_TINYEXR_H
#define IMAGE_LOADER_TINYEXR_H
diff --git a/modules/tinyexr/register_types.cpp b/modules/tinyexr/register_types.cpp
index 648cc98c25..61217805cf 100644
--- a/modules/tinyexr/register_types.cpp
+++ b/modules/tinyexr/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_tinyexr.h"
diff --git a/modules/tinyexr/register_types.h b/modules/tinyexr/register_types.h
index e2bd8a0cbe..70cd0bfbf8 100644
--- a/modules/tinyexr/register_types.h
+++ b/modules/tinyexr/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_tinyexr_types();
void unregister_tinyexr_types();
diff --git a/modules/visual_script/doc_classes/VisualScript.xml b/modules/visual_script/doc_classes/VisualScript.xml
index 46bd35dd73..a6a43f31b8 100644
--- a/modules/visual_script/doc_classes/VisualScript.xml
+++ b/modules/visual_script/doc_classes/VisualScript.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScript" inherits="Script" category="Core" version="3.0-beta">
+<class name="VisualScript" inherits="Script" category="Core" version="3.0-stable">
<brief_description>
A script implemented in the Visual Script programming environment.
</brief_description>
@@ -9,6 +9,7 @@
You are most likely to use this class via the Visual Script editor or when writing plugins for it.
</description>
<tutorials>
+ http://docs.godotengine.org/en/3.0/getting_started/scripting/visual_script/index.html
</tutorials>
<demos>
</demos>
diff --git a/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml b/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml
index e602214a66..d63a6ad524 100644
--- a/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml
+++ b/modules/visual_script/doc_classes/VisualScriptBasicTypeConstant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptBasicTypeConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptBasicTypeConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node representing a constant from the base types.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
index 9f7d38e957..da4db29086 100644
--- a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
+++ b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptBuiltinFunc" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptBuiltinFunc" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node used to call built-in functions.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptClassConstant.xml b/modules/visual_script/doc_classes/VisualScriptClassConstant.xml
index 78757843cd..189a6f6ad8 100644
--- a/modules/visual_script/doc_classes/VisualScriptClassConstant.xml
+++ b/modules/visual_script/doc_classes/VisualScriptClassConstant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Gets a constant from a given class.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptComment.xml b/modules/visual_script/doc_classes/VisualScriptComment.xml
index c21a082362..5462c379ad 100644
--- a/modules/visual_script/doc_classes/VisualScriptComment.xml
+++ b/modules/visual_script/doc_classes/VisualScriptComment.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptComment" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptComment" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node used to annotate the script.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptCondition.xml b/modules/visual_script/doc_classes/VisualScriptCondition.xml
index f1f87c010d..bb70a17357 100644
--- a/modules/visual_script/doc_classes/VisualScriptCondition.xml
+++ b/modules/visual_script/doc_classes/VisualScriptCondition.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptCondition" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptCondition" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node which branches the flow.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptConstant.xml b/modules/visual_script/doc_classes/VisualScriptConstant.xml
index 39a1e5eba8..e2ccb50bfd 100644
--- a/modules/visual_script/doc_classes/VisualScriptConstant.xml
+++ b/modules/visual_script/doc_classes/VisualScriptConstant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Gets a contant's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptConstructor.xml b/modules/visual_script/doc_classes/VisualScriptConstructor.xml
index cbe8c6c096..da6779b79d 100644
--- a/modules/visual_script/doc_classes/VisualScriptConstructor.xml
+++ b/modules/visual_script/doc_classes/VisualScriptConstructor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptConstructor" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptConstructor" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node which calls a base type constructor.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
index c321c616af..33d2f1437a 100644
--- a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
+++ b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptCustomNode" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptCustomNode" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A scripted Visual Script node.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml b/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml
index 0f396564e2..09fcba4314 100644
--- a/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml
+++ b/modules/visual_script/doc_classes/VisualScriptDeconstruct.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptDeconstruct" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptDeconstruct" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node which deconstructs a base type instance into its parts.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptEditor.xml b/modules/visual_script/doc_classes/VisualScriptEditor.xml
index b433f132c1..8e26758a31 100644
--- a/modules/visual_script/doc_classes/VisualScriptEditor.xml
+++ b/modules/visual_script/doc_classes/VisualScriptEditor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptEditor" inherits="Object" category="Core" version="3.0-beta">
+<class name="VisualScriptEditor" inherits="Object" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml b/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml
index 71e8c7d93c..30f96011d4 100644
--- a/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml
+++ b/modules/visual_script/doc_classes/VisualScriptEmitSignal.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Emits a specified signal.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml b/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml
index b9f356412d..0dc0cdf5eb 100644
--- a/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml
+++ b/modules/visual_script/doc_classes/VisualScriptEngineSingleton.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptEngineSingleton" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptEngineSingleton" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
A Visual Script node returning a singleton from [@GlobalScope]
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptExpression.xml b/modules/visual_script/doc_classes/VisualScriptExpression.xml
index 91c107e069..91f55edb2b 100644
--- a/modules/visual_script/doc_classes/VisualScriptExpression.xml
+++ b/modules/visual_script/doc_classes/VisualScriptExpression.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptExpression" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptExpression" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptFunction.xml b/modules/visual_script/doc_classes/VisualScriptFunction.xml
index 2c63b98b22..bd59d739ea 100644
--- a/modules/visual_script/doc_classes/VisualScriptFunction.xml
+++ b/modules/visual_script/doc_classes/VisualScriptFunction.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptFunction" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptFunction" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml b/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
index 03c47dca7c..e2b732a250 100644
--- a/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
+++ b/modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptFunctionCall" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptFunctionCall" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
index 90ec85e4f4..614176498a 100644
--- a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
+++ b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptFunctionState" inherits="Reference" category="Core" version="3.0-beta">
+<class name="VisualScriptFunctionState" inherits="Reference" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml b/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml
index 4417c8a533..a36f7809c2 100644
--- a/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml
+++ b/modules/visual_script/doc_classes/VisualScriptGlobalConstant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptGlobalConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptGlobalConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptIndexGet.xml b/modules/visual_script/doc_classes/VisualScriptIndexGet.xml
index c0a83f186a..b2d0a194e0 100644
--- a/modules/visual_script/doc_classes/VisualScriptIndexGet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptIndexGet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptIndexGet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptIndexGet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptIndexSet.xml b/modules/visual_script/doc_classes/VisualScriptIndexSet.xml
index 8661341919..7ad200afa4 100644
--- a/modules/visual_script/doc_classes/VisualScriptIndexSet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptIndexSet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptIndexSet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptIndexSet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptInputAction.xml b/modules/visual_script/doc_classes/VisualScriptInputAction.xml
index afe72ba564..45c493887b 100644
--- a/modules/visual_script/doc_classes/VisualScriptInputAction.xml
+++ b/modules/visual_script/doc_classes/VisualScriptInputAction.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptInputAction" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptInputAction" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptIterator.xml b/modules/visual_script/doc_classes/VisualScriptIterator.xml
index 08dfad5acb..28e8a66182 100644
--- a/modules/visual_script/doc_classes/VisualScriptIterator.xml
+++ b/modules/visual_script/doc_classes/VisualScriptIterator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Steps through items in a given input.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptLocalVar.xml b/modules/visual_script/doc_classes/VisualScriptLocalVar.xml
index a4293adaae..66faf448cb 100644
--- a/modules/visual_script/doc_classes/VisualScriptLocalVar.xml
+++ b/modules/visual_script/doc_classes/VisualScriptLocalVar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Gets a local variable's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml b/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml
index c1a279bdb2..8a816e5dd7 100644
--- a/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptLocalVarSet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Changes a local variable's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptMathConstant.xml b/modules/visual_script/doc_classes/VisualScriptMathConstant.xml
index 2cb053ee5f..45fa471c41 100644
--- a/modules/visual_script/doc_classes/VisualScriptMathConstant.xml
+++ b/modules/visual_script/doc_classes/VisualScriptMathConstant.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Commonly used mathematical constants.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptNode.xml b/modules/visual_script/doc_classes/VisualScriptNode.xml
index ef7cf7c3b8..e9d1cd949f 100644
--- a/modules/visual_script/doc_classes/VisualScriptNode.xml
+++ b/modules/visual_script/doc_classes/VisualScriptNode.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptNode" inherits="Resource" category="Core" version="3.0-beta">
+<class name="VisualScriptNode" inherits="Resource" category="Core" version="3.0-stable">
<brief_description>
A node which is part of a [VisualScript].
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptOperator.xml b/modules/visual_script/doc_classes/VisualScriptOperator.xml
index b7819592d9..4538bd3c78 100644
--- a/modules/visual_script/doc_classes/VisualScriptOperator.xml
+++ b/modules/visual_script/doc_classes/VisualScriptOperator.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptOperator" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptOperator" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptPreload.xml b/modules/visual_script/doc_classes/VisualScriptPreload.xml
index 712ec99fdb..3dae0e4b81 100644
--- a/modules/visual_script/doc_classes/VisualScriptPreload.xml
+++ b/modules/visual_script/doc_classes/VisualScriptPreload.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Creates a new [Resource] or loads one from the filesystem.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml b/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml
index 11c50f2b97..7555c83960 100644
--- a/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptPropertyGet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptPropertyGet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptPropertyGet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptPropertySet.xml b/modules/visual_script/doc_classes/VisualScriptPropertySet.xml
index 2e96ccc1f6..dc6a9efd83 100644
--- a/modules/visual_script/doc_classes/VisualScriptPropertySet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptPropertySet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptPropertySet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptPropertySet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptResourcePath.xml b/modules/visual_script/doc_classes/VisualScriptResourcePath.xml
index 36bcf2a460..3789626ed0 100644
--- a/modules/visual_script/doc_classes/VisualScriptResourcePath.xml
+++ b/modules/visual_script/doc_classes/VisualScriptResourcePath.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptResourcePath" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptResourcePath" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptReturn.xml b/modules/visual_script/doc_classes/VisualScriptReturn.xml
index a05c1076a4..1172b7555b 100644
--- a/modules/visual_script/doc_classes/VisualScriptReturn.xml
+++ b/modules/visual_script/doc_classes/VisualScriptReturn.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptReturn" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptReturn" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Exits a function and returns an optional value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSceneNode.xml b/modules/visual_script/doc_classes/VisualScriptSceneNode.xml
index 1a73faaf67..4c6181e040 100644
--- a/modules/visual_script/doc_classes/VisualScriptSceneNode.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSceneNode.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSceneNode" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSceneNode" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Node reference.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSceneTree.xml b/modules/visual_script/doc_classes/VisualScriptSceneTree.xml
index 25ae9c26ac..68cc0d0b55 100644
--- a/modules/visual_script/doc_classes/VisualScriptSceneTree.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSceneTree.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSceneTree" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSceneTree" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSelect.xml b/modules/visual_script/doc_classes/VisualScriptSelect.xml
index 45ac505110..017efdb07a 100644
--- a/modules/visual_script/doc_classes/VisualScriptSelect.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSelect.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSelect" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSelect" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Chooses between two input values.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSelf.xml b/modules/visual_script/doc_classes/VisualScriptSelf.xml
index 2b0c46a4bb..e9b480bbae 100644
--- a/modules/visual_script/doc_classes/VisualScriptSelf.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSelf.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Outputs a reference to the current instance.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSequence.xml b/modules/visual_script/doc_classes/VisualScriptSequence.xml
index 624663b0d3..be793ae36e 100644
--- a/modules/visual_script/doc_classes/VisualScriptSequence.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSequence.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Executes a series of Sequence ports.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSubCall.xml b/modules/visual_script/doc_classes/VisualScriptSubCall.xml
index b7dc5ad65f..85db63b78a 100644
--- a/modules/visual_script/doc_classes/VisualScriptSubCall.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSubCall.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSubCall" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSwitch.xml b/modules/visual_script/doc_classes/VisualScriptSwitch.xml
index a34754b596..ec7565b31a 100644
--- a/modules/visual_script/doc_classes/VisualScriptSwitch.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSwitch.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Branches program flow based on a given input's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptTypeCast.xml b/modules/visual_script/doc_classes/VisualScriptTypeCast.xml
index e61e81c397..d414a95657 100644
--- a/modules/visual_script/doc_classes/VisualScriptTypeCast.xml
+++ b/modules/visual_script/doc_classes/VisualScriptTypeCast.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptTypeCast" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/doc_classes/VisualScriptVariableGet.xml b/modules/visual_script/doc_classes/VisualScriptVariableGet.xml
index 7122d2d3f6..ccd2918ec8 100644
--- a/modules/visual_script/doc_classes/VisualScriptVariableGet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptVariableGet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptVariableGet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptVariableGet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Gets a variable's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptVariableSet.xml b/modules/visual_script/doc_classes/VisualScriptVariableSet.xml
index 3c39da0a8d..e1fc1ba762 100644
--- a/modules/visual_script/doc_classes/VisualScriptVariableSet.xml
+++ b/modules/visual_script/doc_classes/VisualScriptVariableSet.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptVariableSet" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptVariableSet" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Changes a variable's value.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptWhile.xml b/modules/visual_script/doc_classes/VisualScriptWhile.xml
index d8e59a7576..de1ff45746 100644
--- a/modules/visual_script/doc_classes/VisualScriptWhile.xml
+++ b/modules/visual_script/doc_classes/VisualScriptWhile.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptWhile" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptWhile" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
Conditional loop.
</brief_description>
diff --git a/modules/visual_script/doc_classes/VisualScriptYield.xml b/modules/visual_script/doc_classes/VisualScriptYield.xml
index 72ef586c1f..f21b53861a 100644
--- a/modules/visual_script/doc_classes/VisualScriptYield.xml
+++ b/modules/visual_script/doc_classes/VisualScriptYield.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptYield" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptYield" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
@@ -9,22 +9,10 @@
<demos>
</demos>
<methods>
- <method name="get_yield_mode">
- <return type="int" enum="VisualScriptYield.YieldMode">
- </return>
- <description>
- </description>
- </method>
- <method name="set_yield_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="VisualScriptYield.YieldMode">
- </argument>
- <description>
- </description>
- </method>
</methods>
<members>
+ <member name="mode" type="int" setter="set_yield_mode" getter="get_yield_mode" enum="VisualScriptYield.YieldMode">
+ </member>
<member name="wait_time" type="float" setter="set_wait_time" getter="get_wait_time">
</member>
</members>
diff --git a/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml b/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml
index f69043a685..5075fb6ded 100644
--- a/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml
+++ b/modules/visual_script/doc_classes/VisualScriptYieldSignal.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualScriptYieldSignal" inherits="VisualScriptNode" category="Core" version="3.0-beta">
+<class name="VisualScriptYieldSignal" inherits="VisualScriptNode" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/visual_script/register_types.cpp b/modules/visual_script/register_types.cpp
index a9c6554198..2809cff362 100644
--- a/modules/visual_script/register_types.cpp
+++ b/modules/visual_script/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "core/engine.h"
diff --git a/modules/visual_script/register_types.h b/modules/visual_script/register_types.h
index 3d6eb25d10..27b3bd649a 100644
--- a/modules/visual_script/register_types.h
+++ b/modules/visual_script/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_visual_script_types();
void unregister_visual_script_types();
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 26c3aed465..5987fdf5da 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script.h"
#include "os/os.h"
@@ -129,7 +130,7 @@ void VisualScriptNode::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_default_input_values", "values"), &VisualScriptNode::_set_default_input_values);
ClassDB::bind_method(D_METHOD("_get_default_input_values"), &VisualScriptNode::_get_default_input_values);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_default_input_values", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_default_input_values", "_get_default_input_values");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_default_input_values", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_default_input_values", "_get_default_input_values");
ADD_SIGNAL(MethodInfo("ports_changed"));
}
@@ -1318,7 +1319,7 @@ void VisualScript::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data", "data"), &VisualScript::_set_data);
ClassDB::bind_method(D_METHOD("_get_data"), &VisualScript::_get_data);
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
ADD_SIGNAL(MethodInfo("node_ports_changed", PropertyInfo(Variant::STRING, "function"), PropertyInfo(Variant::INT, "id")));
}
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index 76eadece66..69bb522173 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -27,8 +27,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef VSCRIPT_H
-#define VSCRIPT_H
+
+#ifndef VISUAL_SCRIPT_H
+#define VISUAL_SCRIPT_H
#include "os/thread.h"
#include "script_language.h"
@@ -617,4 +618,4 @@ static Ref<VisualScriptNode> create_node_generic(const String &p_name) {
return node;
}
-#endif // VSCRIPT_H
+#endif // VISUAL_SCRIPT_H
diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp
index 3ace2de176..7f0a42da82 100644
--- a/modules/visual_script/visual_script_builtin_funcs.cpp
+++ b/modules/visual_script/visual_script_builtin_funcs.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_builtin_funcs.h"
#include "class_db.h"
@@ -256,10 +257,10 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
case MATH_ASIN:
case MATH_ACOS:
case MATH_ATAN:
- case MATH_ATAN2:
case MATH_SQRT: {
- return PropertyInfo(Variant::REAL, "num");
+ return PropertyInfo(Variant::REAL, "s");
} break;
+ case MATH_ATAN2:
case MATH_FMOD:
case MATH_FPOSMOD: {
if (p_idx == 0)
@@ -272,7 +273,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
case MATH_ROUND:
case MATH_ABS:
case MATH_SIGN: {
- return PropertyInfo(Variant::REAL, "num");
+ return PropertyInfo(Variant::REAL, "s");
} break;
@@ -286,7 +287,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
case MATH_EXP:
case MATH_ISNAN:
case MATH_ISINF: {
- return PropertyInfo(Variant::REAL, "num");
+ return PropertyInfo(Variant::REAL, "s");
} break;
case MATH_EASE: {
if (p_idx == 0)
@@ -317,7 +318,7 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
else if (p_idx == 1)
return PropertyInfo(Variant::REAL, "to");
else
- return PropertyInfo(Variant::REAL, "value");
+ return PropertyInfo(Variant::REAL, "weight");
} break;
case MATH_RANGE_LERP: {
if (p_idx == 0)
@@ -414,14 +415,14 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
} break;
case LOGIC_CLAMP: {
if (p_idx == 0)
- return PropertyInfo(Variant::REAL, "a");
- else if (p_idx == 0) // FIXME: is it ok to test p_idx == 0 twice?
+ return PropertyInfo(Variant::REAL, "value");
+ else if (p_idx == 1)
return PropertyInfo(Variant::REAL, "min");
else
return PropertyInfo(Variant::REAL, "max");
} break;
case LOGIC_NEAREST_PO2: {
- return PropertyInfo(Variant::INT, "num");
+ return PropertyInfo(Variant::INT, "value");
} break;
case OBJ_WEAKREF: {
diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h
index 1e098535f3..f862d5c26f 100644
--- a/modules/visual_script/visual_script_builtin_funcs.h
+++ b/modules/visual_script/visual_script_builtin_funcs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SCRIPT_BUILTIN_FUNCS_H
#define VISUAL_SCRIPT_BUILTIN_FUNCS_H
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index dfd563499f..b116dfdcf7 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_editor.h"
#include "core/script_language.h"
@@ -317,7 +318,8 @@ protected:
}
p_list->push_back(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, argt));
p_list->push_back(PropertyInfo(script->get_variable_info(var).type, "value", script->get_variable_info(var).hint, script->get_variable_info(var).hint_string, PROPERTY_USAGE_DEFAULT));
- p_list->push_back(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,ExpRange,Enum,ExpEasing,Length,SpriteFrame,KeyAccel,BitFlags,AllFlags,File,Dir,GlobalFile,GlobalDir,ResourceType,MultilineText"));
+ // Update this when PropertyHint changes
+ p_list->push_back(PropertyInfo(Variant::INT, "hint", PROPERTY_HINT_ENUM, "None,Range,ExpRange,Enum,ExpEasing,Length,SpriteFrame,KeyAccel,Flags,Layers2dRender,Layers2dPhysics,Layer3dRender,Layer3dPhysics,File,Dir,GlobalFile,GlobalDir,ResourceType,MultilineText,ColorNoAlpha,ImageCompressLossy,ImageCompressLossLess,ObjectId,String,NodePathToEditedNode,MethodOfVariantType,MethodOfBaseType,MethodOfInstance,MethodOfScript,PropertyOfVariantType,PropertyOfBaseType,PropertyOfInstance,PropertyOfScript,ObjectTooBig"));
p_list->push_back(PropertyInfo(Variant::STRING, "hint_string"));
p_list->push_back(PropertyInfo(Variant::BOOL, "export"));
}
diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h
index 48b6a92b76..4d789e6ef7 100644
--- a/modules/visual_script/visual_script_editor.h
+++ b/modules/visual_script/visual_script_editor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSCRIPT_EDITOR_H
#define VISUALSCRIPT_EDITOR_H
diff --git a/modules/visual_script/visual_script_expression.cpp b/modules/visual_script/visual_script_expression.cpp
index 2a051b3288..16de04e4cf 100644
--- a/modules/visual_script/visual_script_expression.cpp
+++ b/modules/visual_script/visual_script_expression.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_expression.h"
bool VisualScriptExpression::_set(const StringName &p_name, const Variant &p_value) {
diff --git a/modules/visual_script/visual_script_expression.h b/modules/visual_script/visual_script_expression.h
index 628f06fc0b..1f41e442c5 100644
--- a/modules/visual_script/visual_script_expression.h
+++ b/modules/visual_script/visual_script_expression.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSCRIPTEXPRESSION_H
#define VISUALSCRIPTEXPRESSION_H
diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp
index 56aeeac7fb..5c097dfa76 100644
--- a/modules/visual_script/visual_script_flow_control.cpp
+++ b/modules/visual_script/visual_script_flow_control.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_flow_control.h"
#include "io/resource_loader.h"
diff --git a/modules/visual_script/visual_script_flow_control.h b/modules/visual_script/visual_script_flow_control.h
index c985d1b9a9..40809d488a 100644
--- a/modules/visual_script/visual_script_flow_control.h
+++ b/modules/visual_script/visual_script_flow_control.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SCRIPT_FLOW_CONTROL_H
#define VISUAL_SCRIPT_FLOW_CONTROL_H
diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp
index 345d2f7df8..187c9b0b9e 100644
--- a/modules/visual_script/visual_script_func_nodes.cpp
+++ b/modules/visual_script/visual_script_func_nodes.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_func_nodes.h"
#include "engine.h"
@@ -424,7 +425,7 @@ void VisualScriptFunctionCall::_update_method_cache() {
#ifdef DEBUG_METHODS_ENABLED
- method_cache.return_val = mb->get_argument_info(-1);
+ method_cache.return_val = mb->get_return_info();
#endif
if (mb->is_vararg()) {
@@ -545,7 +546,7 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const
if (property.name == "base_type") {
if (call_mode != CALL_MODE_INSTANCE) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
@@ -738,7 +739,7 @@ void VisualScriptFunctionCall::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::STRING, "singleton"), "set_singleton", "get_singleton");
ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path");
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "argument_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_argument_cache", "_get_argument_cache");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "argument_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_argument_cache", "_get_argument_cache");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "function"), "set_function", "get_function"); //when set, if loaded properly, will override argument count.
ADD_PROPERTY(PropertyInfo(Variant::INT, "use_default_args"), "set_use_default_args", "get_use_default_args");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "validate"), "set_validate", "get_validate");
@@ -1349,7 +1350,7 @@ void VisualScriptPropertySet::_validate_property(PropertyInfo &property) const {
if (property.name == "base_type") {
if (call_mode != CALL_MODE_INSTANCE) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
@@ -1492,7 +1493,7 @@ void VisualScriptPropertySet::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_script", PROPERTY_HINT_FILE, script_ext_hint), "set_base_script", "get_base_script");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_type_cache", "_get_type_cache");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_type_cache", "_get_type_cache");
ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property");
@@ -2077,7 +2078,7 @@ void VisualScriptPropertyGet::_validate_property(PropertyInfo &property) const {
if (property.name == "base_type") {
if (call_mode != CALL_MODE_INSTANCE) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
@@ -2216,7 +2217,7 @@ void VisualScriptPropertyGet::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_script", PROPERTY_HINT_FILE, script_ext_hint), "set_base_script", "get_base_script");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_type_cache", "_get_type_cache");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "type_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_type_cache", "_get_type_cache");
ADD_PROPERTY(PropertyInfo(Variant::INT, "basic_type", PROPERTY_HINT_ENUM, bt), "set_basic_type", "get_basic_type");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "node_path", PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE), "set_base_path", "get_base_path");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "property"), "set_property", "get_property");
diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h
index 925f3b94aa..0b30eae65a 100644
--- a/modules/visual_script/visual_script_func_nodes.h
+++ b/modules/visual_script/visual_script_func_nodes.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SCRIPT_FUNC_NODES_H
#define VISUAL_SCRIPT_FUNC_NODES_H
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index a41b3fc6c9..e0b4fde237 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_nodes.h"
#include "engine.h"
@@ -3106,8 +3107,8 @@ void VisualScriptConstructor::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_constructor", "constructor"), &VisualScriptConstructor::set_constructor);
ClassDB::bind_method(D_METHOD("get_constructor"), &VisualScriptConstructor::get_constructor);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_constructor_type", "get_constructor_type");
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "constructor", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_constructor", "get_constructor");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_constructor_type", "get_constructor_type");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "constructor", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_constructor", "get_constructor");
}
VisualScriptConstructor::VisualScriptConstructor() {
@@ -3721,7 +3722,7 @@ void VisualScriptDeconstruct::_bind_methods() {
}
ADD_PROPERTY(PropertyInfo(Variant::INT, "type", PROPERTY_HINT_ENUM, argt), "set_deconstruct_type", "get_deconstruct_type");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "elem_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_elem_cache", "_get_elem_cache");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "elem_cache", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_elem_cache", "_get_elem_cache");
}
VisualScriptDeconstruct::VisualScriptDeconstruct() {
diff --git a/modules/visual_script/visual_script_nodes.h b/modules/visual_script/visual_script_nodes.h
index d49f64f3a6..a581e81c8c 100644
--- a/modules/visual_script/visual_script_nodes.h
+++ b/modules/visual_script/visual_script_nodes.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SCRIPT_NODES_H
#define VISUAL_SCRIPT_NODES_H
diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp
index 1961809be0..a96e8408c0 100644
--- a/modules/visual_script/visual_script_yield_nodes.cpp
+++ b/modules/visual_script/visual_script_yield_nodes.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_script_yield_nodes.h"
#include "os/os.h"
diff --git a/modules/visual_script/visual_script_yield_nodes.h b/modules/visual_script/visual_script_yield_nodes.h
index b6efd88c0e..4009240581 100644
--- a/modules/visual_script/visual_script_yield_nodes.h
+++ b/modules/visual_script/visual_script_yield_nodes.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SCRIPT_YIELD_NODES_H
#define VISUAL_SCRIPT_YIELD_NODES_H
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp
index 999c06f664..bae8f7be5f 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_stream_ogg_vorbis.h"
size_t AudioStreamPlaybackOGGVorbis::_ov_read_func(void *p_dst, size_t p_data, size_t p_count, void *_f) {
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.h b/modules/vorbis/audio_stream_ogg_vorbis.h
index 24102a43ec..01de8a3143 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/vorbis/audio_stream_ogg_vorbis.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_STREAM_OGG_VORBIS_H
#define AUDIO_STREAM_OGG_VORBIS_H
diff --git a/modules/vorbis/register_types.cpp b/modules/vorbis/register_types.cpp
index ffa3971c3e..0ea1fbe8b2 100644
--- a/modules/vorbis/register_types.cpp
+++ b/modules/vorbis/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "audio_stream_ogg_vorbis.h"
diff --git a/modules/vorbis/register_types.h b/modules/vorbis/register_types.h
index 8e54747036..3885502da2 100644
--- a/modules/vorbis/register_types.h
+++ b/modules/vorbis/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_vorbis_types();
void unregister_vorbis_types();
diff --git a/modules/vorbis/stub/register_types.cpp b/modules/vorbis/stub/register_types.cpp
index 39abb9aafc..02ac9518c8 100644
--- a/modules/vorbis/stub/register_types.cpp
+++ b/modules/vorbis/stub/register_types.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
// Dummy module as libvorbis is needed by other modules (theora ...)
diff --git a/modules/vorbis/stub/register_types.h b/modules/vorbis/stub/register_types.h
index a6c51fb3e1..3885502da2 100644
--- a/modules/vorbis/stub/register_types.h
+++ b/modules/vorbis/stub/register_types.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_vorbis_types();
void unregister_vorbis_types();
diff --git a/modules/webm/doc_classes/ResourceImporterWebm.xml b/modules/webm/doc_classes/ResourceImporterWebm.xml
index 5dadb83b07..20e0e48187 100644
--- a/modules/webm/doc_classes/ResourceImporterWebm.xml
+++ b/modules/webm/doc_classes/ResourceImporterWebm.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ResourceImporterWebm" inherits="ResourceImporter" category="Core" version="3.0-beta">
+<class name="ResourceImporterWebm" inherits="ResourceImporter" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/webm/doc_classes/VideoStreamWebm.xml b/modules/webm/doc_classes/VideoStreamWebm.xml
index 6e8120b1de..94aea5c8d2 100644
--- a/modules/webm/doc_classes/VideoStreamWebm.xml
+++ b/modules/webm/doc_classes/VideoStreamWebm.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VideoStreamWebm" inherits="VideoStream" category="Core" version="3.0-beta">
+<class name="VideoStreamWebm" inherits="VideoStream" category="Core" version="3.0-stable">
<brief_description>
</brief_description>
<description>
diff --git a/modules/webm/register_types.cpp b/modules/webm/register_types.cpp
index 10c06ca4e5..1183dd41f7 100644
--- a/modules/webm/register_types.cpp
+++ b/modules/webm/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "resource_importer_webm.h"
#include "video_stream_webm.h"
diff --git a/modules/webm/register_types.h b/modules/webm/register_types.h
index a429a9a398..102da2b0f5 100644
--- a/modules/webm/register_types.h
+++ b/modules/webm/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_webm_types();
void unregister_webm_types();
diff --git a/modules/webm/resource_importer_webm.cpp b/modules/webm/resource_importer_webm.cpp
index 2ea1485437..7124a503e8 100644
--- a/modules/webm/resource_importer_webm.cpp
+++ b/modules/webm/resource_importer_webm.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_importer_webm.h"
#include "io/resource_saver.h"
diff --git a/modules/webm/resource_importer_webm.h b/modules/webm/resource_importer_webm.h
index 7cce805e70..d61e6e2a93 100644
--- a/modules/webm/resource_importer_webm.h
+++ b/modules/webm/resource_importer_webm.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCEIMPORTERWEBM_H
#define RESOURCEIMPORTERWEBM_H
diff --git a/modules/webm/video_stream_webm.cpp b/modules/webm/video_stream_webm.cpp
index e915af3e6c..fac47225bc 100644
--- a/modules/webm/video_stream_webm.cpp
+++ b/modules/webm/video_stream_webm.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "video_stream_webm.h"
#include "OpusVorbisDecoder.hpp"
@@ -435,7 +436,7 @@ void VideoStreamWebm::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_file", "file"), &VideoStreamWebm::set_file);
ClassDB::bind_method(D_METHOD("get_file"), &VideoStreamWebm::get_file);
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_file", "get_file");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "file", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_file", "get_file");
}
void VideoStreamWebm::set_audio_track(int p_track) {
diff --git a/modules/webm/video_stream_webm.h b/modules/webm/video_stream_webm.h
index c0b4490bf5..dde993d154 100644
--- a/modules/webm/video_stream_webm.h
+++ b/modules/webm/video_stream_webm.h
@@ -27,6 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#ifndef VIDEO_STREAM_WEBM_H
+#define VIDEO_STREAM_WEBM_H
+
#include "io/resource_loader.h"
#include "scene/resources/video_stream.h"
@@ -122,3 +126,5 @@ public:
String get_file();
virtual void set_audio_track(int p_track);
};
+
+#endif // VIDEO_STREAM_WEBM_H
diff --git a/modules/webp/image_loader_webp.cpp b/modules/webp/image_loader_webp.cpp
index 903b456540..cdf2d75e96 100644
--- a/modules/webp/image_loader_webp.cpp
+++ b/modules/webp/image_loader_webp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "image_loader_webp.h"
#include "io/marshalls.h"
diff --git a/modules/webp/image_loader_webp.h b/modules/webp/image_loader_webp.h
index b00c8b1b05..f051fed4b8 100644
--- a/modules/webp/image_loader_webp.h
+++ b/modules/webp/image_loader_webp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMAGE_LOADER_WEBP_H
#define IMAGE_LOADER_WEBP_H
diff --git a/modules/webp/register_types.cpp b/modules/webp/register_types.cpp
index 86eb558dff..9a2e83c65d 100644
--- a/modules/webp/register_types.cpp
+++ b/modules/webp/register_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_types.h"
#include "image_loader_webp.h"
diff --git a/modules/webp/register_types.h b/modules/webp/register_types.h
index 025bc49be1..711f5be61d 100644
--- a/modules/webp/register_types.h
+++ b/modules/webp/register_types.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_webp_types();
void unregister_webp_types();
diff --git a/platform/android/SCsub b/platform/android/SCsub
index 0cd91276ef..d2285a82dd 100644
--- a/platform/android/SCsub
+++ b/platform/android/SCsub
@@ -104,7 +104,7 @@ gradle_asset_dirs_text = ""
gradle_default_config_text = ""
minSdk = 18
-targetSdk = 23
+targetSdk = 27
for x in env.android_default_config:
if x.startswith("minSdkVersion") and int(x.split(" ")[-1]) < minSdk:
diff --git a/platform/android/audio_driver_jandroid.cpp b/platform/android/audio_driver_jandroid.cpp
index 1f05d6cd9b..7545ee88d0 100644
--- a/platform/android/audio_driver_jandroid.cpp
+++ b/platform/android/audio_driver_jandroid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_jandroid.h"
#include "os/os.h"
diff --git a/platform/android/audio_driver_jandroid.h b/platform/android/audio_driver_jandroid.h
index 5cd8eb8e0c..763f0e9b5a 100644
--- a/platform/android/audio_driver_jandroid.h
+++ b/platform/android/audio_driver_jandroid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_ANDROID_H
#define AUDIO_DRIVER_ANDROID_H
diff --git a/platform/android/audio_driver_opensl.cpp b/platform/android/audio_driver_opensl.cpp
index f0218e13bd..87a7d04e01 100644
--- a/platform/android/audio_driver_opensl.cpp
+++ b/platform/android/audio_driver_opensl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_opensl.h"
#include <string.h>
diff --git a/platform/android/audio_driver_opensl.h b/platform/android/audio_driver_opensl.h
index 9dc74c6c8a..2022bad02a 100644
--- a/platform/android/audio_driver_opensl.h
+++ b/platform/android/audio_driver_opensl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_OPENSL_H
#define AUDIO_DRIVER_OPENSL_H
diff --git a/platform/android/build.gradle.template b/platform/android/build.gradle.template
index 4a44d1c5f9..7269e658b4 100644
--- a/platform/android/build.gradle.template
+++ b/platform/android/build.gradle.template
@@ -15,12 +15,13 @@ allprojects {
repositories {
jcenter()
mavenCentral()
+ google()
$$GRADLE_REPOSITORY_URLS$$
}
}
dependencies {
- compile 'com.android.support:support-v4:23.+' // can be removed if minSdkVersion 16 and modify DownloadNotification.java & V14CustomNotification.java
+ compile 'com.android.support:support-v4:27.+' // can be removed if minSdkVersion 16 and modify DownloadNotification.java & V14CustomNotification.java
$$GRADLE_DEPENDENCIES$$
}
@@ -31,8 +32,8 @@ android {
disable 'MissingTranslation'
}
- compileSdkVersion 26
- buildToolsVersion "26.0.1"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
useLibrary 'org.apache.http.legacy'
packagingOptions {
diff --git a/platform/android/dir_access_android.cpp b/platform/android/dir_access_android.cpp
index c6e11ec505..402da4527e 100644
--- a/platform/android/dir_access_android.cpp
+++ b/platform/android/dir_access_android.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef ANDROID_NATIVE_ACTIVITY
#include "dir_access_android.h"
#include "file_access_android.h"
diff --git a/platform/android/dir_access_android.h b/platform/android/dir_access_android.h
index 970202b5cc..085d7160cd 100644
--- a/platform/android/dir_access_android.h
+++ b/platform/android/dir_access_android.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_ANDROID_H
#define DIR_ACCESS_ANDROID_H
diff --git a/platform/android/dir_access_jandroid.cpp b/platform/android/dir_access_jandroid.cpp
index 6abab3edf6..5601dcc763 100644
--- a/platform/android/dir_access_jandroid.cpp
+++ b/platform/android/dir_access_jandroid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANDROID_NATIVE_ACTIVITY
#include "dir_access_jandroid.h"
diff --git a/platform/android/dir_access_jandroid.h b/platform/android/dir_access_jandroid.h
index 4a9112fb27..8dc52ab9c8 100644
--- a/platform/android/dir_access_jandroid.h
+++ b/platform/android/dir_access_jandroid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_JANDROID_H
#define DIR_ACCESS_JANDROID_H
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 922a53621f..2a61f8d873 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "export.h"
#include "editor/editor_export.h"
@@ -551,6 +552,10 @@ class EditorExportAndroid : public EditorExportPlatform {
return OK;
}
+ static Error ignore_apk_file(void *p_userdata, const String &p_path, const Vector<uint8_t> &p_data, int p_file, int p_total) {
+ return OK;
+ }
+
void _fix_manifest(const Ref<EditorExportPreset> &p_preset, Vector<uint8_t> &p_manifest, bool p_give_internet) {
// Leaving the unused types commented because looking these constants up
@@ -1503,6 +1508,10 @@ public:
cl.push_back(passwd);
}*/
+ APKExportData ed;
+ ed.ep = &ep;
+ ed.apk = unaligned_apk;
+ err = export_project_files(p_preset, ignore_apk_file, &ed, save_apk_so);
} else {
//all files
@@ -1530,17 +1539,17 @@ public:
err = export_project_files(p_preset, save_apk_file, &ed, save_apk_so);
}
+ }
- if (!err) {
- APKExportData ed;
- ed.ep = &ep;
- ed.apk = unaligned_apk;
- for (int i = 0; i < sizeof(launcher_icons) / sizeof(launcher_icons[0]); ++i) {
- String icon_path = String(p_preset->get(launcher_icons[i].option_id)).strip_edges();
- if (icon_path != "" && icon_path.ends_with(".png") && FileAccess::exists(icon_path)) {
- Vector<uint8_t> data = FileAccess::get_file_as_array(icon_path);
- store_in_apk(&ed, launcher_icons[i].export_path, data);
- }
+ if (!err) {
+ APKExportData ed;
+ ed.ep = &ep;
+ ed.apk = unaligned_apk;
+ for (int i = 0; i < sizeof(launcher_icons) / sizeof(launcher_icons[0]); ++i) {
+ String icon_path = String(p_preset->get(launcher_icons[i].option_id)).strip_edges();
+ if (icon_path != "" && icon_path.ends_with(".png") && FileAccess::exists(icon_path)) {
+ Vector<uint8_t> data = FileAccess::get_file_as_array(icon_path);
+ store_in_apk(&ed, launcher_icons[i].export_path, data);
}
}
}
diff --git a/platform/android/export/export.h b/platform/android/export/export.h
index eb18e04863..9d66626866 100644
--- a/platform/android/export/export.h
+++ b/platform/android/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_android_exporter();
diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp
index d958ef8294..c2eed50e4c 100644
--- a/platform/android/file_access_android.cpp
+++ b/platform/android/file_access_android.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_access_android.h"
#include "print_string.h"
diff --git a/platform/android/file_access_android.h b/platform/android/file_access_android.h
index f44c19f963..03f4c59521 100644
--- a/platform/android/file_access_android.h
+++ b/platform/android/file_access_android.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_ANDROID_H
#define FILE_ACCESS_ANDROID_H
diff --git a/platform/android/file_access_jandroid.cpp b/platform/android/file_access_jandroid.cpp
index 4285a136a2..1a9d3af4ea 100644
--- a/platform/android/file_access_jandroid.cpp
+++ b/platform/android/file_access_jandroid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANDROID_NATIVE_ACTIVITY
#include "file_access_jandroid.h"
diff --git a/platform/android/file_access_jandroid.h b/platform/android/file_access_jandroid.h
index c537f2f01a..72f81ee02e 100644
--- a/platform/android/file_access_jandroid.h
+++ b/platform/android/file_access_jandroid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_ACCESS_JANDROID_H
#define FILE_ACCESS_JANDROID_H
diff --git a/platform/android/globals/global_defaults.cpp b/platform/android/globals/global_defaults.cpp
index 4a7dd07090..a315f80452 100644
--- a/platform/android/globals/global_defaults.cpp
+++ b/platform/android/globals/global_defaults.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "global_defaults.h"
#include "project_settings.h"
diff --git a/platform/android/globals/global_defaults.h b/platform/android/globals/global_defaults.h
index 412942eb88..99da2dd527 100644
--- a/platform/android/globals/global_defaults.h
+++ b/platform/android/globals/global_defaults.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_android_global_defaults();
diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp
index 1643be7763..64715b3683 100644
--- a/platform/android/godot_android.cpp
+++ b/platform/android/godot_android.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef ANDROID_NATIVE_ACTIVITY
#include "engine.h"
diff --git a/platform/android/java/gradle/wrapper/gradle-wrapper.properties b/platform/android/java/gradle/wrapper/gradle-wrapper.properties
index ee6901c9d7..fe37fa74a9 100644
--- a/platform/android/java/gradle/wrapper/gradle-wrapper.properties
+++ b/platform/android/java/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/platform/android/java/src/org/godotengine/godot/Dictionary.java b/platform/android/java/src/org/godotengine/godot/Dictionary.java
index b7ced69d0e..de6b4af568 100644
--- a/platform/android/java/src/org/godotengine/godot/Dictionary.java
+++ b/platform/android/java/src/org/godotengine/godot/Dictionary.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import java.util.HashMap;
diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java
index d6e060f8d5..b5b0afb9e0 100644
--- a/platform/android/java/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/src/org/godotengine/godot/Godot.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import android.R;
@@ -827,7 +828,6 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
//@Override public boolean dispatchTouchEvent (MotionEvent event) {
public boolean gotTouchEvent(final MotionEvent event) {
- super.onTouchEvent(event);
final int evcount = event.getPointerCount();
if (evcount == 0)
return true;
@@ -841,6 +841,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
arr[i * 3 + 1] = (int)event.getX(i);
arr[i * 3 + 2] = (int)event.getY(i);
}
+ final int pointer_idx = event.getPointerId(event.getActionIndex());
//System.out.printf("gaction: %d\n",event.getAction());
final int action = event.getAction() & MotionEvent.ACTION_MASK;
@@ -861,13 +862,10 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
*/
} break;
case MotionEvent.ACTION_POINTER_UP: {
- final int indexPointUp = event.getActionIndex();
- final int pointer_idx = event.getPointerId(indexPointUp);
GodotLib.touch(4, pointer_idx, evcount, arr);
//System.out.printf("%d - s.up at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
} break;
case MotionEvent.ACTION_POINTER_DOWN: {
- int pointer_idx = event.getActionIndex();
GodotLib.touch(3, pointer_idx, evcount, arr);
//System.out.printf("%d - s.down at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
} break;
diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
index a3fed28c6f..4701bac9df 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller;
diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
index 9da705409b..3a94354843 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import android.content.Context;
diff --git a/platform/android/java/src/org/godotengine/godot/GodotIO.java b/platform/android/java/src/org/godotengine/godot/GodotIO.java
index 2382288ca8..a95c508d21 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotIO.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotIO.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import java.util.HashMap;
import java.util.Locale;
diff --git a/platform/android/java/src/org/godotengine/godot/GodotLib.java b/platform/android/java/src/org/godotengine/godot/GodotLib.java
index 9deb9dcb35..45eb188327 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotLib.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotLib.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
// Wrapper for native library
diff --git a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
index 7db0ef1b18..6b7f7a283e 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import android.app.Activity;
diff --git a/platform/android/java/src/org/godotengine/godot/GodotView.java b/platform/android/java/src/org/godotengine/godot/GodotView.java
index db7daa1307..0222758c2b 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotView.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotView.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot;
import android.content.Context;
import android.graphics.PixelFormat;
@@ -109,7 +110,7 @@ public class GodotView extends GLSurfaceView implements InputDeviceListener {
@Override
public boolean onTouchEvent(MotionEvent event) {
-
+ super.onTouchEvent(event);
return activity.gotTouchEvent(event);
};
diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
index df62ac5a01..53fcf5ef70 100644
--- a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
+++ b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.input;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
index eb3075fdfc..5d13f17ffb 100644
--- a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
+++ b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.input;
import android.content.Context;
import android.text.Editable;
@@ -102,13 +103,16 @@ public class GodotTextInputWrapper implements TextWatcher, OnEditorActionListene
public void onTextChanged(final CharSequence pCharSequence, final int start, final int before, final int count) {
//Log.d(TAG, "onTextChanged(" + pCharSequence + ")start: " + start + ",count: " + count + ",before: " + before);
+ final int[] newChars = new int[count];
+ for (int i = start; i < start + count; ++i) {
+ newChars[i - start] = pCharSequence.charAt(i);
+ }
mView.queueEvent(new Runnable() {
@Override
public void run() {
- for (int i = start; i < start + count; ++i) {
- final int ch = pCharSequence.charAt(i);
- GodotLib.key(0, ch, true);
- GodotLib.key(0, ch, false);
+ for (int i = 0; i < count; ++i) {
+ GodotLib.key(0, newChars[i], true);
+ GodotLib.key(0, newChars[i], false);
}
}
});
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
index f78e454d93..afe5f81b6d 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import com.android.vending.billing.IInAppBillingService;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
index 747eea5e5c..8b48193ae2 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import com.android.vending.billing.IInAppBillingService;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
index b49244cf09..766989f953 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import org.json.JSONException;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
index 05e634c13c..40cdeea72e 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import android.content.Context;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
index 8086489897..da6d66ae88 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import android.app.Activity;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
index a31b6ed9f2..e1d9bcee65 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import org.json.JSONException;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
index 6ab6673183..e00e37f9d1 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import java.util.ArrayList;
diff --git a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
index c10008c4e1..1eb9d001e0 100644
--- a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
+++ b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.payments;
import org.json.JSONException;
diff --git a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
index cdaf60bded..f34511137e 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.utils;
import java.security.MessageDigest;
diff --git a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
index 7bd8fb63b2..7216d8b5a4 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.utils;
import java.io.IOException;
import java.net.Socket;
diff --git a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
index ae1233674e..b84f5cce2e 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.utils;
import java.io.BufferedReader;
diff --git a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
index 7df98fab85..2368766afa 100644
--- a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
+++ b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
package org.godotengine.godot.utils;
import java.util.ArrayList;
diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp
index 1d03c3671a..80a32452a5 100644
--- a/platform/android/java_class_wrapper.cpp
+++ b/platform/android/java_class_wrapper.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "java_class_wrapper.h"
#include "thread_jandroid.h"
diff --git a/platform/android/java_class_wrapper.h b/platform/android/java_class_wrapper.h
index 4b374bc216..648c147ca8 100644
--- a/platform/android/java_class_wrapper.h
+++ b/platform/android/java_class_wrapper.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JAVA_CLASS_WRAPPER_H
#define JAVA_CLASS_WRAPPER_H
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp
index 25aee74c46..4e9e4f6260 100644
--- a/platform/android/java_glue.cpp
+++ b/platform/android/java_glue.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANDROID_NATIVE_ACTIVITY
#include "java_glue.h"
diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h
index fb997e950b..d433b5f0d8 100644
--- a/platform/android/java_glue.h
+++ b/platform/android/java_glue.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANDROID_NATIVE_ACTIVITY
#ifndef JAVA_GLUE_H
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index dd23a81977..67ce796279 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_android.h"
#include "core/io/file_access_buffered_fa.h"
@@ -47,6 +48,8 @@
#include "file_access_jandroid.h"
#endif
+#include <dlfcn.h>
+
class AndroidLogger : public Logger {
public:
virtual void logv(const char *p_format, va_list p_list, bool p_err) {
@@ -120,7 +123,7 @@ void OS_Android::set_opengl_extensions(const char *p_gl_extensions) {
gl_extensions = p_gl_extensions;
}
-void OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
use_gl2 = p_video_driver != 1;
@@ -146,6 +149,8 @@ void OS_Android::initialize(const VideoMode &p_desired, int p_video_driver, int
input->set_fallback_mapping("Default Android Gamepad");
//power_manager = memnew(power_android);
+
+ return OK;
}
void OS_Android::set_main_loop(MainLoop *p_main_loop) {
@@ -170,6 +175,15 @@ void OS_Android::alert(const String &p_alert, const String &p_title) {
alert_func(p_alert, p_title);
}
+Error OS_Android::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) {
+ p_library_handle = dlopen(p_path.utf8().get_data(), RTLD_NOW);
+ if (!p_library_handle) {
+ ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror());
+ ERR_FAIL_V(ERR_CANT_OPEN);
+ }
+ return OK;
+}
+
void OS_Android::set_mouse_show(bool p_show) {
//android has no mouse...
@@ -248,6 +262,9 @@ void OS_Android::set_cursor_shape(CursorShape p_shape) {
//android really really really has no mouse.. how amazing..
}
+void OS_Android::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+}
+
void OS_Android::main_loop_begin() {
if (main_loop)
@@ -438,25 +455,27 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos>
}
touch.clear();
}
-
} break;
- case 3: { // add tuchi
-
- ERR_FAIL_INDEX(p_pointer, p_points.size());
+ case 3: { // add touch
- TouchPos tp = p_points[p_pointer];
- touch.push_back(tp);
+ for (int i = 0; i < p_points.size(); i++) {
+ if (p_points[i].id == p_pointer) {
+ TouchPos tp = p_points[i];
+ touch.push_back(tp);
- Ref<InputEventScreenTouch> ev;
- ev.instance();
+ Ref<InputEventScreenTouch> ev;
+ ev.instance();
- ev->set_index(tp.id);
- ev->set_pressed(true);
- ev->set_position(tp.pos);
- input->parse_input_event(ev);
+ ev->set_index(tp.id);
+ ev->set_pressed(true);
+ ev->set_position(tp.pos);
+ input->parse_input_event(ev);
+ break;
+ }
+ }
} break;
- case 4: {
+ case 4: { // remove touch
for (int i = 0; i < touch.size(); i++) {
if (touch[i].id == p_pointer) {
@@ -468,10 +487,10 @@ void OS_Android::process_touch(int p_what, int p_pointer, const Vector<TouchPos>
ev->set_position(touch[i].pos);
input->parse_input_event(ev);
touch.remove(i);
- i--;
+
+ break;
}
}
-
} break;
}
}
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index 744dce7ff1..12181b3688 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_ANDROID_H
#define OS_ANDROID_H
@@ -145,7 +146,7 @@ public:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void set_main_loop(MainLoop *p_main_loop);
virtual void delete_main_loop();
@@ -158,6 +159,8 @@ public:
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);
+
virtual void set_mouse_show(bool p_show);
virtual void set_mouse_grab(bool p_grab);
virtual bool is_mouse_grab_enabled() const;
@@ -182,6 +185,7 @@ public:
virtual bool can_draw() const;
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
void main_loop_begin();
bool main_loop_iterate();
diff --git a/platform/android/platform_config.h b/platform/android/platform_config.h
index 3b3ea3930c..299d8563dd 100644
--- a/platform/android/platform_config.h
+++ b/platform/android/platform_config.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
#include <malloc.h>
diff --git a/platform/android/thread_jandroid.cpp b/platform/android/thread_jandroid.cpp
index 29c4e7301c..e85813605f 100644
--- a/platform/android/thread_jandroid.cpp
+++ b/platform/android/thread_jandroid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_jandroid.h"
#include "core/safe_refcount.h"
diff --git a/platform/android/thread_jandroid.h b/platform/android/thread_jandroid.h
index 37b3b38408..2bb64f3db2 100644
--- a/platform/android/thread_jandroid.h
+++ b/platform/android/thread_jandroid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_POSIX_H
#define THREAD_POSIX_H
diff --git a/platform/haiku/audio_driver_media_kit.cpp b/platform/haiku/audio_driver_media_kit.cpp
index f687339fec..278a994c54 100644
--- a/platform/haiku/audio_driver_media_kit.cpp
+++ b/platform/haiku/audio_driver_media_kit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_media_kit.h"
#ifdef MEDIA_KIT_ENABLED
diff --git a/platform/haiku/audio_driver_media_kit.h b/platform/haiku/audio_driver_media_kit.h
index 844ab4c60e..a09403e7d6 100644
--- a/platform/haiku/audio_driver_media_kit.h
+++ b/platform/haiku/audio_driver_media_kit.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "servers/audio_server.h"
#ifdef MEDIA_KIT_ENABLED
diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp
index 9332e93389..41df17d2d1 100644
--- a/platform/haiku/context_gl_haiku.cpp
+++ b/platform/haiku/context_gl_haiku.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "context_gl_haiku.h"
#if defined(OPENGL_ENABLED)
diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h
index 193c1e77f9..74f09984f2 100644
--- a/platform/haiku/context_gl_haiku.h
+++ b/platform/haiku/context_gl_haiku.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTEXT_GL_HAIKU_H
#define CONTEXT_GL_HAIKU_H
diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp
index d207d36606..b042d81650 100644
--- a/platform/haiku/godot_haiku.cpp
+++ b/platform/haiku/godot_haiku.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_haiku.h"
diff --git a/platform/haiku/haiku_application.cpp b/platform/haiku/haiku_application.cpp
index d7fa505b79..4f5e3e42a2 100644
--- a/platform/haiku/haiku_application.cpp
+++ b/platform/haiku/haiku_application.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "haiku_application.h"
HaikuApplication::HaikuApplication() :
diff --git a/platform/haiku/haiku_application.h b/platform/haiku/haiku_application.h
index 4408f466fb..f92969bbb1 100644
--- a/platform/haiku/haiku_application.h
+++ b/platform/haiku/haiku_application.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HAIKU_APPLICATION_H
#define HAIKU_APPLICATION_H
diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp
index cf33e42220..b234a2ff91 100644
--- a/platform/haiku/haiku_direct_window.cpp
+++ b/platform/haiku/haiku_direct_window.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <UnicodeChar.h>
#include "haiku_direct_window.h"
diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h
index 0bdcb51ca1..55c2f5fccc 100644
--- a/platform/haiku/haiku_direct_window.h
+++ b/platform/haiku/haiku_direct_window.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HAIKU_DIRECT_WINDOW_H
#define HAIKU_DIRECT_WINDOW_H
diff --git a/platform/haiku/haiku_gl_view.cpp b/platform/haiku/haiku_gl_view.cpp
index e47dc2f726..a40cbe5765 100644
--- a/platform/haiku/haiku_gl_view.cpp
+++ b/platform/haiku/haiku_gl_view.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "haiku_gl_view.h"
#include "main/main.h"
diff --git a/platform/haiku/haiku_gl_view.h b/platform/haiku/haiku_gl_view.h
index e67f3e6b0a..1a694dc13b 100644
--- a/platform/haiku/haiku_gl_view.h
+++ b/platform/haiku/haiku_gl_view.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HAIKU_GL_VIEW_H
#define HAIKU_GL_VIEW_H
diff --git a/platform/haiku/key_mapping_haiku.cpp b/platform/haiku/key_mapping_haiku.cpp
index 62671b0cc3..28a282e25c 100644
--- a/platform/haiku/key_mapping_haiku.cpp
+++ b/platform/haiku/key_mapping_haiku.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <InterfaceDefs.h>
#include "key_mapping_haiku.h"
diff --git a/platform/haiku/key_mapping_haiku.h b/platform/haiku/key_mapping_haiku.h
index 5a1b9f9134..917151bc4a 100644
--- a/platform/haiku/key_mapping_haiku.h
+++ b/platform/haiku/key_mapping_haiku.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef KEY_MAPPING_HAIKU_H
#define KEY_MAPPING_HAIKU_H
diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp
index 3324b33e95..97fab5ca0d 100644
--- a/platform/haiku/os_haiku.cpp
+++ b/platform/haiku/os_haiku.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_haiku.h"
#include "drivers/gles3/rasterizer_gles3.h"
@@ -79,7 +80,7 @@ const char *OS_Haiku::get_video_driver_name(int p_driver) const {
return "GLES3";
}
-void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
main_loop = NULL;
current_video_mode = p_desired;
@@ -114,7 +115,7 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_
visual_server = memnew(VisualServerRaster(rasterizer));
- ERR_FAIL_COND(!visual_server);
+ ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE);
// TODO: enable multithreaded VS
/*
@@ -132,6 +133,8 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_
AudioDriverManager::initialize(p_audio_driver);
power_manager = memnew(PowerHaiku);
+
+ return OK;
}
void OS_Haiku::finalize() {
@@ -200,6 +203,10 @@ void OS_Haiku::set_cursor_shape(CursorShape p_shape) {
//ERR_PRINT("set_cursor_shape() NOT IMPLEMENTED");
}
+void OS_Haiku::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ // TODO
+}
+
int OS_Haiku::get_screen_count() const {
// TODO: implement get_screen_count()
return 1;
diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h
index b4d0add04b..615ae682ef 100644
--- a/platform/haiku/os_haiku.h
+++ b/platform/haiku/os_haiku.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_HAIKU_H
#define OS_HAIKU_H
@@ -66,7 +67,7 @@ protected:
virtual int get_video_driver_count() const;
virtual const char *get_video_driver_name(int p_driver) const;
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void finalize();
virtual void set_main_loop(MainLoop *p_main_loop);
@@ -87,6 +88,7 @@ public:
virtual Point2 get_mouse_position() const;
virtual int get_mouse_button_state() const;
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
virtual int get_screen_count() const;
virtual int get_current_screen() const;
diff --git a/platform/haiku/platform_config.h b/platform/haiku/platform_config.h
index 5a7bc3db23..bbd72dfeb6 100644
--- a/platform/haiku/platform_config.h
+++ b/platform/haiku/platform_config.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
// for ifaddrs.h needed in drivers/unix/ip_unix.cpp
diff --git a/platform/iphone/app_delegate.h b/platform/iphone/app_delegate.h
index 11656ca1f3..f14864b5b7 100644
--- a/platform/iphone/app_delegate.h
+++ b/platform/iphone/app_delegate.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import "gl_view.h"
#import "view_controller.h"
#import <UIKit/UIKit.h>
diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm
index 96f542c170..5c3799ab09 100644
--- a/platform/iphone/app_delegate.mm
+++ b/platform/iphone/app_delegate.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import "app_delegate.h"
#include "core/project_settings.h"
diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp
index 99d44f3b5e..e3119814f4 100644
--- a/platform/iphone/export/export.cpp
+++ b/platform/iphone/export/export.cpp
@@ -407,7 +407,7 @@ Error EditorExportPlatformIOS::_export_loading_screens(const Ref<EditorExportPre
Error err = da->copy(loading_screen_file, p_dest_dir + info.export_name);
if (err) {
memdelete(da);
- String err_str = String("Failed to export loading screen: ") + loading_screen_file;
+ String err_str = String("Failed to export loading screen (") + info.preset_key + ") from path: " + loading_screen_file;
ERR_PRINT(err_str.utf8().get_data());
return err;
}
diff --git a/platform/iphone/export/export.h b/platform/iphone/export/export.h
index f67c34a626..ea79973290 100644
--- a/platform/iphone/export/export.h
+++ b/platform/iphone/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_iphone_exporter();
diff --git a/platform/iphone/game_center.h b/platform/iphone/game_center.h
index bf7ec1f93e..9a62cccb1a 100644
--- a/platform/iphone/game_center.h
+++ b/platform/iphone/game_center.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef GAME_CENTER_ENABLED
#ifndef GAME_CENTER_H
diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm
index 958158c254..57ff79f7bc 100644
--- a/platform/iphone/game_center.mm
+++ b/platform/iphone/game_center.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef GAME_CENTER_ENABLED
#include "game_center.h"
diff --git a/platform/iphone/gl_view.mm b/platform/iphone/gl_view.mm
index f0dafacd03..69116c64c6 100644
--- a/platform/iphone/gl_view.mm
+++ b/platform/iphone/gl_view.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import "gl_view.h"
#include "core/os/keyboard.h"
diff --git a/platform/iphone/globals/global_defaults.cpp b/platform/iphone/globals/global_defaults.cpp
index 97a7ec1678..ccc90665c5 100644
--- a/platform/iphone/globals/global_defaults.cpp
+++ b/platform/iphone/globals/global_defaults.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "global_defaults.h"
#include "project_settings.h"
diff --git a/platform/iphone/globals/global_defaults.h b/platform/iphone/globals/global_defaults.h
index f58659ebff..3e3c220f4a 100644
--- a/platform/iphone/globals/global_defaults.h
+++ b/platform/iphone/globals/global_defaults.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_iphone_global_defaults();
diff --git a/platform/iphone/godot_iphone.cpp b/platform/iphone/godot_iphone.cpp
index 440dae5da5..dacbf42087 100644
--- a/platform/iphone/godot_iphone.cpp
+++ b/platform/iphone/godot_iphone.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_iphone.h"
#include "ustring.h"
diff --git a/platform/iphone/icloud.h b/platform/iphone/icloud.h
index d2514919ba..52bb1131a0 100644
--- a/platform/iphone/icloud.h
+++ b/platform/iphone/icloud.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef ICLOUD_ENABLED
#ifndef ICLOUD_H
diff --git a/platform/iphone/icloud.mm b/platform/iphone/icloud.mm
index db4d86b812..7508a480ce 100644
--- a/platform/iphone/icloud.mm
+++ b/platform/iphone/icloud.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef ICLOUD_ENABLED
#include "icloud.h"
diff --git a/platform/iphone/in_app_store.h b/platform/iphone/in_app_store.h
index 28f23d77e1..7d53eaae20 100644
--- a/platform/iphone/in_app_store.h
+++ b/platform/iphone/in_app_store.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef STOREKIT_ENABLED
#ifndef IN_APP_STORE_H
diff --git a/platform/iphone/in_app_store.mm b/platform/iphone/in_app_store.mm
index 3399a64732..9bb3d7d3fa 100644
--- a/platform/iphone/in_app_store.mm
+++ b/platform/iphone/in_app_store.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef STOREKIT_ENABLED
#include "in_app_store.h"
diff --git a/platform/iphone/ios.h b/platform/iphone/ios.h
index aca0ac54a9..5e77683949 100644
--- a/platform/iphone/ios.h
+++ b/platform/iphone/ios.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IOS_H
#define IOS_H
diff --git a/platform/iphone/ios.mm b/platform/iphone/ios.mm
index 48104b9c4f..7eb4f495f7 100644
--- a/platform/iphone/ios.mm
+++ b/platform/iphone/ios.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ios.h"
#import <UIKit/UIKit.h>
diff --git a/platform/iphone/main.m b/platform/iphone/main.m
index dfe468dc13..0f0810f28f 100644
--- a/platform/iphone/main.m
+++ b/platform/iphone/main.m
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import "app_delegate.h"
#import <UIKit/UIKit.h>
diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp
index dcb7b8b1f4..c284ab6905 100644
--- a/platform/iphone/os_iphone.cpp
+++ b/platform/iphone/os_iphone.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef IPHONE_ENABLED
#include "os_iphone.h"
@@ -97,7 +98,7 @@ void OSIPhone::initialize_core() {
set_data_dir(data_dir);
};
-void OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
supported_orientations = 0;
supported_orientations |= ((GLOBAL_DEF("video_mode/allow_horizontal", true) ? 1 : 0) << LandscapeLeft);
@@ -144,6 +145,8 @@ void OSIPhone::initialize(const VideoMode &p_desired, int p_video_driver, int p_
//icloud->connect();
#endif
Engine::get_singleton()->add_singleton(Engine::Singleton("iOS", memnew(iOS)));
+
+ return OK;
};
MainLoop *OSIPhone::get_main_loop() const {
@@ -490,6 +493,8 @@ String OSIPhone::get_user_data_dir() const {
return data_dir;
};
+void OSIPhone::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot){};
+
String OSIPhone::get_name() {
return "iOS";
diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h
index 7e310e3a03..2e4458aeed 100644
--- a/platform/iphone/os_iphone.h
+++ b/platform/iphone/os_iphone.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef IPHONE_ENABLED
#ifndef OS_IPHONE_H
@@ -87,7 +88,7 @@ private:
virtual const char *get_video_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void set_main_loop(MainLoop *p_main_loop);
virtual MainLoop *get_main_loop() const;
@@ -173,6 +174,7 @@ public:
virtual int get_virtual_keyboard_height() const;
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
virtual Size2 get_window_size() const;
diff --git a/platform/iphone/platform_config.h b/platform/iphone/platform_config.h
index 373c70d822..d205c7da83 100644
--- a/platform/iphone/platform_config.h
+++ b/platform/iphone/platform_config.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
#define GLES3_INCLUDE_H <ES3/gl.h>
diff --git a/platform/iphone/platform_refcount.h b/platform/iphone/platform_refcount.h
index 90e716e4e4..94e4e5fa3b 100644
--- a/platform/iphone/platform_refcount.h
+++ b/platform/iphone/platform_refcount.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "safe_refcount.h"
#ifdef IPHONE_ENABLED
diff --git a/platform/iphone/sem_iphone.cpp b/platform/iphone/sem_iphone.cpp
index 04eb6e9332..ec1337d63f 100644
--- a/platform/iphone/sem_iphone.cpp
+++ b/platform/iphone/sem_iphone.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sem_iphone.h"
#include <fcntl.h>
diff --git a/platform/iphone/sem_iphone.h b/platform/iphone/sem_iphone.h
index 8311538419..ebd4e4ee43 100644
--- a/platform/iphone/sem_iphone.h
+++ b/platform/iphone/sem_iphone.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEM_IPHONE_H
#define SEM_IPHONE_H
diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h
index cd08be3aa7..31c4f0daf3 100644
--- a/platform/iphone/view_controller.h
+++ b/platform/iphone/view_controller.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import <GameKit/GameKit.h>
#import <UIKit/UIKit.h>
diff --git a/platform/iphone/view_controller.mm b/platform/iphone/view_controller.mm
index f6487ea6c8..cdaae0cb81 100644
--- a/platform/iphone/view_controller.mm
+++ b/platform/iphone/view_controller.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#import "view_controller.h"
#include "os_iphone.h"
diff --git a/platform/javascript/SCsub b/platform/javascript/SCsub
index 05992ebac8..66a8a8d93c 100644
--- a/platform/javascript/SCsub
+++ b/platform/javascript/SCsub
@@ -23,6 +23,7 @@ env.Append(LINKFLAGS=["-s", "EXPORTED_FUNCTIONS=\"['_main','_main_after_fs_sync'
target_dir = env.Dir("#bin")
build = env.add_program(['#bin/godot', target_dir.File('godot' + env['PROGSUFFIX'] + '.wasm')], javascript_objects, PROGSUFFIX=env['PROGSUFFIX'] + '.js');
+js, wasm = build
js_libraries = []
js_libraries.append(env.File('http_request.js'))
@@ -30,12 +31,10 @@ for lib in js_libraries:
env.Append(LINKFLAGS=['--js-library', lib.path])
env.Depends(build, js_libraries)
-prejs = env.File('pre.js')
-postjs = env.File('engine.js')
-env.Append(LINKFLAGS=['--pre-js', prejs.path])
-env.Append(LINKFLAGS=['--post-js', postjs.path])
-env.Depends(build, [prejs, postjs])
+wrapper_start = env.File('pre.js')
+wrapper_end = env.File('engine.js')
+js_final = env.Textfile('#bin/godot', [wrapper_start, js, wrapper_end], TEXTFILESUFFIX=env['PROGSUFFIX'] + '.wrapped.js')
zip_dir = target_dir.Dir('.javascript_zip')
-zip_files = env.InstallAs([zip_dir.File('godot.js'), zip_dir.File('godot.wasm'), zip_dir.File('godot.html')], build + ['#misc/dist/html/default.html'])
+zip_files = env.InstallAs([zip_dir.File('godot.js'), zip_dir.File('godot.wasm'), zip_dir.File('godot.html')], [js_final, wasm, '#misc/dist/html/default.html'])
Zip('#bin/godot', zip_files, ZIPSUFFIX=env['PROGSUFFIX'] + env['ZIPSUFFIX'], ZIPROOT=zip_dir, ZIPCOMSTR="Archving $SOURCES as $TARGET")
diff --git a/platform/javascript/api/api.cpp b/platform/javascript/api/api.cpp
index fe3b20b7a0..b377ca4e52 100644
--- a/platform/javascript/api/api.cpp
+++ b/platform/javascript/api/api.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "api.h"
#include "engine.h"
#include "javascript_eval.h"
diff --git a/platform/javascript/api/api.h b/platform/javascript/api/api.h
index ab3e47ec31..5f22f082e9 100644
--- a/platform/javascript/api/api.h
+++ b/platform/javascript/api/api.h
@@ -27,5 +27,6 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_javascript_api();
void unregister_javascript_api();
diff --git a/platform/javascript/api/javascript_eval.h b/platform/javascript/api/javascript_eval.h
index d39d97f7c5..05f7c9f38a 100644
--- a/platform/javascript/api/javascript_eval.h
+++ b/platform/javascript/api/javascript_eval.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JAVASCRIPT_EVAL_H
#define JAVASCRIPT_EVAL_H
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index acf6ef87ba..5bf345e6cd 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_javascript.h"
#include <emscripten.h>
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index d44e2c51e6..d78ab8eea4 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_JAVASCRIPT_H
#define AUDIO_DRIVER_JAVASCRIPT_H
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index 8472c3ccab..74d6536343 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -28,6 +28,11 @@ def get_flags():
return [
('tools', False),
('module_theora_enabled', False),
+ # Disabling the OpenSSL module noticeably reduces file size.
+ # The module has little use due to the limited networking functionality
+ # in this platform. For the available networking methods, the browser
+ # manages TLS.
+ ('module_openssl_enabled', False),
]
@@ -49,8 +54,14 @@ def configure(env):
## Build type
if (env["target"] == "release"):
- env.Append(CCFLAGS=['-O3'])
- env.Append(LINKFLAGS=['-O3'])
+ # Use -Os to prioritize optimizing for reduced file size. This is
+ # particularly valuable for the web platform because it directly
+ # decreases download time.
+ # -Os reduces file size by around 5 MiB over -O3. -Oz only saves about
+ # 100 KiB over -Os, which does not justify the negative impact on
+ # run-time performance.
+ env.Append(CCFLAGS=['-Os'])
+ env.Append(LINKFLAGS=['-Os'])
elif (env["target"] == "release_debug"):
env.Append(CCFLAGS=['-O2', '-DDEBUG_ENABLED'])
diff --git a/platform/javascript/dom_keys.h b/platform/javascript/dom_keys.h
index cfd55dfc90..4edca63c6d 100644
--- a/platform/javascript/dom_keys.h
+++ b/platform/javascript/dom_keys.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DOM_KEYS_H
#define DOM_KEYS_H
diff --git a/platform/javascript/engine.js b/platform/javascript/engine.js
index dc4bdc7efb..bca1851f40 100644
--- a/platform/javascript/engine.js
+++ b/platform/javascript/engine.js
@@ -138,13 +138,17 @@
}
var actualCanvas = this.rtenv.canvas;
- var context = false;
+ var testContext = false;
+ var testCanvas;
try {
- context = actualCanvas.getContext('webgl2') || actualCanvas.getContext('experimental-webgl2');
+ testCanvas = document.createElement('canvas');
+ testContext = testCanvas.getContext('webgl2') || testCanvas.getContext('experimental-webgl2');
} catch (e) {}
- if (!context) {
+ if (!testContext) {
throw new Error("WebGL 2 not available");
}
+ testCanvas = null;
+ testContext = null;
// canvas can grab focus on click
if (actualCanvas.tabIndex < 0) {
diff --git a/platform/javascript/export/export.cpp b/platform/javascript/export/export.cpp
index 6c2b6799a6..d81aa25c32 100644
--- a/platform/javascript/export/export.cpp
+++ b/platform/javascript/export/export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor/editor_node.h"
#include "editor_export.h"
#include "io/zip_io.h"
@@ -70,7 +71,7 @@ public:
virtual void get_platform_features(List<String> *r_features) {
r_features->push_back("web");
- r_features->push_back("JavaScript");
+ r_features->push_back(get_os_name());
}
EditorExportPlatformJavaScript();
@@ -113,9 +114,9 @@ void EditorExportPlatformJavaScript::get_preset_features(const Ref<EditorExportP
void EditorExportPlatformJavaScript::get_export_options(List<ExportOption> *r_options) {
- r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/s3tc"), false));
- r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc"), true));
- r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), false));
+ r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/s3tc"), true));
+ r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc"), false));
+ r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "texture_format/etc2"), true));
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "html/custom_html_shell", PROPERTY_HINT_GLOBAL_FILE, "html"), ""));
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "html/head_include", PROPERTY_HINT_MULTILINE_TEXT), ""));
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, "zip"), ""));
@@ -129,7 +130,7 @@ String EditorExportPlatformJavaScript::get_name() const {
String EditorExportPlatformJavaScript::get_os_name() const {
- return "JavaScript";
+ return "HTML5";
}
Ref<Texture> EditorExportPlatformJavaScript::get_logo() const {
@@ -174,14 +175,14 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
}
if (template_path != String() && !FileAccess::exists(template_path)) {
- EditorNode::get_singleton()->show_warning(TTR("Template file not found:\n") + template_path);
+ EditorNode::get_singleton()->show_warning(TTR("Template file not found:") + "\n" + template_path);
return ERR_FILE_NOT_FOUND;
}
String pck_path = p_path.get_basename() + ".pck";
Error error = save_pack(p_preset, pck_path);
if (error != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + pck_path);
+ EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + pck_path);
return error;
}
@@ -191,12 +192,12 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
if (!pkg) {
- EditorNode::get_singleton()->show_warning(TTR("Could not open template for export:\n") + template_path);
+ EditorNode::get_singleton()->show_warning(TTR("Could not open template for export:") + "\n" + template_path);
return ERR_FILE_NOT_FOUND;
}
if (unzGoToFirstFile(pkg) != UNZ_OK) {
- EditorNode::get_singleton()->show_warning(TTR("Invalid export template:\n") + template_path);
+ EditorNode::get_singleton()->show_warning(TTR("Invalid export template:") + "\n" + template_path);
unzClose(pkg);
return ERR_FILE_CORRUPT;
}
@@ -238,7 +239,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
String dst = p_path.get_base_dir().plus_file(file);
FileAccess *f = FileAccess::open(dst, FileAccess::WRITE);
if (!f) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + dst);
+ EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + dst);
unzClose(pkg);
return ERR_FILE_CANT_WRITE;
}
@@ -252,7 +253,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
FileAccess *f = FileAccess::open(custom_html, FileAccess::READ);
if (!f) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read custom HTML shell:\n") + custom_html);
+ EditorNode::get_singleton()->show_warning(TTR("Could not read custom HTML shell:") + "\n" + custom_html);
return ERR_FILE_CANT_READ;
}
Vector<uint8_t> buf;
@@ -263,7 +264,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
f = FileAccess::open(p_path, FileAccess::WRITE);
if (!f) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + p_path);
+ EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + p_path);
return ERR_FILE_CANT_WRITE;
}
f->store_buffer(buf.ptr(), buf.size());
@@ -277,7 +278,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
splash.instance();
Error err = splash->load(splash_path);
if (err) {
- EditorNode::get_singleton()->show_warning(TTR("Could not read boot splash image file:\n") + splash_path + "\nUsing default boot splash image");
+ EditorNode::get_singleton()->show_warning(TTR("Could not read boot splash image file:") + "\n" + splash_path + "\n" + TTR("Using default boot splash image."));
splash.unref();
}
}
@@ -286,7 +287,7 @@ Error EditorExportPlatformJavaScript::export_project(const Ref<EditorExportPrese
}
String png_path = p_path.get_base_dir().plus_file(p_path.get_file().get_basename() + ".png");
if (splash->save_png(png_path) != OK) {
- EditorNode::get_singleton()->show_warning(TTR("Could not write file:\n") + png_path);
+ EditorNode::get_singleton()->show_warning(TTR("Could not write file:") + "\n" + png_path);
return ERR_FILE_CANT_WRITE;
}
return OK;
diff --git a/platform/javascript/export/export.h b/platform/javascript/export/export.h
index 756c3ef9fa..2835d0723f 100644
--- a/platform/javascript/export/export.h
+++ b/platform/javascript/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_javascript_exporter();
diff --git a/platform/javascript/http_client_javascript.cpp b/platform/javascript/http_client_javascript.cpp
index f23867cc60..1cd2719723 100644
--- a/platform/javascript/http_client_javascript.cpp
+++ b/platform/javascript/http_client_javascript.cpp
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "http_request.h"
#include "io/http_client.h"
diff --git a/platform/javascript/http_request.h b/platform/javascript/http_request.h
index 2ca48bfd00..b5ff46d7fe 100644
--- a/platform/javascript/http_request.h
+++ b/platform/javascript/http_request.h
@@ -3,7 +3,7 @@
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
-/* http://www.godotengine.org */
+/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md) */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HTTP_REQUEST_H
#define HTTP_REQUEST_H
diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp
index 9abea29a93..2ef88345f6 100644
--- a/platform/javascript/javascript_eval.cpp
+++ b/platform/javascript/javascript_eval.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef JAVASCRIPT_EVAL_ENABLED
#include "api/javascript_eval.h"
diff --git a/platform/javascript/javascript_main.cpp b/platform/javascript/javascript_main.cpp
index 973f8f500c..e85fe0800f 100644
--- a/platform/javascript/javascript_main.cpp
+++ b/platform/javascript/javascript_main.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "emscripten.h"
#include "io/resource_loader.h"
#include "main/main.h"
@@ -64,7 +65,7 @@ int main(int argc, char *argv[]) {
FS.mkdir('/userfs');
FS.mount(IDBFS, {}, '/userfs');
FS.syncfs(true, function(err) {
- Module['ccall']('main_after_fs_sync', null, ['string'], [err ? err.message : ""])
+ ccall('main_after_fs_sync', null, ['string'], [err ? err.message : ""])
});
);
/* clang-format on */
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index 0bdd090ba9..e226ab6332 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_javascript.h"
#include "core/engine.h"
@@ -80,12 +81,6 @@ void OS_JavaScript::initialize_core() {
FileAccess::make_default<FileAccessBufferedFA<FileAccessUnix> >(FileAccess::ACCESS_RESOURCES);
}
-void OS_JavaScript::set_opengl_extensions(const char *p_gl_extensions) {
-
- ERR_FAIL_COND(!p_gl_extensions);
- gl_extensions = p_gl_extensions;
-}
-
static EM_BOOL _browser_resize_callback(int event_type, const EmscriptenUiEvent *ui_event, void *user_data) {
ERR_FAIL_COND_V(event_type != EMSCRIPTEN_EVENT_RESIZE, false);
@@ -419,7 +414,7 @@ void send_notification(int notif) {
}
}
-void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
print_line("Init OS");
@@ -429,22 +424,17 @@ void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, i
attributes.antialias = false;
attributes.majorVersion = 2;
EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_create_context(NULL, &attributes);
- ERR_FAIL_COND(emscripten_webgl_make_context_current(ctx) != EMSCRIPTEN_RESULT_SUCCESS);
+ ERR_FAIL_COND_V(emscripten_webgl_make_context_current(ctx) != EMSCRIPTEN_RESULT_SUCCESS, ERR_UNAVAILABLE);
video_mode = p_desired;
// can't fulfil fullscreen request due to browser security
video_mode.fullscreen = false;
/* clang-format off */
- bool resize_canvas_on_start = EM_ASM_INT_V(
- return Module.resizeCanvasOnStart;
- );
- /* clang-format on */
- if (resize_canvas_on_start) {
+ if (EM_ASM_INT_V({ return Module.resizeCanvasOnStart })) {
+ /* clang-format on */
set_window_size(Size2(video_mode.width, video_mode.height));
} else {
- Size2 canvas_size = get_window_size();
- video_mode.width = canvas_size.width;
- video_mode.height = canvas_size.height;
+ set_window_size(get_window_size());
}
char locale_ptr[16];
@@ -507,6 +497,8 @@ void OS_JavaScript::initialize(const VideoMode &p_desired, int p_video_driver, i
#undef EM_CHECK
visual_server->init();
+
+ return OK;
}
void OS_JavaScript::set_main_loop(MainLoop *p_main_loop) {
@@ -563,7 +555,7 @@ void OS_JavaScript::set_css_cursor(const char *p_cursor) {
/* clang-format off */
EM_ASM_({
- Module.canvas.style.cursor = Module.UTF8ToString($0);
+ Module.canvas.style.cursor = UTF8ToString($0);
}, p_cursor);
/* clang-format on */
}
@@ -573,7 +565,7 @@ const char *OS_JavaScript::get_css_cursor() const {
char cursor[16];
/* clang-format off */
EM_ASM_INT({
- Module.stringToUTF8(Module.canvas.style.cursor ? Module.canvas.style.cursor : 'auto', $0, 16);
+ stringToUTF8(Module.canvas.style.cursor ? Module.canvas.style.cursor : 'auto', $0, 16);
}, cursor);
/* clang-format on */
return cursor;
@@ -779,6 +771,9 @@ void OS_JavaScript::set_cursor_shape(CursorShape p_shape) {
set_css_cursor(godot2dom_cursor(cursor_shape));
}
+void OS_JavaScript::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+}
+
void OS_JavaScript::main_loop_begin() {
if (main_loop)
@@ -786,7 +781,7 @@ void OS_JavaScript::main_loop_begin() {
/* clang-format off */
EM_ASM_ARGS({
- const send_notification = Module.cwrap('send_notification', null, ['number']);
+ const send_notification = cwrap('send_notification', null, ['number']);
const notifs = arguments;
(['mouseover', 'mouseleave', 'focus', 'blur']).forEach(function(event, i) {
Module.canvas.addEventListener(event, send_notification.bind(null, notifs[i]));
@@ -969,7 +964,25 @@ int OS_JavaScript::get_power_percent_left() {
bool OS_JavaScript::_check_internal_feature_support(const String &p_feature) {
- return p_feature == "web" || p_feature == "s3tc"; // TODO check for these features really being available
+ if (p_feature == "HTML5" || p_feature == "web")
+ return true;
+
+#ifdef JAVASCRIPT_EVAL_ENABLED
+ if (p_feature == "JavaScript")
+ return true;
+#endif
+
+ EMSCRIPTEN_WEBGL_CONTEXT_HANDLE ctx = emscripten_webgl_get_current_context();
+ // all extensions are already automatically enabled, this function allows
+ // checking WebGL extension support without inline JavaScript
+ if (p_feature == "s3tc" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_s3tc_srgb"))
+ return true;
+ if (p_feature == "etc" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_etc1"))
+ return true;
+ if (p_feature == "etc2" && emscripten_webgl_enable_extension(ctx, "WEBGL_compressed_texture_etc"))
+ return true;
+
+ return false;
}
void OS_JavaScript::set_idbfs_available(bool p_idbfs_available) {
@@ -983,9 +996,9 @@ bool OS_JavaScript::is_userfs_persistent() const {
}
OS_JavaScript::OS_JavaScript(const char *p_execpath, GetUserDataDirFunc p_get_user_data_dir_func) {
+
set_cmdline(p_execpath, get_cmdline_args());
main_loop = NULL;
- gl_extensions = NULL;
window_maximized = false;
soft_fs_enabled = false;
canvas_size_adjustment_requested = false;
@@ -995,6 +1008,10 @@ OS_JavaScript::OS_JavaScript(const char *p_execpath, GetUserDataDirFunc p_get_us
idbfs_available = false;
time_to_save_sync = -1;
+
+ Vector<Logger *> loggers;
+ loggers.push_back(memnew(StdLogger));
+ _set_logger(memnew(CompositeLogger(loggers)));
}
OS_JavaScript::~OS_JavaScript() {
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 8acaac9ef3..f0ba9422e8 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_JAVASCRIPT_H
#define OS_JAVASCRIPT_H
@@ -51,7 +52,6 @@ class OS_JavaScript : public OS_Unix {
VisualServer *visual_server;
AudioDriverJavaScript audio_driver_javascript;
- const char *gl_extensions;
InputDefault *input;
Vector2 windowed_size;
@@ -82,7 +82,7 @@ public:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void set_main_loop(MainLoop *p_main_loop);
virtual void delete_main_loop();
@@ -127,6 +127,7 @@ public:
virtual bool is_userfs_persistent() const;
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
void main_loop_begin();
bool main_loop_iterate();
@@ -137,8 +138,6 @@ public:
virtual bool has_touchscreen_ui_hint() const;
- void set_opengl_extensions(const char *p_gl_extensions);
-
virtual Error shell_open(String p_uri);
virtual String get_user_data_dir() const;
String get_executable_path() const;
diff --git a/platform/javascript/platform_config.h b/platform/javascript/platform_config.h
index 413fea20d8..af4cf07393 100644
--- a/platform/javascript/platform_config.h
+++ b/platform/javascript/platform_config.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
diff --git a/platform/osx/SCsub b/platform/osx/SCsub
index 029e3d808c..5efe2d0b22 100644
--- a/platform/osx/SCsub
+++ b/platform/osx/SCsub
@@ -10,6 +10,7 @@ def make_debug(target, source, env):
os.system(mpprefix + '/libexec/llvm-' + mpclangver + '/bin/llvm-dsymutil %s -o %s.dSYM' % (target[0], target[0]))
else:
os.system('dsymutil %s -o %s.dSYM' % (target[0], target[0]))
+ os.system('strip -u -r %s' % (target[0]))
files = [
'crash_handler_osx.mm',
@@ -23,6 +24,6 @@ files = [
prog = env.add_program('#bin/godot', files)
-if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]:
env.AddPostAction(prog, make_debug)
diff --git a/platform/osx/crash_handler_osx.h b/platform/osx/crash_handler_osx.h
index 51e0a3ffcb..5d93afb22d 100644
--- a/platform/osx/crash_handler_osx.h
+++ b/platform/osx/crash_handler_osx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CRASH_HANDLER_OSX_H
#define CRASH_HANDLER_OSX_H
diff --git a/platform/osx/crash_handler_osx.mm b/platform/osx/crash_handler_osx.mm
index c4b5204e1a..d757674a9b 100644
--- a/platform/osx/crash_handler_osx.mm
+++ b/platform/osx/crash_handler_osx.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_osx.h"
#include "project_settings.h"
diff --git a/platform/osx/detect.py b/platform/osx/detect.py
index 2e686fbee4..5f33100e42 100644
--- a/platform/osx/detect.py
+++ b/platform/osx/detect.py
@@ -19,11 +19,12 @@ def can_build():
def get_opts():
- from SCons.Variables import EnumVariable
+ from SCons.Variables import BoolVariable, EnumVariable
return [
('osxcross_sdk', 'OSXCross SDK version', 'darwin14'),
EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')),
+ BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False),
]
@@ -76,7 +77,7 @@ def configure(env):
mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local")
mpclangver = env["macports_clang"]
env["CC"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang"
- env["LD"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++"
+ env["LINK"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++"
env["CXX"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/clang++"
env['AR'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ar"
env['RANLIB'] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib"
@@ -110,7 +111,7 @@ def configure(env):
if (env["CXX"] == "clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"] = "clang"
- env["LD"] = "clang++"
+ env["LINK"] = "clang++"
## Dependencies
diff --git a/platform/osx/dir_access_osx.h b/platform/osx/dir_access_osx.h
index eec3016eaa..e01ff2fe4d 100644
--- a/platform/osx/dir_access_osx.h
+++ b/platform/osx/dir_access_osx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIR_ACCESS_OSX_H
#define DIR_ACCESS_OSX_H
diff --git a/platform/osx/dir_access_osx.mm b/platform/osx/dir_access_osx.mm
index a187083dd1..cf66cab060 100644
--- a/platform/osx/dir_access_osx.mm
+++ b/platform/osx/dir_access_osx.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dir_access_osx.h"
#if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED)
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp
index 657a899367..c4efa1f0ff 100644
--- a/platform/osx/export/export.cpp
+++ b/platform/osx/export/export.cpp
@@ -359,6 +359,11 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
}
if (err == OK) {
+ print_line("Creating " + tmp_app_path_name + "/Contents/Frameworks");
+ err = tmp_app_path->make_dir_recursive(tmp_app_path_name + "/Contents/Frameworks");
+ }
+
+ if (err == OK) {
print_line("Creating " + tmp_app_path_name + "/Contents/Resources");
err = tmp_app_path->make_dir_recursive(tmp_app_path_name + "/Contents/Resources");
}
@@ -502,10 +507,23 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
if (use_dmg()) {
String pack_path = tmp_app_path_name + "/Contents/Resources/" + pkg_name + ".pck";
- err = save_pack(p_preset, pack_path);
+ Vector<SharedObject> shared_objects;
+ Error err = save_pack(p_preset, pack_path, &shared_objects);
// see if we can code sign our new package
String identity = p_preset->get("codesign/identity");
+
+ if (err == OK) {
+ DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ for (int i = 0; i < shared_objects.size(); i++) {
+ da->copy(shared_objects[i].path, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file());
+ if (err == OK && identity != "") {
+ err = _code_sign(p_preset, tmp_app_path_name + "/Contents/Frameworks/" + shared_objects[i].path.get_file());
+ }
+ }
+ memdelete(da);
+ }
+
if (err == OK && identity != "") {
ep.step("Code signing bundle", 2);
@@ -541,7 +559,9 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
} else {
String pack_path = EditorSettings::get_singleton()->get_cache_dir().plus_file(pkg_name + ".pck");
- Error err = save_pack(p_preset, pack_path);
+
+ Vector<SharedObject> shared_objects;
+ Error err = save_pack(p_preset, pack_path, &shared_objects);
if (err == OK) {
zipOpenNewFileInZip(dst_pkg_zip,
@@ -567,11 +587,32 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
break;
zipWriteInFileInZip(dst_pkg_zip, buf, r);
}
+
zipCloseFileInZip(dst_pkg_zip);
memdelete(pf);
} else {
err = ERR_CANT_OPEN;
}
+
+ //add shared objects
+ for (int i = 0; i < shared_objects.size(); i++) {
+ Vector<uint8_t> file = FileAccess::get_file_as_array(shared_objects[i].path);
+ ERR_CONTINUE(file.empty());
+
+ zipOpenNewFileInZip(dst_pkg_zip,
+ (pkg_name + ".app/Contents/Frameworks/").plus_file(shared_objects[i].path.get_file()).utf8().get_data(),
+ NULL,
+ NULL,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ Z_DEFLATED,
+ Z_DEFAULT_COMPRESSION);
+
+ zipWriteInFileInZip(dst_pkg_zip, file.ptr(), file.size());
+ zipCloseFileInZip(dst_pkg_zip);
+ }
}
}
}
diff --git a/platform/osx/export/export.h b/platform/osx/export/export.h
index ccb96022f9..08294fc33c 100644
--- a/platform/osx/export/export.h
+++ b/platform/osx/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_osx_exporter();
diff --git a/platform/osx/godot_main_osx.mm b/platform/osx/godot_main_osx.mm
index 156b4c02f2..6ccbaf896b 100644
--- a/platform/osx/godot_main_osx.mm
+++ b/platform/osx/godot_main_osx.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_osx.h"
@@ -81,8 +82,17 @@ int main(int argc, char **argv) {
#endif
OS_OSX os;
+ Error err;
+
+ if (os.open_with_filename != "") {
+ char *argv_c = (char *)malloc(os.open_with_filename.utf8().size());
+ memcpy(argv_c, os.open_with_filename.utf8().get_data(), os.open_with_filename.utf8().size());
+ err = Main::setup(argv[0], 1, &argv_c);
+ free(argv_c);
+ } else {
+ err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
+ }
- Error err = Main::setup(argv[0], argc - first_arg, &argv[first_arg]);
if (err != OK)
return 255;
diff --git a/platform/osx/joypad_osx.cpp b/platform/osx/joypad_osx.cpp
index bc65aa8149..20ceadca9d 100644
--- a/platform/osx/joypad_osx.cpp
+++ b/platform/osx/joypad_osx.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "joypad_osx.h"
#include <machine/endian.h>
diff --git a/platform/osx/joypad_osx.h b/platform/osx/joypad_osx.h
index 78ee4581d5..addbefc5ad 100644
--- a/platform/osx/joypad_osx.h
+++ b/platform/osx/joypad_osx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOYPADOSX_H
#define JOYPADOSX_H
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index a24bf6c0bc..d9ad0a7db8 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_OSX_H
#define OS_OSX_H
@@ -41,6 +42,7 @@
#include "servers/visual/rasterizer.h"
#include "servers/visual/visual_server_wrap_mt.h"
#include "servers/visual_server.h"
+#include <AppKit/NSCursor.h>
#include <ApplicationServices/ApplicationServices.h>
#undef CursorShape
@@ -50,6 +52,17 @@
class OS_OSX : public OS_Unix {
public:
+ struct KeyEvent {
+ unsigned int osx_state;
+ bool pressed;
+ bool echo;
+ uint32_t scancode;
+ uint32_t unicode;
+ };
+
+ Vector<KeyEvent> key_event_buffer;
+ int key_event_pos;
+
bool force_quit;
// rasterizer seems to no longer be given to visual server, its using GLES3 directly?
//Rasterizer *rasterizer;
@@ -70,6 +83,7 @@ public:
CGEventSourceRef eventSource;
void process_events();
+ void process_key_events();
void *framework;
// pthread_key_t current;
@@ -86,6 +100,7 @@ public:
id context;
CursorShape cursor_shape;
+ NSCursor *cursors[CURSOR_MAX] = { NULL };
MouseMode mouse_mode;
String title;
@@ -96,6 +111,8 @@ public:
Size2 window_size;
Rect2 restore_rect;
+ String open_with_filename;
+
Point2 im_position;
ImeCallback im_callback;
void *im_target;
@@ -121,7 +138,7 @@ protected:
virtual const char *get_video_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void finalize();
virtual void set_main_loop(MainLoop *p_main_loop);
@@ -136,7 +153,10 @@ public:
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);
+
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
virtual void set_mouse_show(bool p_show);
virtual void set_mouse_grab(bool p_grab);
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 0cd02663da..ab54f62045 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_osx.h"
#include "dir_access_osx.h"
@@ -38,6 +39,8 @@
#include "servers/visual/visual_server_raster.h"
#include "version_generated.gen.h"
+#include <mach-o/dyld.h>
+
#include <Carbon/Carbon.h>
#import <Cocoa/Cocoa.h>
#include <IOKit/IOCFPlugIn.h>
@@ -48,6 +51,7 @@
#include <os/log.h>
#endif
+#include <dlfcn.h>
#include <fcntl.h>
#include <libproc.h>
#include <stdio.h>
@@ -57,25 +61,40 @@
#include <unistd.h>
#if MAC_OS_X_VERSION_MAX_ALLOWED < 101200
+#define NSEventMaskAny NSAnyEventMask
+#define NSEventTypeKeyDown NSKeyDown
+#define NSEventTypeKeyUp NSKeyUp
+#define NSEventModifierFlagShift NSShiftKeyMask
+#define NSEventModifierFlagCommand NSCommandKeyMask
+#define NSEventModifierFlagControl NSControlKeyMask
+#define NSEventModifierFlagOption NSAlternateKeyMask
+#define NSWindowStyleMaskTitled NSTitledWindowMask
+#define NSWindowStyleMaskResizable NSResizableWindowMask
+#define NSWindowStyleMaskMiniaturizable NSMiniaturizableWindowMask
+#define NSWindowStyleMaskClosable NSClosableWindowMask
#define NSWindowStyleMaskBorderless NSBorderlessWindowMask
#endif
static NSRect convertRectToBacking(NSRect contentRect) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6)
- return [OS_OSX::singleton->window_view convertRectToBacking:contentRect];
- else
-#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
- return contentRect;
+ return [OS_OSX::singleton->window_view convertRectToBacking:contentRect];
}
static void get_key_modifier_state(unsigned int p_osx_state, Ref<InputEventWithModifiers> state) {
- state->set_shift((p_osx_state & NSShiftKeyMask));
- state->set_control((p_osx_state & NSControlKeyMask));
- state->set_alt((p_osx_state & NSAlternateKeyMask));
- state->set_metakey((p_osx_state & NSCommandKeyMask));
+ state->set_shift((p_osx_state & NSEventModifierFlagShift));
+ state->set_control((p_osx_state & NSEventModifierFlagControl));
+ state->set_alt((p_osx_state & NSEventModifierFlagOption));
+ state->set_metakey((p_osx_state & NSEventModifierFlagCommand));
+}
+
+static void push_to_key_event_buffer(const OS_OSX::KeyEvent &p_event) {
+
+ Vector<OS_OSX::KeyEvent> &buffer = OS_OSX::singleton->key_event_buffer;
+ if (OS_OSX::singleton->key_event_pos >= buffer.size()) {
+ buffer.resize(1 + OS_OSX::singleton->key_event_pos);
+ }
+ buffer[OS_OSX::singleton->key_event_pos++] = p_event;
}
static int mouse_x = 0;
@@ -99,11 +118,29 @@ static Vector2 get_mouse_pos(NSEvent *event) {
@implementation GodotApplication
-// 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.
- (void)sendEvent:(NSEvent *)event {
- if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
+
+ // 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.instance();
+
+ get_key_modifier_state([event modifierFlags], k);
+ k->set_pressed(true);
+ k->set_scancode(KEY_PERIOD);
+ k->set_echo([event isARepeat]);
+
+ OS_OSX::singleton->push_input(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];
@@ -116,6 +153,13 @@ static Vector2 get_mouse_pos(NSEvent *event) {
@implementation GodotApplicationDelegate
+- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
+ // Note: called before main loop init!
+ char *utfs = strdup([filename UTF8String]);
+ OS_OSX::singleton->open_with_filename.parse_utf8(utfs);
+ return YES;
+}
+
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST);
@@ -169,7 +213,6 @@ static Vector2 get_mouse_pos(NSEvent *event) {
return NO;
}
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- (void)windowDidEnterFullScreen:(NSNotification *)notification {
OS_OSX::singleton->zoomed = true;
}
@@ -177,7 +220,6 @@ static Vector2 get_mouse_pos(NSEvent *event) {
- (void)windowDidExitFullScreen:(NSNotification *)notification {
OS_OSX::singleton->zoomed = false;
}
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED
- (void)windowDidChangeBackingProperties:(NSNotification *)notification {
if (!OS_OSX::singleton)
@@ -371,8 +413,8 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)cancelComposition {
[self unmarkText];
- NSInputManager *currentInputManager = [NSInputManager currentInputManager];
- [currentInputManager markedTextAbandoned:self];
+ NSTextInputContext *currentInputContext = [NSTextInputContext currentInputContext];
+ [currentInputContext discardMarkedText];
}
- (void)insertText:(id)aString {
@@ -381,13 +423,6 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
- (void)insertText:(id)aString replacementRange:(NSRange)replacementRange {
NSEvent *event = [NSApp currentEvent];
- Ref<InputEventKey> k;
- k.instance();
-
- get_key_modifier_state([event modifierFlags], k);
- k->set_pressed(true);
- k->set_echo(false);
- k->set_scancode(0);
NSString *characters;
if ([aString isKindOfClass:[NSAttributedString class]]) {
@@ -401,8 +436,8 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
NSCharacterSet *ctrlChars = [NSCharacterSet controlCharacterSet];
NSCharacterSet *wsnlChars = [NSCharacterSet whitespaceAndNewlineCharacterSet];
if ([characters rangeOfCharacterFromSet:ctrlChars].length && [characters rangeOfCharacterFromSet:wsnlChars].length == 0) {
- NSInputManager *currentInputManager = [NSInputManager currentInputManager];
- [currentInputManager markedTextAbandoned:self];
+ NSTextInputContext *currentInputContext = [NSTextInputContext currentInputContext];
+ [currentInputContext discardMarkedText];
[self cancelComposition];
return;
}
@@ -412,8 +447,15 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
if ((codepoint & 0xFF00) == 0xF700)
continue;
- k->set_unicode(codepoint);
- OS_OSX::singleton->push_input(k);
+ OS_OSX::KeyEvent ke;
+
+ ke.osx_state = [event modifierFlags];
+ ke.pressed = true;
+ ke.echo = false;
+ ke.scancode = 0;
+ ke.unicode = codepoint;
+
+ push_to_key_event_buffer(ke);
}
[self cancelComposition];
}
@@ -488,7 +530,7 @@ static void _mouseDownEvent(NSEvent *event, int index, int mask, bool pressed) {
}
- (void)mouseDown:(NSEvent *)event {
- if (([event modifierFlags] & NSControlKeyMask)) {
+ if (([event modifierFlags] & NSEventModifierFlagControl)) {
mouse_down_control = true;
_mouseDownEvent(event, BUTTON_RIGHT, BUTTON_MASK_RIGHT, true);
} else {
@@ -577,8 +619,11 @@ static void _mouseDownEvent(NSEvent *event, int index, int mask, bool pressed) {
return;
if (OS_OSX::singleton->main_loop && OS_OSX::singleton->mouse_mode != OS::MOUSE_MODE_CAPTURED)
OS_OSX::singleton->main_loop->notification(MainLoop::NOTIFICATION_WM_MOUSE_ENTER);
- if (OS_OSX::singleton->input)
+ if (OS_OSX::singleton->input) {
OS_OSX::singleton->input->set_mouse_in_window(true);
+ OS_OSX::singleton->cursor_shape = OS::CURSOR_MAX;
+ OS_OSX::singleton->set_cursor_shape(OS::CURSOR_ARROW);
+ }
}
- (void)magnifyWithEvent:(NSEvent *)event {
@@ -759,80 +804,87 @@ static int translateKey(unsigned int key) {
- (void)keyDown:(NSEvent *)event {
- Ref<InputEventKey> k;
- k.instance();
-
- get_key_modifier_state([event modifierFlags], k);
- k->set_pressed(true);
- k->set_scancode(latin_keyboard_keycode_convert(translateKey([event keyCode])));
- k->set_echo([event isARepeat]);
+ //disable raw input in IME mode
+ if (!imeMode) {
+ OS_OSX::KeyEvent ke;
- NSString *characters = [event characters];
- NSUInteger i, length = [characters length];
+ ke.osx_state = [event modifierFlags];
+ ke.pressed = true;
+ ke.echo = [event isARepeat];
+ ke.scancode = latin_keyboard_keycode_convert(translateKey([event keyCode]));
+ ke.unicode = 0;
- //disable raw input in IME mode
- if (!imeMode)
- OS_OSX::singleton->push_input(k);
+ push_to_key_event_buffer(ke);
+ }
if ((OS_OSX::singleton->im_position.x != 0) && (OS_OSX::singleton->im_position.y != 0))
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
}
- (void)flagsChanged:(NSEvent *)event {
- Ref<InputEventKey> k;
- k.instance();
- int key = [event keyCode];
- int mod = [event modifierFlags];
+ if (!imeMode) {
+ OS_OSX::KeyEvent ke;
- if (key == 0x36 || key == 0x37) {
- if (mod & NSCommandKeyMask) {
- mod &= ~NSCommandKeyMask;
- k->set_pressed(true);
- } else {
- k->set_pressed(false);
- }
- } else if (key == 0x38 || key == 0x3c) {
- if (mod & NSShiftKeyMask) {
- mod &= ~NSShiftKeyMask;
- k->set_pressed(true);
- } else {
- k->set_pressed(false);
- }
- } else if (key == 0x3a || key == 0x3d) {
- if (mod & NSAlternateKeyMask) {
- mod &= ~NSAlternateKeyMask;
- k->set_pressed(true);
- } else {
- k->set_pressed(false);
- }
- } else if (key == 0x3b || key == 0x3e) {
- if (mod & NSControlKeyMask) {
- mod &= ~NSControlKeyMask;
- k->set_pressed(true);
+ ke.echo = false;
+
+ int key = [event keyCode];
+ int mod = [event modifierFlags];
+
+ if (key == 0x36 || key == 0x37) {
+ if (mod & NSEventModifierFlagCommand) {
+ mod &= ~NSEventModifierFlagCommand;
+ ke.pressed = true;
+ } else {
+ ke.pressed = false;
+ }
+ } else if (key == 0x38 || key == 0x3c) {
+ if (mod & NSEventModifierFlagShift) {
+ mod &= ~NSEventModifierFlagShift;
+ ke.pressed = true;
+ } else {
+ ke.pressed = false;
+ }
+ } else if (key == 0x3a || key == 0x3d) {
+ if (mod & NSEventModifierFlagOption) {
+ mod &= ~NSEventModifierFlagOption;
+ ke.pressed = true;
+ } else {
+ ke.pressed = false;
+ }
+ } else if (key == 0x3b || key == 0x3e) {
+ if (mod & NSEventModifierFlagControl) {
+ mod &= ~NSEventModifierFlagControl;
+ ke.pressed = true;
+ } else {
+ ke.pressed = false;
+ }
} else {
- k->set_pressed(false);
+ return;
}
- } else {
- return;
- }
- get_key_modifier_state(mod, k);
- k->set_scancode(latin_keyboard_keycode_convert(translateKey(key)));
+ ke.osx_state = mod;
+ ke.scancode = latin_keyboard_keycode_convert(translateKey(key));
+ ke.unicode = 0;
- OS_OSX::singleton->push_input(k);
+ push_to_key_event_buffer(ke);
+ }
}
- (void)keyUp:(NSEvent *)event {
- Ref<InputEventKey> k;
- k.instance();
+ if (!imeMode) {
+
+ OS_OSX::KeyEvent ke;
- get_key_modifier_state([event modifierFlags], k);
- k->set_pressed(false);
- k->set_scancode(latin_keyboard_keycode_convert(translateKey([event keyCode])));
+ ke.osx_state = [event modifierFlags];
+ ke.pressed = false;
+ ke.echo = false;
+ ke.scancode = latin_keyboard_keycode_convert(translateKey([event keyCode]));
+ ke.unicode = 0;
- OS_OSX::singleton->push_input(k);
+ push_to_key_event_buffer(ke);
+ }
}
inline void sendScrollEvent(int button, double factor, int modifierFlags) {
@@ -868,20 +920,12 @@ inline void sendPanEvent(double dx, double dy, int modifierFlags) {
- (void)scrollWheel:(NSEvent *)event {
double deltaX, deltaY;
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) {
- deltaX = [event scrollingDeltaX];
- deltaY = [event scrollingDeltaY];
+ deltaX = [event scrollingDeltaX];
+ deltaY = [event scrollingDeltaY];
- if ([event hasPreciseScrollingDeltas]) {
- deltaX *= 0.03;
- deltaY *= 0.03;
- }
- } else
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED
- {
- deltaX = [event deltaX];
- deltaY = [event deltaY];
+ if ([event hasPreciseScrollingDeltas]) {
+ deltaX *= 0.03;
+ deltaY *= 0.03;
}
if ([event phase] != NSEventPhaseNone || [event momentumPhase] != NSEventPhaseNone) {
@@ -955,7 +999,7 @@ static void displays_arrangement_changed(CGDirectDisplayID display_id, CGDisplay
displays_arrangement_dirty = true;
}
-void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
/*** OSX INITIALIZATION ***/
/*** OSX INITIALIZATION ***/
@@ -983,7 +1027,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
if (p_desired.borderless_window) {
styleMask = NSWindowStyleMaskBorderless;
} else {
- styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | (p_desired.resizable ? NSResizableWindowMask : 0);
+ styleMask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | (p_desired.resizable ? NSWindowStyleMaskResizable : 0);
}
window_object = [[GodotWindow alloc]
@@ -992,7 +1036,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
backing:NSBackingStoreBuffered
defer:NO];
- ERR_FAIL_COND(window_object == nil);
+ ERR_FAIL_COND_V(window_object == nil, ERR_UNAVAILABLE);
window_view = [[GodotContentView alloc] init];
@@ -1008,7 +1052,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
window_size.width = p_desired.width * displayScale;
window_size.height = p_desired.height * displayScale;
- if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6 && displayScale > 1.0) {
+ if (displayScale > 1.0) {
[window_view setWantsBestResolutionOpenGLSurface:YES];
//if (current_videomode.resizable)
[window_object setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
@@ -1020,8 +1064,7 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
[window_object setAcceptsMouseMovedEvents:YES];
[window_object center];
- if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6)
- [window_object setRestorable:NO];
+ [window_object setRestorable:NO];
unsigned int attributeCount = 0;
@@ -1079,11 +1122,11 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
#undef ADD_ATTR2
pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes];
- ERR_FAIL_COND(pixelFormat == nil);
+ ERR_FAIL_COND_V(pixelFormat == nil, ERR_UNAVAILABLE);
context = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
- ERR_FAIL_COND(context == nil);
+ ERR_FAIL_COND_V(context == nil, ERR_UNAVAILABLE);
[context setView:window_view];
@@ -1127,6 +1170,8 @@ void OS_OSX::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
_ensure_user_data_dir();
restore_rect = Rect2(get_window_position(), get_window_size());
+
+ return OK;
}
void OS_OSX::finalize() {
@@ -1179,34 +1224,42 @@ public:
switch (p_type) {
case ERR_WARNING:
- os_log_info(OS_LOG_DEFAULT,
- "WARNING: %{public}s: %{public}s\nAt: %{public}s:%i.",
- p_function, err_details, p_file, p_line);
+ if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
+ os_log_info(OS_LOG_DEFAULT,
+ "WARNING: %{public}s: %{public}s\nAt: %{public}s:%i.",
+ p_function, err_details, p_file, p_line);
+ }
logf_error("\E[1;33mWARNING: %s: \E[0m\E[1m%s\n", p_function,
err_details);
logf_error("\E[0;33m At: %s:%i.\E[0m\n", p_file, p_line);
break;
case ERR_SCRIPT:
- os_log_error(OS_LOG_DEFAULT,
- "SCRIPT ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
- p_function, err_details, p_file, p_line);
+ if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
+ os_log_error(OS_LOG_DEFAULT,
+ "SCRIPT ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
+ p_function, err_details, p_file, p_line);
+ }
logf_error("\E[1;35mSCRIPT ERROR: %s: \E[0m\E[1m%s\n", p_function,
err_details);
logf_error("\E[0;35m At: %s:%i.\E[0m\n", p_file, p_line);
break;
case ERR_SHADER:
- os_log_error(OS_LOG_DEFAULT,
- "SHADER ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
- p_function, err_details, p_file, p_line);
+ if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
+ os_log_error(OS_LOG_DEFAULT,
+ "SHADER ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
+ p_function, err_details, p_file, p_line);
+ }
logf_error("\E[1;36mSHADER ERROR: %s: \E[0m\E[1m%s\n", p_function,
err_details);
logf_error("\E[0;36m At: %s:%i.\E[0m\n", p_file, p_line);
break;
case ERR_ERROR:
default:
- os_log_error(OS_LOG_DEFAULT,
- "ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
- p_function, err_details, p_file, p_line);
+ if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
+ os_log_error(OS_LOG_DEFAULT,
+ "ERROR: %{public}s: %{public}s\nAt: %{public}s:%i.",
+ p_function, err_details, p_file, p_line);
+ }
logf_error("\E[1;31mERROR: %s: \E[0m\E[1m%s\n", p_function, err_details);
logf_error("\E[0;31m At: %s:%i.\E[0m\n", p_file, p_line);
break;
@@ -1235,35 +1288,111 @@ void OS_OSX::alert(const String &p_alert, const String &p_title) {
[window release];
}
+Error OS_OSX::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) {
+
+ String path = p_path;
+
+ if (!FileAccess::exists(path)) {
+ //this code exists so gdnative can load .dylib files from within the executable path
+ path = get_executable_path().get_base_dir().plus_file(p_path.get_file());
+ }
+
+ if (!FileAccess::exists(path)) {
+ //this code exists so gdnative can load .dylib files from a standard macOS location
+ path = get_executable_path().get_base_dir().plus_file("../Frameworks").plus_file(p_path.get_file());
+ }
+
+ p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
+ if (!p_library_handle) {
+ ERR_EXPLAIN("Can't open dynamic library: " + p_path + ". Error: " + dlerror());
+ ERR_FAIL_V(ERR_CANT_OPEN);
+ }
+ return OK;
+}
+
void OS_OSX::set_cursor_shape(CursorShape p_shape) {
if (cursor_shape == p_shape)
return;
- switch (p_shape) {
- case CURSOR_ARROW: [[NSCursor arrowCursor] set]; break;
- case CURSOR_IBEAM: [[NSCursor IBeamCursor] set]; break;
- case CURSOR_POINTING_HAND: [[NSCursor pointingHandCursor] set]; break;
- case CURSOR_CROSS: [[NSCursor crosshairCursor] set]; break;
- case CURSOR_WAIT: [[NSCursor arrowCursor] set]; break;
- case CURSOR_BUSY: [[NSCursor arrowCursor] set]; break;
- case CURSOR_DRAG: [[NSCursor closedHandCursor] set]; break;
- case CURSOR_CAN_DROP: [[NSCursor openHandCursor] set]; break;
- case CURSOR_FORBIDDEN: [[NSCursor arrowCursor] set]; break;
- case CURSOR_VSIZE: [[NSCursor resizeUpDownCursor] set]; break;
- case CURSOR_HSIZE: [[NSCursor resizeLeftRightCursor] set]; break;
- case CURSOR_BDIAGSIZE: [[NSCursor arrowCursor] set]; break;
- case CURSOR_FDIAGSIZE: [[NSCursor arrowCursor] set]; break;
- case CURSOR_MOVE: [[NSCursor arrowCursor] set]; break;
- case CURSOR_VSPLIT: [[NSCursor resizeUpDownCursor] set]; break;
- case CURSOR_HSPLIT: [[NSCursor resizeLeftRightCursor] set]; break;
- case CURSOR_HELP: [[NSCursor arrowCursor] set]; break;
- default: {};
+ if (cursors[p_shape] != NULL) {
+ [cursors[p_shape] set];
+ } else {
+ switch (p_shape) {
+ case CURSOR_ARROW: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_IBEAM: [[NSCursor IBeamCursor] set]; break;
+ case CURSOR_POINTING_HAND: [[NSCursor pointingHandCursor] set]; break;
+ case CURSOR_CROSS: [[NSCursor crosshairCursor] set]; break;
+ case CURSOR_WAIT: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_BUSY: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_DRAG: [[NSCursor closedHandCursor] set]; break;
+ case CURSOR_CAN_DROP: [[NSCursor openHandCursor] set]; break;
+ case CURSOR_FORBIDDEN: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_VSIZE: [[NSCursor resizeUpDownCursor] set]; break;
+ case CURSOR_HSIZE: [[NSCursor resizeLeftRightCursor] set]; break;
+ case CURSOR_BDIAGSIZE: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_FDIAGSIZE: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_MOVE: [[NSCursor arrowCursor] set]; break;
+ case CURSOR_VSPLIT: [[NSCursor resizeUpDownCursor] set]; break;
+ case CURSOR_HSPLIT: [[NSCursor resizeLeftRightCursor] set]; break;
+ case CURSOR_HELP: [[NSCursor arrowCursor] set]; break;
+ default: {};
+ }
}
cursor_shape = p_shape;
}
+void OS_OSX::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ if (p_cursor.is_valid()) {
+ Ref<Texture> texture = p_cursor;
+ Ref<Image> image = texture->get_data();
+
+ int image_size = 32 * 32;
+
+ ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32);
+
+ NSBitmapImageRep *imgrep = [[[NSBitmapImageRep alloc]
+ initWithBitmapDataPlanes:NULL
+ pixelsWide:image->get_width()
+ pixelsHigh:image->get_height()
+ bitsPerSample:8
+ samplesPerPixel:4
+ hasAlpha:YES
+ isPlanar:NO
+ colorSpaceName:NSDeviceRGBColorSpace
+ bytesPerRow:image->get_width() * 4
+ bitsPerPixel:32] autorelease];
+
+ ERR_FAIL_COND(imgrep == nil);
+ uint8_t *pixels = [imgrep bitmapData];
+
+ int len = image->get_width() * image->get_height();
+ PoolVector<uint8_t> data = image->get_data();
+ PoolVector<uint8_t>::Read r = data.read();
+
+ /* Premultiply the alpha channel */
+ for (int i = 0; i < len; i++) {
+ uint8_t alpha = r[i * 4 + 3];
+ pixels[i * 4 + 0] = (uint8_t)(((uint16_t)r[i * 4 + 0] * alpha) / 255);
+ pixels[i * 4 + 1] = (uint8_t)(((uint16_t)r[i * 4 + 1] * alpha) / 255);
+ pixels[i * 4 + 2] = (uint8_t)(((uint16_t)r[i * 4 + 2] * alpha) / 255);
+ pixels[i * 4 + 3] = alpha;
+ }
+
+ NSImage *nsimage = [[[NSImage alloc] initWithSize:NSMakeSize(image->get_width(), image->get_height())] autorelease];
+ [nsimage addRepresentation:imgrep];
+
+ NSCursor *cursor = [[NSCursor alloc] initWithImage:nsimage hotSpot:NSMakePoint(p_hotspot.x, p_hotspot.y)];
+
+ cursors[p_shape] = cursor;
+
+ if (p_shape == CURSOR_ARROW) {
+ [cursor set];
+ }
+ }
+}
+
void OS_OSX::set_mouse_show(bool p_show) {
}
@@ -1665,9 +1794,8 @@ float OS_OSX::_display_scale(id screen) const {
if ([screen respondsToSelector:@selector(backingScaleFactor)]) {
return fmax(1.0, [screen backingScaleFactor]);
}
- } else {
- return 1.0;
}
+ return 1.0;
}
Point2 OS_OSX::get_native_window_position() const {
@@ -1726,10 +1854,14 @@ void OS_OSX::set_window_size(const Size2 p_size) {
CGFloat menuBarHeight = [[[NSApplication sharedApplication] mainMenu] menuBarHeight];
if (menuBarHeight != 0.f) {
size.y += menuBarHeight;
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101104
} else {
- size.y += [[NSStatusBar systemStatusBar] thickness];
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
+ if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_12) {
+#else
+ {
#endif
+ size.y += [[NSStatusBar systemStatusBar] thickness];
+ }
}
}
@@ -1742,36 +1874,27 @@ void OS_OSX::set_window_size(const Size2 p_size) {
void OS_OSX::set_window_fullscreen(bool p_enabled) {
if (zoomed != p_enabled) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
[window_object toggleFullScreen:nil];
-#else
- [window_object performZoom:nil];
-#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
}
zoomed = p_enabled;
};
bool OS_OSX::is_window_fullscreen() const {
-#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070
- if ([window_object respondsToSelector:@selector(isZoomed)])
- return [window_object isZoomed];
-#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
-
return zoomed;
};
void OS_OSX::set_window_resizable(bool p_enabled) {
if (p_enabled)
- [window_object setStyleMask:[window_object styleMask] | NSResizableWindowMask];
+ [window_object setStyleMask:[window_object styleMask] | NSWindowStyleMaskResizable];
else
- [window_object setStyleMask:[window_object styleMask] & ~NSResizableWindowMask];
+ [window_object setStyleMask:[window_object styleMask] & ~NSWindowStyleMaskResizable];
};
bool OS_OSX::is_window_resizable() const {
- return [window_object styleMask] & NSResizableWindowMask;
+ return [window_object styleMask] & NSWindowStyleMaskResizable;
};
void OS_OSX::set_window_minimized(bool p_enabled) {
@@ -1826,7 +1949,7 @@ void OS_OSX::set_borderless_window(bool p_borderless) {
if (p_borderless) {
[window_object setStyleMask:NSWindowStyleMaskBorderless];
} else {
- [window_object setStyleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask];
+ [window_object setStyleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable];
// Force update of the window styles
NSRect frameRect = [window_object frame];
@@ -1950,7 +2073,7 @@ void OS_OSX::process_events() {
while (true) {
NSEvent *event = [NSApp
- nextEventMatchingMask:NSAnyEventMask
+ nextEventMatchingMask:NSEventMaskAny
untilDate:[NSDate distantPast]
inMode:NSDefaultRunLoopMode
dequeue:YES];
@@ -1960,11 +2083,49 @@ void OS_OSX::process_events() {
[NSApp sendEvent:event];
}
+ process_key_events();
[autoreleasePool drain];
autoreleasePool = [[NSAutoreleasePool alloc] init];
}
+void OS_OSX::process_key_events() {
+
+ Ref<InputEventKey> k;
+ for (int i = 0; i < key_event_pos; i++) {
+
+ KeyEvent &ke = key_event_buffer[i];
+
+ if ((i == 0 && ke.scancode == 0) || (i > 0 && key_event_buffer[i - 1].scancode == 0)) {
+ k.instance();
+
+ get_key_modifier_state(ke.osx_state, k);
+ k->set_pressed(ke.pressed);
+ k->set_echo(ke.echo);
+ k->set_scancode(0);
+ k->set_unicode(ke.unicode);
+
+ push_input(k);
+ }
+ if (ke.scancode != 0) {
+ k.instance();
+
+ get_key_modifier_state(ke.osx_state, k);
+ k->set_pressed(ke.pressed);
+ k->set_echo(ke.echo);
+ k->set_scancode(ke.scancode);
+
+ if (i + 1 < key_event_pos && key_event_buffer[i + 1].scancode == 0) {
+ k->set_unicode(key_event_buffer[i + 1].unicode);
+ }
+
+ push_input(k);
+ }
+ }
+
+ key_event_pos = 0;
+}
+
void OS_OSX::push_input(const Ref<InputEvent> &p_event) {
Ref<InputEvent> ev = p_event;
@@ -2084,6 +2245,7 @@ OS_OSX *OS_OSX::singleton = NULL;
OS_OSX::OS_OSX() {
+ key_event_pos = 0;
mouse_mode = OS::MOUSE_MODE_VISIBLE;
main_loop = NULL;
singleton = this;
@@ -2142,7 +2304,7 @@ OS_OSX::OS_OSX() {
[apple_menu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"];
menu_item = [apple_menu addItemWithTitle:NSLocalizedString(@"Hide Others", nil) action:@selector(hideOtherApplications:) keyEquivalent:@"h"];
- [menu_item setKeyEquivalentModifierMask:(NSAlternateKeyMask | NSCommandKeyMask)];
+ [menu_item setKeyEquivalentModifierMask:(NSEventModifierFlagOption | NSEventModifierFlagCommand)];
[apple_menu addItemWithTitle:NSLocalizedString(@"Show all", nil) action:@selector(unhideAllApplications:) keyEquivalent:@""];
@@ -2176,6 +2338,20 @@ OS_OSX::OS_OSX() {
Vector<Logger *> loggers;
loggers.push_back(memnew(OSXTerminalLogger));
_set_logger(memnew(CompositeLogger(loggers)));
+
+ //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];
+ }
}
bool OS_OSX::_check_internal_feature_support(const String &p_feature) {
diff --git a/platform/osx/platform_config.h b/platform/osx/platform_config.h
index a3715e7e4e..1b497cebef 100644
--- a/platform/osx/platform_config.h
+++ b/platform/osx/platform_config.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
#define GLES3_INCLUDE_H "glad/glad.h"
diff --git a/platform/osx/sem_osx.cpp b/platform/osx/sem_osx.cpp
index 2e7da62e5b..92f749322e 100644
--- a/platform/osx/sem_osx.cpp
+++ b/platform/osx/sem_osx.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sem_osx.h"
#include <fcntl.h>
diff --git a/platform/osx/sem_osx.h b/platform/osx/sem_osx.h
index 0b9bbdfa76..ce31e966b7 100644
--- a/platform/osx/sem_osx.h
+++ b/platform/osx/sem_osx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEM_OSX_H
#define SEM_OSX_H
diff --git a/platform/register_platform_apis.h b/platform/register_platform_apis.h
index 3ac3b319da..1c50eb95e3 100644
--- a/platform/register_platform_apis.h
+++ b/platform/register_platform_apis.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_APIS_H
#define REGISTER_APIS_H
diff --git a/platform/server/detect.py b/platform/server/detect.py
index ffec2af933..61b56ddefa 100644
--- a/platform/server/detect.py
+++ b/platform/server/detect.py
@@ -59,7 +59,7 @@ def configure(env):
if ('clang++' not in env['CXX']):
env["CC"] = "clang"
env["CXX"] = "clang++"
- env["LD"] = "clang++"
+ env["LINK"] = "clang++"
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env.extra_suffix = ".llvm" + env.extra_suffix
@@ -86,6 +86,16 @@ def configure(env):
if not env['builtin_libpng']:
env.ParseConfig('pkg-config libpng --cflags --libs')
+ if not env['builtin_bullet']:
+ # We need at least version 2.88
+ import subprocess
+ bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip()
+ if bullet_version < "2.88":
+ # Abort as system bullet was requested but too old
+ print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.88"))
+ sys.exit(255)
+ env.ParseConfig('pkg-config bullet --cflags --libs')
+
if not env['builtin_enet']:
env.ParseConfig('pkg-config libenet --cflags --libs')
diff --git a/platform/server/godot_server.cpp b/platform/server/godot_server.cpp
index 8e4742a1b0..3e48f0bf7f 100644
--- a/platform/server/godot_server.cpp
+++ b/platform/server/godot_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_server.h"
diff --git a/platform/server/os_server.cpp b/platform/server/os_server.cpp
index c34567aaab..370a347399 100644
--- a/platform/server/os_server.cpp
+++ b/platform/server/os_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
//#include "servers/visual/visual_server_raster.h"
//#include "servers/visual/rasterizer_dummy.h"
#include "os_server.h"
@@ -47,7 +48,7 @@ const char *OS_Server::get_video_driver_name(int p_driver) const {
return "Dummy";
}
-void OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
args = OS::get_singleton()->get_cmdline_args();
current_videomode = p_desired;
@@ -67,14 +68,17 @@ void OS_Server::initialize(const VideoMode &p_desired, int p_video_driver, int p
spatial_sound_2d_server = memnew(SpatialSound2DServerSW);
spatial_sound_2d_server->init();
- ERR_FAIL_COND(!visual_server);
+ ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE);
visual_server->init();
input = memnew(InputDefault);
_ensure_user_data_dir();
+
+ return OK;
}
+
void OS_Server::finalize() {
if (main_loop)
@@ -179,6 +183,9 @@ void OS_Server::move_window_to_foreground() {
void OS_Server::set_cursor_shape(CursorShape p_shape) {
}
+void OS_Server::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+}
+
OS::PowerState OS_Server::get_power_state() {
return power_manager->get_power_state();
}
diff --git a/platform/server/os_server.h b/platform/server/os_server.h
index c58c48500e..7abb4565d5 100644
--- a/platform/server/os_server.h
+++ b/platform/server/os_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_SERVER_H
#define OS_SERVER_H
@@ -66,7 +67,7 @@ protected:
virtual int get_video_driver_count() const;
virtual const char *get_video_driver_name(int p_driver) const;
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void finalize();
virtual void set_main_loop(MainLoop *p_main_loop);
@@ -75,6 +76,7 @@ public:
virtual String get_name();
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
virtual void set_mouse_show(bool p_show);
virtual void set_mouse_grab(bool p_grab);
diff --git a/platform/server/platform_config.h b/platform/server/platform_config.h
index 413fea20d8..af4cf07393 100644
--- a/platform/server/platform_config.h
+++ b/platform/server/platform_config.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <alloca.h>
diff --git a/platform/uwp/app.cpp b/platform/uwp/app.cpp
index 4468c18eba..5ff62b38f9 100644
--- a/platform/uwp/app.cpp
+++ b/platform/uwp/app.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
//
// This file demonstrates how to initialize EGL in a Windows Store app, using ICoreWindow.
//
diff --git a/platform/uwp/app.h b/platform/uwp/app.h
index 0641ea1b8c..c23270b8ba 100644
--- a/platform/uwp/app.h
+++ b/platform/uwp/app.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#pragma once
#include <string>
diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp
index f9a8b6f26e..620f6c0f24 100644
--- a/platform/uwp/export/export.cpp
+++ b/platform/uwp/export/export.cpp
@@ -1024,6 +1024,17 @@ public:
virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) {
r_features->push_back("s3tc");
r_features->push_back("etc");
+ switch ((int)p_preset->get("architecture/target")) {
+ case EditorExportUWP::ARM: {
+ r_features->push_back("arm");
+ } break;
+ case EditorExportUWP::X86: {
+ r_features->push_back("32");
+ } break;
+ case EditorExportUWP::X64: {
+ r_features->push_back("64");
+ } break;
+ }
}
virtual void get_export_options(List<ExportOption> *r_options) {
diff --git a/platform/uwp/export/export.h b/platform/uwp/export/export.h
index 8e248b1969..bd759c8647 100644
--- a/platform/uwp/export/export.h
+++ b/platform/uwp/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_uwp_exporter();
diff --git a/platform/uwp/gl_context_egl.cpp b/platform/uwp/gl_context_egl.cpp
index 2dde05a01f..88c9c8d687 100644
--- a/platform/uwp/gl_context_egl.cpp
+++ b/platform/uwp/gl_context_egl.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gl_context_egl.h"
#include "EGL/eglext.h"
diff --git a/platform/uwp/gl_context_egl.h b/platform/uwp/gl_context_egl.h
index 55fd7ce705..527baf1054 100644
--- a/platform/uwp/gl_context_egl.h
+++ b/platform/uwp/gl_context_egl.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTEXT_EGL_H
#define CONTEXT_EGL_H
diff --git a/platform/uwp/joypad_uwp.h b/platform/uwp/joypad_uwp.h
index 442f805b1f..98202cce9e 100644
--- a/platform/uwp/joypad_uwp.h
+++ b/platform/uwp/joypad_uwp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOYPAD_UWP_H
#define JOYPAD_UWP_H
diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp
index a665bf4aff..d00da3dbcd 100644
--- a/platform/uwp/os_uwp.cpp
+++ b/platform/uwp/os_uwp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_uwp.h"
#include "drivers/gles3/rasterizer_gles3.h"
@@ -194,7 +195,7 @@ void OSUWP::screen_size_changed() {
gl_context->reset();
};
-void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
main_loop = NULL;
outside = true;
@@ -297,6 +298,8 @@ void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_aud
display_request->RequestActive();
set_keep_screen_on(GLOBAL_DEF("display/window/keep_screen_on", true));
+
+ return OK;
}
void OSUWP::set_clipboard(const String &p_text) {
@@ -651,6 +654,10 @@ void OSUWP::set_cursor_shape(CursorShape p_shape) {
cursor_shape = p_shape;
}
+void OSUWP::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ // TODO
+}
+
Error OSUWP::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) {
return FAILED;
@@ -745,6 +752,51 @@ void OSUWP::hide_virtual_keyboard() {
pane->TryHide();
}
+static String format_error_message(DWORD id) {
+
+ LPWSTR messageBuffer = NULL;
+ size_t size = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, id, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&messageBuffer, 0, NULL);
+
+ String msg = "Error " + itos(id) + ": " + String(messageBuffer, size);
+
+ LocalFree(messageBuffer);
+
+ return msg;
+}
+
+Error OSUWP::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) {
+
+ String full_path = "game/" + p_path;
+ p_library_handle = (void *)LoadPackagedLibrary(full_path.c_str(), 0);
+
+ if (!p_library_handle) {
+ ERR_EXPLAIN("Can't open dynamic library: " + full_path + ". Error: " + format_error_message(GetLastError()));
+ ERR_FAIL_V(ERR_CANT_OPEN);
+ }
+ return OK;
+}
+
+Error OSUWP::close_dynamic_library(void *p_library_handle) {
+ if (!FreeLibrary((HMODULE)p_library_handle)) {
+ return FAILED;
+ }
+ return OK;
+}
+
+Error OSUWP::get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional) {
+ p_symbol_handle = (void *)GetProcAddress((HMODULE)p_library_handle, p_name.utf8().get_data());
+ if (!p_symbol_handle) {
+ if (!p_optional) {
+ ERR_EXPLAIN("Can't resolve symbol " + p_name + ". Error: " + String::num(GetLastError()));
+ ERR_FAIL_V(ERR_CANT_RESOLVE);
+ } else {
+ return ERR_CANT_RESOLVE;
+ }
+ }
+ return OK;
+}
+
void OSUWP::run() {
if (!main_loop)
diff --git a/platform/uwp/os_uwp.h b/platform/uwp/os_uwp.h
index 63a2355d25..95afdab469 100644
--- a/platform/uwp/os_uwp.h
+++ b/platform/uwp/os_uwp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OSUWP_H
#define OSUWP_H
@@ -158,7 +159,7 @@ protected:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void set_main_loop(MainLoop *p_main_loop);
virtual void delete_main_loop();
@@ -218,6 +219,7 @@ public:
virtual String get_clipboard() const;
void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
void set_icon(const Ref<Image> &p_icon);
virtual String get_executable_path() const;
@@ -242,6 +244,10 @@ public:
virtual void show_virtual_keyboard(const String &p_existing_text, const Rect2 &p_screen_rect = Rect2());
virtual void hide_virtual_keyboard();
+ virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false);
+ virtual Error close_dynamic_library(void *p_library_handle);
+ virtual Error get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional = false);
+
virtual Error shell_open(String p_uri);
void run();
diff --git a/platform/uwp/platform_config.h b/platform/uwp/platform_config.h
index 0a21339237..606795479b 100644
--- a/platform/uwp/platform_config.h
+++ b/platform/uwp/platform_config.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <malloc.h>
diff --git a/platform/uwp/thread_uwp.cpp b/platform/uwp/thread_uwp.cpp
index 79d244dd61..25cd29190f 100644
--- a/platform/uwp/thread_uwp.cpp
+++ b/platform/uwp/thread_uwp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "thread_uwp.h"
#include "os/memory.h"
diff --git a/platform/uwp/thread_uwp.h b/platform/uwp/thread_uwp.h
index 24ae5ec22a..89081f3b2b 100644
--- a/platform/uwp/thread_uwp.h
+++ b/platform/uwp/thread_uwp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THREAD_UWP_H
#define THREAD_UWP_H
diff --git a/platform/windows/SCsub b/platform/windows/SCsub
index 604896b0db..8965b80fb7 100644
--- a/platform/windows/SCsub
+++ b/platform/windows/SCsub
@@ -39,5 +39,5 @@ if env['vsproj']:
env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)]
if not os.getenv("VCINSTALLDIR"):
- if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+ if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]:
env.AddPostAction(prog, make_debug_mingw)
diff --git a/platform/windows/context_gl_win.cpp b/platform/windows/context_gl_win.cpp
index 6875d23dfa..8b57fdd9ce 100644
--- a/platform/windows/context_gl_win.cpp
+++ b/platform/windows/context_gl_win.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#if defined(OPENGL_ENABLED) || defined(GLES_ENABLED)
// Author: Juan Linietsky <reduzio@gmail.com>, (C) 2008
diff --git a/platform/windows/context_gl_win.h b/platform/windows/context_gl_win.h
index d30f842f4b..e7578a1aeb 100644
--- a/platform/windows/context_gl_win.h
+++ b/platform/windows/context_gl_win.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#if defined(OPENGL_ENABLED) || defined(GLES_ENABLED)
// Author: Juan Linietsky <reduzio@gmail.com>, (C) 2008
diff --git a/platform/windows/crash_handler_win.cpp b/platform/windows/crash_handler_win.cpp
index 50b4f2d811..804c2d44eb 100644
--- a/platform/windows/crash_handler_win.cpp
+++ b/platform/windows/crash_handler_win.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_windows.h"
#include "project_settings.h"
diff --git a/platform/windows/crash_handler_win.h b/platform/windows/crash_handler_win.h
index 6f170fb958..95b1468197 100644
--- a/platform/windows/crash_handler_win.h
+++ b/platform/windows/crash_handler_win.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CRASH_HANDLER_WIN_H
#define CRASH_HANDLER_WIN_H
diff --git a/platform/windows/ctxgl_procaddr.cpp b/platform/windows/ctxgl_procaddr.cpp
index dfb15cc358..434eeea16e 100644
--- a/platform/windows/ctxgl_procaddr.cpp
+++ b/platform/windows/ctxgl_procaddr.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef OPENGL_ENABLED
#include "ctxgl_procaddr.h"
#include <GL/gl.h>
diff --git a/platform/windows/ctxgl_procaddr.h b/platform/windows/ctxgl_procaddr.h
index 168f808285..cd229fb8db 100644
--- a/platform/windows/ctxgl_procaddr.h
+++ b/platform/windows/ctxgl_procaddr.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CTXGL_PROCADDR_H
#define CTXGL_PROCADDR_H
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 489bac50f5..22d04153c8 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -69,6 +69,7 @@ def get_opts():
# Vista support dropped after EOL due to GH-10243
('target_win_version', 'Targeted Windows version, >= 0x0601 (Windows 7)', '0x0601'),
EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')),
+ BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False),
]
@@ -265,7 +266,7 @@ def configure(env):
env['CXX'] = mingw_prefix + "g++"
env['AR'] = mingw_prefix + "gcc-ar"
env['RANLIB'] = mingw_prefix + "gcc-ranlib"
- env['LD'] = mingw_prefix + "g++"
+ env['LINK'] = mingw_prefix + "g++"
env["x86_libtheora_opt_gcc"] = True
if env['use_lto']:
diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp
index d5c2cf7992..97544c18f5 100644
--- a/platform/windows/export/export.cpp
+++ b/platform/windows/export/export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "editor/editor_export.h"
#include "editor/editor_settings.h"
#include "os/file_access.h"
diff --git a/platform/windows/export/export.h b/platform/windows/export/export.h
index 78421928ff..7f62e8955c 100644
--- a/platform/windows/export/export.h
+++ b/platform/windows/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_windows_exporter();
diff --git a/platform/windows/godot_win.cpp b/platform/windows/godot_win.cpp
index 20e351c47c..80f53dd1a1 100644
--- a/platform/windows/godot_win.cpp
+++ b/platform/windows/godot_win.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "main/main.h"
#include "os_windows.h"
#include <locale.h>
diff --git a/platform/windows/joypad.cpp b/platform/windows/joypad.cpp
index 4a3936b175..796531fe24 100644
--- a/platform/windows/joypad.cpp
+++ b/platform/windows/joypad.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "joypad.h"
#include <oleauto.h>
#include <wbemidl.h>
diff --git a/platform/windows/joypad.h b/platform/windows/joypad.h
index f3d24bce85..0d14480733 100644
--- a/platform/windows/joypad.h
+++ b/platform/windows/joypad.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOYPAD_H
#define JOYPAD_H
diff --git a/platform/windows/key_mapping_win.cpp b/platform/windows/key_mapping_win.cpp
index bb90cb661a..69dd385354 100644
--- a/platform/windows/key_mapping_win.cpp
+++ b/platform/windows/key_mapping_win.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "key_mapping_win.h"
#include <stdio.h>
diff --git a/platform/windows/key_mapping_win.h b/platform/windows/key_mapping_win.h
index 2daf3f4f01..8d6461f27d 100644
--- a/platform/windows/key_mapping_win.h
+++ b/platform/windows/key_mapping_win.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef KEY_MAPPING_WINDOWS_H
#define KEY_MAPPING_WINDOWS_H
diff --git a/platform/windows/lang_table.h b/platform/windows/lang_table.h
index 614fbd8ae9..1a966b502a 100644
--- a/platform/windows/lang_table.h
+++ b/platform/windows/lang_table.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LANG_TABLE_H
#define LANG_TABLE_H
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index 8edc2c5cff..a2a51f10a7 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -416,6 +416,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
/*mm->get_button_mask()|=(wParam&MK_XBUTTON1)?(1<<5):0;
mm->get_button_mask()|=(wParam&MK_XBUTTON2)?(1<<6):0;*/
mm->set_position(Vector2(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
+ mm->set_global_position(Vector2(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)));
if (mouse_mode == MOUSE_MODE_CAPTURED) {
@@ -461,6 +462,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
case WM_MOUSEWHEEL:
case WM_MOUSEHWHEEL:
case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
/*case WM_XBUTTONDOWN:
case WM_XBUTTONUP: */ {
@@ -519,6 +521,12 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
mb->set_button_index(2);
mb->set_doubleclick(true);
} break;
+ case WM_MBUTTONDBLCLK: {
+
+ mb->set_pressed(true);
+ mb->set_button_index(3);
+ mb->set_doubleclick(true);
+ } break;
case WM_MOUSEWHEEL: {
mb->set_pressed(true);
@@ -580,7 +588,7 @@ LRESULT OS_Windows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
mb->set_position(Vector2(old_x, old_y));
}
- if (uMsg != WM_MOUSEWHEEL) {
+ if (uMsg != WM_MOUSEWHEEL && uMsg != WM_MOUSEHWHEEL) {
if (mb->is_pressed()) {
if (++pressrc > 0)
@@ -929,7 +937,7 @@ typedef enum _SHC_PROCESS_DPI_AWARENESS {
SHC_PROCESS_PER_MONITOR_DPI_AWARE = 2
} SHC_PROCESS_DPI_AWARENESS;
-void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
main_loop = NULL;
outside = true;
@@ -975,7 +983,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
if (!RegisterClassExW(&wc)) {
MessageBox(NULL, "Failed To Register The Window Class.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
- return; // Return
+ return ERR_UNAVAILABLE;
}
pre_fs_valid = true;
@@ -1045,7 +1053,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
RECT rect;
if (!GetClientRect(hWnd, &rect)) {
MessageBoxW(NULL, L"Window Creation Error.", L"ERROR", MB_OK | MB_ICONEXCLAMATION);
- return; // Return FALSE
+ return ERR_UNAVAILABLE;
};
video_mode.width = rect.right;
video_mode.height = rect.bottom;
@@ -1063,7 +1071,7 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
NULL, NULL, hInstance, NULL);
if (!hWnd) {
MessageBoxW(NULL, L"Window Creation Error.", L"ERROR", MB_OK | MB_ICONEXCLAMATION);
- return; // Return FALSE
+ return ERR_UNAVAILABLE;
}
};
@@ -1127,6 +1135,8 @@ void OS_Windows::initialize(const VideoMode &p_desired, int p_video_driver, int
SetForegroundWindow(hWnd); // Slightly Higher Priority
SetFocus(hWnd); // Sets Keyboard Focus To
}
+
+ return OK;
}
void OS_Windows::set_clipboard(const String &p_text) {
@@ -1631,6 +1641,13 @@ void OS_Windows::_update_window_style(bool repaint) {
Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) {
+ String path = p_path;
+
+ if (!FileAccess::exists(path)) {
+ //this code exists so gdnative can load .dll files from within the executable path
+ path = get_executable_path().get_base_dir().plus_file(p_path.get_file());
+ }
+
typedef DLL_DIRECTORY_COOKIE(WINAPI * PAddDllDirectory)(PCWSTR);
typedef BOOL(WINAPI * PRemoveDllDirectory)(DLL_DIRECTORY_COOKIE);
@@ -1638,15 +1655,15 @@ Error OS_Windows::open_dynamic_library(const String p_path, void *&p_library_han
PRemoveDllDirectory remove_dll_directory = (PRemoveDllDirectory)GetProcAddress(GetModuleHandle("kernel32.dll"), "RemoveDllDirectory");
bool has_dll_directory_api = ((add_dll_directory != NULL) && (remove_dll_directory != NULL));
- DLL_DIRECTORY_COOKIE cookie;
+ DLL_DIRECTORY_COOKIE cookie = NULL;
if (p_also_set_library_path && has_dll_directory_api) {
- cookie = add_dll_directory(p_path.get_base_dir().c_str());
+ cookie = add_dll_directory(path.get_base_dir().c_str());
}
- p_library_handle = (void *)LoadLibraryExW(p_path.c_str(), NULL, (p_also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0);
+ p_library_handle = (void *)LoadLibraryExW(path.c_str(), NULL, (p_also_set_library_path && has_dll_directory_api) ? LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : 0);
- if (p_also_set_library_path && has_dll_directory_api) {
+ if (cookie) {
remove_dll_directory(cookie);
}
@@ -1844,10 +1861,125 @@ void OS_Windows::set_cursor_shape(CursorShape p_shape) {
IDC_HELP
};
- SetCursor(LoadCursor(hInstance, win_cursors[p_shape]));
+ if (cursors[p_shape] != NULL) {
+ SetCursor(cursors[p_shape]);
+ } else {
+ SetCursor(LoadCursor(hInstance, win_cursors[p_shape]));
+ }
cursor_shape = p_shape;
}
+void OS_Windows::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ if (p_cursor.is_valid()) {
+ Ref<Texture> texture = p_cursor;
+ Ref<Image> image = texture->get_data();
+
+ UINT image_size = 32 * 32;
+ UINT size = sizeof(UINT) * image_size;
+
+ ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32);
+
+ // Create the BITMAP with alpha channel
+ COLORREF *buffer = (COLORREF *)malloc(sizeof(COLORREF) * image_size);
+
+ image->lock();
+ for (UINT index = 0; index < image_size; index++) {
+ int column_index = floor(index / 32);
+ int row_index = index % 32;
+
+ Color pcColor = image->get_pixel(row_index, column_index);
+ *(buffer + index) = image->get_pixel(row_index, column_index).to_argb32();
+ }
+ image->unlock();
+
+ // Using 4 channels, so 4 * 8 bits
+ HBITMAP bitmap = CreateBitmap(32, 32, 1, 4 * 8, buffer);
+ COLORREF clrTransparent = -1;
+
+ // Create the AND and XOR masks for the bitmap
+ HBITMAP hAndMask = NULL;
+ HBITMAP hXorMask = NULL;
+
+ GetMaskBitmaps(bitmap, clrTransparent, hAndMask, hXorMask);
+
+ if (NULL == hAndMask || NULL == hXorMask) {
+ return;
+ }
+
+ // Finally, create the icon
+ ICONINFO iconinfo = { 0 };
+ iconinfo.fIcon = FALSE;
+ iconinfo.xHotspot = p_hotspot.x;
+ iconinfo.yHotspot = p_hotspot.y;
+ iconinfo.hbmMask = hAndMask;
+ iconinfo.hbmColor = hXorMask;
+
+ cursors[p_shape] = CreateIconIndirect(&iconinfo);
+
+ if (p_shape == CURSOR_ARROW) {
+ SetCursor(cursors[p_shape]);
+ }
+
+ if (hAndMask != NULL) {
+ DeleteObject(hAndMask);
+ }
+
+ if (hXorMask != NULL) {
+ DeleteObject(hXorMask);
+ }
+ }
+}
+
+void OS_Windows::GetMaskBitmaps(HBITMAP hSourceBitmap, COLORREF clrTransparent, OUT HBITMAP &hAndMaskBitmap, OUT HBITMAP &hXorMaskBitmap) {
+
+ // Get the system display DC
+ HDC hDC = GetDC(NULL);
+
+ // Create helper DC
+ HDC hMainDC = CreateCompatibleDC(hDC);
+ HDC hAndMaskDC = CreateCompatibleDC(hDC);
+ HDC hXorMaskDC = CreateCompatibleDC(hDC);
+
+ // Get the dimensions of the source bitmap
+ BITMAP bm;
+ GetObject(hSourceBitmap, sizeof(BITMAP), &bm);
+
+ // Create the mask bitmaps
+ hAndMaskBitmap = CreateCompatibleBitmap(hDC, bm.bmWidth, bm.bmHeight); // color
+ hXorMaskBitmap = CreateCompatibleBitmap(hDC, bm.bmWidth, bm.bmHeight); // color
+
+ // Release the system display DC
+ ReleaseDC(NULL, hDC);
+
+ // Select the bitmaps to helper DC
+ HBITMAP hOldMainBitmap = (HBITMAP)SelectObject(hMainDC, hSourceBitmap);
+ HBITMAP hOldAndMaskBitmap = (HBITMAP)SelectObject(hAndMaskDC, hAndMaskBitmap);
+ HBITMAP hOldXorMaskBitmap = (HBITMAP)SelectObject(hXorMaskDC, hXorMaskBitmap);
+
+ // Assign the monochrome AND mask bitmap pixels so that a pixels of the source bitmap
+ // with 'clrTransparent' will be white pixels of the monochrome bitmap
+ SetBkColor(hMainDC, clrTransparent);
+ BitBlt(hAndMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hMainDC, 0, 0, SRCCOPY);
+
+ // Assign the color XOR mask bitmap pixels so that a pixels of the source bitmap
+ // with 'clrTransparent' will be black and rest the pixels same as corresponding
+ // pixels of the source bitmap
+ SetBkColor(hXorMaskDC, RGB(0, 0, 0));
+ SetTextColor(hXorMaskDC, RGB(255, 255, 255));
+ BitBlt(hXorMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hAndMaskDC, 0, 0, SRCCOPY);
+ BitBlt(hXorMaskDC, 0, 0, bm.bmWidth, bm.bmHeight, hMainDC, 0, 0, SRCAND);
+
+ // Deselect bitmaps from the helper DC
+ SelectObject(hMainDC, hOldMainBitmap);
+ SelectObject(hAndMaskDC, hOldAndMaskBitmap);
+ SelectObject(hXorMaskDC, hOldXorMaskBitmap);
+
+ // Delete the helper DC
+ DeleteDC(hXorMaskDC);
+ DeleteDC(hAndMaskDC);
+ DeleteDC(hMainDC);
+}
+
Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr) {
if (p_blocking && r_pipe) {
@@ -2079,6 +2211,36 @@ String OS_Windows::get_locale() const {
return "en";
}
+// We need this because GetSystemInfo() is unreliable on WOW64
+// see https://msdn.microsoft.com/en-us/library/windows/desktop/ms724381(v=vs.85).aspx
+// Taken from MSDN
+typedef BOOL(WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
+LPFN_ISWOW64PROCESS fnIsWow64Process;
+
+BOOL is_wow64() {
+ BOOL wow64 = FALSE;
+
+ fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
+
+ if (fnIsWow64Process) {
+ if (!fnIsWow64Process(GetCurrentProcess(), &wow64)) {
+ wow64 = FALSE;
+ }
+ }
+
+ return wow64;
+}
+
+int OS_Windows::get_processor_count() const {
+ SYSTEM_INFO sysinfo;
+ if (is_wow64())
+ GetNativeSystemInfo(&sysinfo);
+ else
+ GetSystemInfo(&sysinfo);
+
+ return sysinfo.dwNumberOfProcessors;
+}
+
OS::LatinKeyboardVariant OS_Windows::get_latin_keyboard_variant() const {
unsigned long azerty[] = {
diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h
index d709fb3fe5..7308650695 100644
--- a/platform/windows/os_windows.h
+++ b/platform/windows/os_windows.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_WINDOWS_H
#define OS_WINDOWS_H
#include "context_gl_win.h"
@@ -113,6 +114,7 @@ class OS_Windows : public OS {
bool window_has_focus;
uint32_t last_button_state;
+ HCURSOR cursors[CURSOR_MAX] = { NULL };
CursorShape cursor_shape;
InputDefault *input;
@@ -147,7 +149,7 @@ protected:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void set_main_loop(MainLoop *p_main_loop);
virtual void delete_main_loop();
@@ -244,11 +246,16 @@ public:
virtual String get_clipboard() const;
void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
+ void GetMaskBitmaps(HBITMAP hSourceBitmap, COLORREF clrTransparent, OUT HBITMAP &hAndMaskBitmap, OUT HBITMAP &hXorMaskBitmap);
void set_icon(const Ref<Image> &p_icon);
virtual String get_executable_path() const;
virtual String get_locale() const;
+
+ virtual int get_processor_count() const;
+
virtual LatinKeyboardVariant get_latin_keyboard_variant() const;
virtual void enable_for_stealing_focus(ProcessID pid);
diff --git a/platform/windows/platform_config.h b/platform/windows/platform_config.h
index 6c26a8228d..10ec9110d1 100644
--- a/platform/windows/platform_config.h
+++ b/platform/windows/platform_config.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <malloc.h>
//#else
//#include <alloca.h>
diff --git a/platform/x11/SCsub b/platform/x11/SCsub
index 38dd2ddd88..b18757337a 100644
--- a/platform/x11/SCsub
+++ b/platform/x11/SCsub
@@ -19,5 +19,5 @@ common_x11 = [
prog = env.add_program('#bin/godot', ['godot_x11.cpp'] + common_x11)
-if env["debug_symbols"] == "full" or env["debug_symbols"] == "yes":
+if (env["debug_symbols"] == "full" or env["debug_symbols"] == "yes") and env["separate_debug_symbols"]:
env.AddPostAction(prog, make_debug)
diff --git a/platform/x11/context_gl_x11.cpp b/platform/x11/context_gl_x11.cpp
index b232f36a46..20f2212861 100644
--- a/platform/x11/context_gl_x11.cpp
+++ b/platform/x11/context_gl_x11.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "context_gl_x11.h"
#ifdef X11_ENABLED
diff --git a/platform/x11/context_gl_x11.h b/platform/x11/context_gl_x11.h
index efebd3f78d..c969f0044d 100644
--- a/platform/x11/context_gl_x11.h
+++ b/platform/x11/context_gl_x11.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTEXT_GL_X11_H
#define CONTEXT_GL_X11_H
diff --git a/platform/x11/crash_handler_x11.cpp b/platform/x11/crash_handler_x11.cpp
index f0eb8a6d5b..43b9051ea7 100644
--- a/platform/x11/crash_handler_x11.cpp
+++ b/platform/x11/crash_handler_x11.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef DEBUG_ENABLED
#define CRASH_HANDLER_ENABLED 1
#endif
diff --git a/platform/x11/crash_handler_x11.h b/platform/x11/crash_handler_x11.h
index 36ab29b597..49ca0df9a8 100644
--- a/platform/x11/crash_handler_x11.h
+++ b/platform/x11/crash_handler_x11.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CRASH_HANDLER_X11_H
#define CRASH_HANDLER_X11_H
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index cb45fed1be..02bd7232c2 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -55,6 +55,7 @@ def get_opts():
BoolVariable('pulseaudio', 'Detect & use pulseaudio', True),
BoolVariable('udev', 'Use udev for gamepad connection callbacks', False),
EnumVariable('debug_symbols', 'Add debug symbols to release version', 'yes', ('yes', 'no', 'full')),
+ BoolVariable('separate_debug_symbols', 'Create a separate file with the debug symbols', False),
BoolVariable('touch', 'Enable touch events', True),
]
@@ -109,7 +110,7 @@ def configure(env):
if ('clang++' not in env['CXX']):
env["CC"] = "clang"
env["CXX"] = "clang++"
- env["LD"] = "clang++"
+ env["LINK"] = "clang++"
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env.extra_suffix = ".llvm" + env.extra_suffix
@@ -172,6 +173,16 @@ def configure(env):
if not env['builtin_libpng']:
env.ParseConfig('pkg-config libpng --cflags --libs')
+ if not env['builtin_bullet']:
+ # We need at least version 2.88
+ import subprocess
+ bullet_version = subprocess.check_output(['pkg-config', 'bullet', '--modversion']).strip()
+ if bullet_version < "2.88":
+ # Abort as system bullet was requested but too old
+ print("Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(bullet_version, "2.88"))
+ sys.exit(255)
+ env.ParseConfig('pkg-config bullet --cflags --libs')
+
if not env['builtin_enet']:
env.ParseConfig('pkg-config libenet --cflags --libs')
diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp
index 3a8786f296..904aceaca0 100644
--- a/platform/x11/export/export.cpp
+++ b/platform/x11/export/export.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "export.h"
#include "editor/editor_export.h"
diff --git a/platform/x11/export/export.h b/platform/x11/export/export.h
index 152a64df86..ac44cef8f7 100644
--- a/platform/x11/export/export.h
+++ b/platform/x11/export/export.h
@@ -27,4 +27,5 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
void register_x11_exporter();
diff --git a/platform/x11/godot_x11.cpp b/platform/x11/godot_x11.cpp
index c7d7bb643b..3241cbcbf9 100644
--- a/platform/x11/godot_x11.cpp
+++ b/platform/x11/godot_x11.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include <limits.h>
#include <locale.h>
#include <stdlib.h>
diff --git a/platform/x11/key_mapping_x11.cpp b/platform/x11/key_mapping_x11.cpp
index 5e15768d66..423e2737ee 100644
--- a/platform/x11/key_mapping_x11.cpp
+++ b/platform/x11/key_mapping_x11.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "key_mapping_x11.h"
/***** SCAN CODE CONVERSION ******/
diff --git a/platform/x11/key_mapping_x11.h b/platform/x11/key_mapping_x11.h
index 022affcbea..62dfcf3a4d 100644
--- a/platform/x11/key_mapping_x11.h
+++ b/platform/x11/key_mapping_x11.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef KEY_MAPPING_X11_H
#define KEY_MAPPING_X11_H
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index 240d6638a9..eaf72d4dbf 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "os_x11.h"
#include "drivers/gles3/rasterizer_gles3.h"
#include "errno.h"
@@ -100,7 +101,7 @@ void OS_X11::initialize_core() {
OS_Unix::initialize_core();
}
-void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
+Error OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver) {
long im_event_mask = 0;
last_button_state = 0;
@@ -123,21 +124,24 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
/** XLIB INITIALIZATION **/
x11_display = XOpenDisplay(NULL);
+ if (!x11_display) {
+ ERR_PRINT("X11 Display is not available");
+ return ERR_UNAVAILABLE;
+ }
+
char *modifiers = NULL;
Bool xkb_dar = False;
- if (x11_display) {
- XAutoRepeatOn(x11_display);
- xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL);
+ XAutoRepeatOn(x11_display);
+ xkb_dar = XkbSetDetectableAutoRepeat(x11_display, True, NULL);
- // Try to support IME if detectable auto-repeat is supported
- if (xkb_dar == True) {
+ // Try to support IME if detectable auto-repeat is supported
+ if (xkb_dar == True) {
#ifdef X_HAVE_UTF8_STRING
- // Xutf8LookupString will be used later instead of XmbLookupString before
- // the multibyte sequences can be converted to unicode string.
- modifiers = XSetLocaleModifiers("");
+ // Xutf8LookupString will be used later instead of XmbLookupString before
+ // the multibyte sequences can be converted to unicode string.
+ modifiers = XSetLocaleModifiers("");
#endif
- }
}
if (modifiers == NULL) {
@@ -213,7 +217,7 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
XIFreeDeviceInfo(info);
- if (!touch.devices.size()) {
+ if (is_stdout_verbose() && !touch.devices.size()) {
fprintf(stderr, "No touch devices found\n");
}
}
@@ -331,8 +335,8 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
AudioDriverManager::initialize(p_audio_driver);
- ERR_FAIL_COND(!visual_server);
- ERR_FAIL_COND(x11_window == 0);
+ ERR_FAIL_COND_V(!visual_server, ERR_UNAVAILABLE);
+ ERR_FAIL_COND_V(x11_window == 0, ERR_UNAVAILABLE);
XSetWindowAttributes new_attr;
@@ -519,6 +523,8 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
_window_changed(&xevent);
}
}
+
+ return OK;
}
void OS_X11::xim_destroy_callback(::XIM im, ::XPointer client_data,
@@ -1050,13 +1056,59 @@ void OS_X11::set_window_maximized(bool p_enabled) {
XSendEvent(x11_display, DefaultRootWindow(x11_display), False, SubstructureRedirectMask | SubstructureNotifyMask, &xev);
- while (p_enabled && !is_window_maximized()) {
- // Wait for effective resizing (so the GLX context is too).
+ if (is_window_maximize_allowed()) {
+ while (p_enabled && !is_window_maximized()) {
+ // Wait for effective resizing (so the GLX context is too).
+ }
}
maximized = p_enabled;
}
+bool OS_X11::is_window_maximize_allowed() {
+ Atom property = XInternAtom(x11_display, "_NET_WM_ALLOWED_ACTIONS", False);
+ Atom type;
+ int format;
+ unsigned long len;
+ unsigned long remaining;
+ unsigned char *data = NULL;
+
+ int result = XGetWindowProperty(
+ x11_display,
+ x11_window,
+ property,
+ 0,
+ 1024,
+ False,
+ XA_ATOM,
+ &type,
+ &format,
+ &len,
+ &remaining,
+ &data);
+
+ if (result == Success) {
+ Atom *atoms = (Atom *)data;
+ Atom wm_act_max_horz = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False);
+ Atom wm_act_max_vert = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_VERT", False);
+ bool found_wm_act_max_horz = false;
+ bool found_wm_act_max_vert = false;
+
+ for (unsigned int i = 0; i < len; i++) {
+ if (atoms[i] == wm_act_max_horz)
+ found_wm_act_max_horz = true;
+ if (atoms[i] == wm_act_max_vert)
+ found_wm_act_max_vert = true;
+
+ if (found_wm_act_max_horz || found_wm_act_max_vert)
+ return true;
+ }
+ XFree(atoms);
+ }
+
+ return false;
+}
+
bool OS_X11::is_window_maximized() const {
// Using EWMH -- Extended Window Manager Hints
Atom property = XInternAtom(x11_display, "_NET_WM_STATE", False);
@@ -1810,8 +1862,12 @@ void OS_X11::process_xevents() {
e = event;
req = &(e.xselectionrequest);
- if (req->target == XA_STRING || req->target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) ||
- req->target == XInternAtom(x11_display, "UTF8_STRING", 0)) {
+ if (req->target == XInternAtom(x11_display, "UTF8_STRING", 0) ||
+ req->target == XInternAtom(x11_display, "COMPOUND_TEXT", 0) ||
+ req->target == XInternAtom(x11_display, "TEXT", 0) ||
+ req->target == XA_STRING ||
+ req->target == XInternAtom(x11_display, "text/plain;charset=utf-8", 0) ||
+ req->target == XInternAtom(x11_display, "text/plain", 0)) {
CharString clip = OS::get_clipboard().utf8();
XChangeProperty(x11_display,
req->requestor,
@@ -1824,26 +1880,40 @@ void OS_X11::process_xevents() {
respond.xselection.property = req->property;
} else if (req->target == XInternAtom(x11_display, "TARGETS", 0)) {
- Atom data[2];
- data[0] = XInternAtom(x11_display, "UTF8_STRING", 0);
- data[1] = XA_STRING;
- XChangeProperty(x11_display, req->requestor, req->property, req->target,
- 8, PropModeReplace, (unsigned char *)&data,
- sizeof(data));
+ Atom data[7];
+ data[0] = XInternAtom(x11_display, "TARGETS", 0);
+ data[1] = XInternAtom(x11_display, "UTF8_STRING", 0);
+ data[2] = XInternAtom(x11_display, "COMPOUND_TEXT", 0);
+ data[3] = XInternAtom(x11_display, "TEXT", 0);
+ data[4] = XA_STRING;
+ data[5] = XInternAtom(x11_display, "text/plain;charset=utf-8", 0);
+ data[6] = XInternAtom(x11_display, "text/plain", 0);
+
+ XChangeProperty(x11_display,
+ req->requestor,
+ req->property,
+ XA_ATOM,
+ 32,
+ PropModeReplace,
+ (unsigned char *)&data,
+ sizeof(data) / sizeof(data[0]));
respond.xselection.property = req->property;
} else {
- printf("No String %x\n",
- (int)req->target);
+ char *targetname = XGetAtomName(x11_display, req->target);
+ printf("No Target '%s'\n", targetname);
+ if (targetname)
+ XFree(targetname);
respond.xselection.property = None;
}
+
respond.xselection.type = SelectionNotify;
respond.xselection.display = req->display;
respond.xselection.requestor = req->requestor;
respond.xselection.selection = req->selection;
respond.xselection.target = req->target;
respond.xselection.time = req->time;
- XSendEvent(x11_display, req->requestor, 0, 0, &respond);
+ XSendEvent(x11_display, req->requestor, True, NoEventMask, &respond);
XFlush(x11_display);
} break;
@@ -2205,6 +2275,48 @@ void OS_X11::set_cursor_shape(CursorShape p_shape) {
current_cursor = p_shape;
}
+void OS_X11::set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
+ if (p_cursor.is_valid()) {
+ Ref<Texture> texture = p_cursor;
+ Ref<Image> image = texture->get_data();
+
+ ERR_FAIL_COND(texture->get_width() != 32 || texture->get_height() != 32);
+
+ // Create the cursor structure
+ XcursorImage *cursor_image = XcursorImageCreate(texture->get_width(), texture->get_height());
+ XcursorUInt image_size = 32 * 32;
+ XcursorDim size = sizeof(XcursorPixel) * image_size;
+
+ cursor_image->version = 1;
+ cursor_image->size = size;
+ cursor_image->xhot = p_hotspot.x;
+ cursor_image->yhot = p_hotspot.y;
+
+ // allocate memory to contain the whole file
+ cursor_image->pixels = (XcursorPixel *)malloc(size);
+
+ image->lock();
+
+ for (XcursorPixel index = 0; index < image_size; index++) {
+ int column_index = floor(index / 32);
+ int row_index = index % 32;
+
+ *(cursor_image->pixels + index) = image->get_pixel(row_index, column_index).to_argb32();
+ }
+
+ image->unlock();
+
+ ERR_FAIL_COND(cursor_image->pixels == NULL);
+
+ // Save it for a further usage
+ cursors[p_shape] = XcursorImageLoadCursor(x11_display, cursor_image);
+
+ if (p_shape == CURSOR_ARROW) {
+ XDefineCursor(x11_display, x11_window, cursors[p_shape]);
+ }
+ }
+}
+
void OS_X11::release_rendering_thread() {
context_gl->release_current();
diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h
index 59b9c8caa8..f7bc0b73e0 100644
--- a/platform/x11/os_x11.h
+++ b/platform/x11/os_x11.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OS_X11_H
#define OS_X11_H
@@ -193,17 +194,20 @@ protected:
virtual const char *get_audio_driver_name(int p_driver) const;
virtual void initialize_core();
- virtual void initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
+ virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver);
virtual void finalize();
virtual void set_main_loop(MainLoop *p_main_loop);
void _window_changed(XEvent *xevent);
+ bool is_window_maximize_allowed();
+
public:
virtual String get_name();
virtual void set_cursor_shape(CursorShape p_shape);
+ virtual void set_custom_mouse_cursor(const RES &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot);
void set_mouse_mode(MouseMode p_mode);
MouseMode get_mouse_mode() const;
diff --git a/platform/x11/platform_config.h b/platform/x11/platform_config.h
index 0ad94803c2..58d6b210ee 100644
--- a/platform/x11/platform_config.h
+++ b/platform/x11/platform_config.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef __linux__
#include <alloca.h>
#endif
diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp
index fb8bb3bb83..f290a181ec 100644
--- a/scene/2d/animated_sprite.cpp
+++ b/scene/2d/animated_sprite.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animated_sprite.h"
#include "os/os.h"
#include "scene/scene_string_names.h"
@@ -239,7 +240,7 @@ void SpriteFrames::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_animations"), &SpriteFrames::_set_animations);
ClassDB::bind_method(D_METHOD("_get_animations"), &SpriteFrames::_get_animations);
- ADD_PROPERTYNZ(PropertyInfo(Variant::ARRAY, "animations", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_animations", "_get_animations"); //compatibility
+ ADD_PROPERTYNZ(PropertyInfo(Variant::ARRAY, "animations", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_animations", "_get_animations"); //compatibility
}
SpriteFrames::SpriteFrames() {
diff --git a/scene/2d/animated_sprite.h b/scene/2d/animated_sprite.h
index 8a696a40fc..2c356d619f 100644
--- a/scene/2d/animated_sprite.h
+++ b/scene/2d/animated_sprite.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATED_SPRITE_H
#define ANIMATED_SPRITE_H
diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp
index 29a01d30e1..6fff7ac0a4 100644
--- a/scene/2d/area_2d.cpp
+++ b/scene/2d/area_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area_2d.h"
#include "scene/scene_string_names.h"
#include "servers/audio_server.h"
@@ -169,7 +170,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_
E->get().in_tree = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->body_entered, node);
}
@@ -196,7 +197,7 @@ void Area2D::_body_inout(int p_status, const RID &p_body, int p_instance, int p_
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
if (E->get().in_tree)
emit_signal(SceneStringNames::get_singleton()->body_exited, obj);
}
@@ -270,7 +271,7 @@ void Area2D::_area_inout(int p_status, const RID &p_area, int p_instance, int p_
E->get().in_tree = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid));
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->area_entered, node);
}
@@ -297,7 +298,7 @@ void Area2D::_area_inout(int p_status, const RID &p_area, int p_instance, int p_
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree);
if (E->get().in_tree)
emit_signal(SceneStringNames::get_singleton()->area_exited, obj);
}
@@ -337,7 +338,7 @@ void Area2D::_clear_monitoring() {
//ERR_CONTINUE(!node);
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
if (!E->get().in_tree)
continue;
@@ -367,7 +368,7 @@ void Area2D::_clear_monitoring() {
//ERR_CONTINUE(!node);
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree);
if (!E->get().in_tree)
continue;
diff --git a/scene/2d/area_2d.h b/scene/2d/area_2d.h
index 66217c7b08..0fda9b867d 100644
--- a/scene/2d/area_2d.h
+++ b/scene/2d/area_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_2D_H
#define AREA_2D_H
diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp
index 33ed4ac881..fc67d28a29 100644
--- a/scene/2d/audio_stream_player_2d.cpp
+++ b/scene/2d/audio_stream_player_2d.cpp
@@ -1,3 +1,32 @@
+/*************************************************************************/
+/* audio_stream_player_2d.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "audio_stream_player_2d.h"
@@ -166,7 +195,7 @@ void AudioStreamPlayer2D::_notification(int p_what) {
float dist = global_pos.distance_to(screen_in_global); //distance to screen center
if (dist > max_distance)
- continue; //cant hear this sound in this viewport
+ continue; //can't hear this sound in this viewport
float multiplier = Math::pow(1.0f - dist / max_distance, attenuation);
multiplier *= Math::db2linear(volume_db); //also apply player volume!
diff --git a/scene/2d/audio_stream_player_2d.h b/scene/2d/audio_stream_player_2d.h
index 93cf26ae03..9ae8e3a518 100644
--- a/scene/2d/audio_stream_player_2d.h
+++ b/scene/2d/audio_stream_player_2d.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* audio_stream_player_2d.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 AUDIO_STREAM_PLAYER_2D_H
#define AUDIO_STREAM_PLAYER_2D_H
diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp
index 1d13db493c..446b367be0 100644
--- a/scene/2d/back_buffer_copy.cpp
+++ b/scene/2d/back_buffer_copy.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "back_buffer_copy.h"
void BackBufferCopy::_update_copy_mode() {
diff --git a/scene/2d/back_buffer_copy.h b/scene/2d/back_buffer_copy.h
index 01438ca7a1..b786c2b828 100644
--- a/scene/2d/back_buffer_copy.h
+++ b/scene/2d/back_buffer_copy.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BACKBUFFERCOPY_H
#define BACKBUFFERCOPY_H
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index 02e21913a5..d172da5bd9 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "camera_2d.h"
#include "core/math/math_funcs.h"
#include "scene/scene_string_names.h"
@@ -90,8 +91,8 @@ Transform2D Camera2D::get_camera_transform() {
if (anchor_mode == ANCHOR_MODE_DRAG_CENTER) {
if (h_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
- camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT]));
- camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_LEFT]));
+ camera_pos.x = MIN(camera_pos.x, (new_camera_pos.x + screen_size.x * 0.5 * drag_margin[MARGIN_LEFT]));
+ camera_pos.x = MAX(camera_pos.x, (new_camera_pos.x - screen_size.x * 0.5 * drag_margin[MARGIN_RIGHT]));
} else {
if (h_ofs < 0) {
@@ -103,8 +104,8 @@ Transform2D Camera2D::get_camera_transform() {
if (v_drag_enabled && !Engine::get_singleton()->is_editor_hint()) {
- camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM]));
- camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_TOP]));
+ camera_pos.y = MIN(camera_pos.y, (new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_TOP]));
+ camera_pos.y = MAX(camera_pos.y, (new_camera_pos.y - screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM]));
} else {
@@ -142,7 +143,7 @@ Transform2D Camera2D::get_camera_transform() {
if (smoothing_enabled && !Engine::get_singleton()->is_editor_hint()) {
- float c = smoothing * get_physics_process_delta_time();
+ float c = smoothing * get_process_delta_time();
smoothed_camera_pos = ((camera_pos - smoothed_camera_pos) * c) + smoothed_camera_pos;
ret_camera_pos = smoothed_camera_pos;
//camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing;
@@ -216,14 +217,14 @@ void Camera2D::_notification(int p_what) {
switch (p_what) {
- case NOTIFICATION_PHYSICS_PROCESS: {
+ case NOTIFICATION_INTERNAL_PROCESS: {
_update_scroll();
} break;
case NOTIFICATION_TRANSFORM_CHANGED: {
- if (!is_physics_processing())
+ if (!is_processing_internal())
_update_scroll();
} break;
@@ -245,7 +246,7 @@ void Camera2D::_notification(int p_what) {
add_to_group(canvas_group_name);
if (Engine::get_singleton()->is_editor_hint()) {
- set_physics_process(false);
+ set_process_internal(false);
}
_update_scroll();
@@ -502,9 +503,9 @@ void Camera2D::set_follow_smoothing(float p_speed) {
smoothing = p_speed;
if (smoothing > 0 && !(is_inside_tree() && Engine::get_singleton()->is_editor_hint()))
- set_physics_process(true);
+ set_process_internal(true);
else
- set_physics_process(false);
+ set_process_internal(false);
}
float Camera2D::get_follow_smoothing() const {
@@ -540,6 +541,7 @@ bool Camera2D::is_v_drag_enabled() const {
void Camera2D::set_v_offset(float p_offset) {
v_ofs = p_offset;
+ _update_scroll();
}
float Camera2D::get_v_offset() const {
@@ -550,6 +552,7 @@ float Camera2D::get_v_offset() const {
void Camera2D::set_h_offset(float p_offset) {
h_ofs = p_offset;
+ _update_scroll();
}
float Camera2D::get_h_offset() const {
@@ -712,6 +715,7 @@ void Camera2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotating"), "set_rotating", "is_rotating");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "current"), "_set_current", "is_current");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "zoom"), "set_zoom", "get_zoom");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", 0), "set_custom_viewport", "get_custom_viewport");
ADD_GROUP("Limit", "limit_");
ADD_PROPERTYI(PropertyInfo(Variant::INT, "limit_left"), "set_limit", "get_limit", MARGIN_LEFT);
@@ -728,6 +732,10 @@ void Camera2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smoothing_enabled"), "set_enable_follow_smoothing", "is_follow_smoothing_enabled");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "smoothing_speed"), "set_follow_smoothing", "get_follow_smoothing");
+ ADD_GROUP("Offset", "offset_");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset_v", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_v_offset", "get_v_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset_h", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_h_offset", "get_h_offset");
+
ADD_GROUP("Drag Margin", "drag_margin_");
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "drag_margin_left", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_drag_margin", "get_drag_margin", MARGIN_LEFT);
ADD_PROPERTYI(PropertyInfo(Variant::REAL, "drag_margin_top", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_drag_margin", "get_drag_margin", MARGIN_TOP);
diff --git a/scene/2d/camera_2d.h b/scene/2d/camera_2d.h
index 743bf6abd6..99571500bf 100644
--- a/scene/2d/camera_2d.h
+++ b/scene/2d/camera_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAMERA_2D_H
#define CAMERA_2D_H
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp
index 4fb22ac04a..87bcdae527 100644
--- a/scene/2d/canvas_item.cpp
+++ b/scene/2d/canvas_item.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "canvas_item.h"
#include "core/method_bind_ext.gen.inc"
#include "message_queue.h"
@@ -100,7 +101,7 @@ void CanvasItemMaterial::_update_shader() {
case LIGHT_MODE_UNSHADED: code += ",unshaded"; break;
case LIGHT_MODE_LIGHT_ONLY: code += ",light_only"; break;
}
- code += ";\n"; //thats it.
+ code += ";\n"; //that's it.
ShaderData shader_data;
shader_data.shader = VS::get_singleton()->shader_create();
@@ -1058,9 +1059,9 @@ void CanvasItem::_bind_methods() {
ADD_GROUP("Material", "");
ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,CanvasItemMaterial"), "set_material", "get_material");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "use_parent_material"), "set_use_parent_material", "get_use_parent_material");
- //exporting these two things doesn't really make much sense i think
- //ADD_PROPERTY( PropertyInfo(Variant::BOOL,"transform/toplevel"), "set_as_toplevel","is_set_as_toplevel") ;
- //ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),"set_transform_notify","is_transform_notify_enabled");
+ //exporting these things doesn't really make much sense i think
+ // ADD_PROPERTY(PropertyInfo(Variant::BOOL, "toplevel", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_as_toplevel", "is_set_as_toplevel");
+ // ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),"set_transform_notify","is_transform_notify_enabled");
ADD_SIGNAL(MethodInfo("draw"));
ADD_SIGNAL(MethodInfo("visibility_changed"));
diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h
index e994ebb5aa..7e5bea0511 100644
--- a/scene/2d/canvas_item.h
+++ b/scene/2d/canvas_item.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CANVAS_ITEM_H
#define CANVAS_ITEM_H
@@ -229,6 +230,7 @@ public:
// Used to resize/move/select the node
virtual void _edit_set_rect(const Rect2 &p_rect){};
virtual Rect2 _edit_get_rect() const { return Rect2(-32, -32, 64, 64); };
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { return true; }
Rect2 _edit_get_item_and_children_rect() const;
virtual bool _edit_use_rect() const { return false; };
diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp
index 925c01f6b3..2f8568ccbf 100644
--- a/scene/2d/canvas_modulate.cpp
+++ b/scene/2d/canvas_modulate.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "canvas_modulate.h"
void CanvasModulate::_notification(int p_what) {
diff --git a/scene/2d/canvas_modulate.h b/scene/2d/canvas_modulate.h
index b9d7b14b0a..888ed95f6b 100644
--- a/scene/2d/canvas_modulate.h
+++ b/scene/2d/canvas_modulate.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CANVASMODULATE_H
#define CANVASMODULATE_H
diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp
index b4f9f3fd9d..8350e7c48a 100644
--- a/scene/2d/collision_object_2d.cpp
+++ b/scene/2d/collision_object_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_object_2d.h"
#include "scene/scene_string_names.h"
#include "servers/physics_2d_server.h"
@@ -327,6 +328,20 @@ void CollisionObject2D::_update_pickable() {
Physics2DServer::get_singleton()->body_set_pickable(rid, pickable);
}
+String CollisionObject2D::get_configuration_warning() const {
+
+ String warning = Node2D::get_configuration_warning();
+
+ if (shapes.empty()) {
+ if (warning == String()) {
+ warning += "\n";
+ }
+ warning += TTR("This node has no children shapes, so it can't interact with the space.\nConsider adding CollisionShape2D or CollisionPolygon2D children nodes to define its shape.");
+ }
+
+ return warning;
+}
+
void CollisionObject2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_rid"), &CollisionObject2D::get_rid);
diff --git a/scene/2d/collision_object_2d.h b/scene/2d/collision_object_2d.h
index 62298b4036..6da63d1a0b 100644
--- a/scene/2d/collision_object_2d.h
+++ b/scene/2d/collision_object_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_OBJECT_2D_H
#define COLLISION_OBJECT_2D_H
@@ -106,6 +107,8 @@ public:
void set_pickable(bool p_enabled);
bool is_pickable() const;
+ String get_configuration_warning() const;
+
_FORCE_INLINE_ RID get_rid() const { return rid; }
CollisionObject2D();
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index eaa650b140..978fb379ac 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_polygon_2d.h"
#include "collision_object_2d.h"
@@ -114,6 +115,15 @@ Vector<Vector<Vector2> > CollisionPolygon2D::_decompose_in_convex() {
return decomp;
}
+void CollisionPolygon2D::_update_in_shape_owner(bool p_xform_only) {
+
+ parent->shape_owner_set_transform(owner_id, get_transform());
+ if (p_xform_only)
+ return;
+ parent->shape_owner_set_disabled(owner_id, disabled);
+ parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
+}
+
void CollisionPolygon2D::_notification(int p_what) {
switch (p_what) {
@@ -123,22 +133,27 @@ void CollisionPolygon2D::_notification(int p_what) {
if (parent) {
owner_id = parent->create_shape_owner(this);
_build_polygon();
- parent->shape_owner_set_transform(owner_id, get_transform());
- parent->shape_owner_set_disabled(owner_id, disabled);
- parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
+ _update_in_shape_owner();
}
/*if (Engine::get_singleton()->is_editor_hint()) {
//display above all else
set_z_as_relative(false);
- set_z(VS::CANVAS_ITEM_Z_MAX - 1);
+ set_z_index(VS::CANVAS_ITEM_Z_MAX - 1);
}*/
} break;
+ case NOTIFICATION_ENTER_TREE: {
+
+ if (parent) {
+ _update_in_shape_owner();
+ }
+
+ } break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {
if (parent) {
- parent->shape_owner_set_transform(owner_id, get_transform());
+ _update_in_shape_owner(true);
}
} break;
@@ -248,6 +263,11 @@ Rect2 CollisionPolygon2D::_edit_get_rect() const {
return aabb;
}
+bool CollisionPolygon2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return Geometry::is_point_in_polygon(p_point, Variant(polygon));
+}
+
String CollisionPolygon2D::get_configuration_warning() const {
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
diff --git a/scene/2d/collision_polygon_2d.h b/scene/2d/collision_polygon_2d.h
index 4c8b55a9ee..4dafe7d1da 100644
--- a/scene/2d/collision_polygon_2d.h
+++ b/scene/2d/collision_polygon_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_POLYGON_2D_H
#define COLLISION_POLYGON_2D_H
@@ -58,6 +59,8 @@ protected:
void _build_polygon();
+ void _update_in_shape_owner(bool p_xform_only = false);
+
protected:
void _notification(int p_what);
static void _bind_methods();
@@ -70,6 +73,7 @@ public:
Vector<Point2> get_polygon() const;
virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
virtual String get_configuration_warning() const;
diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp
index 1cadbe83d0..0eeb6dafe5 100644
--- a/scene/2d/collision_shape_2d.cpp
+++ b/scene/2d/collision_shape_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_shape_2d.h"
#include "collision_object_2d.h"
@@ -44,6 +45,15 @@ void CollisionShape2D::_shape_changed() {
update();
}
+void CollisionShape2D::_update_in_shape_owner(bool p_xform_only) {
+
+ parent->shape_owner_set_transform(owner_id, get_transform());
+ if (p_xform_only)
+ return;
+ parent->shape_owner_set_disabled(owner_id, disabled);
+ parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
+}
+
void CollisionShape2D::_notification(int p_what) {
switch (p_what) {
@@ -56,22 +66,27 @@ void CollisionShape2D::_notification(int p_what) {
if (shape.is_valid()) {
parent->shape_owner_add_shape(owner_id, shape);
}
- parent->shape_owner_set_transform(owner_id, get_transform());
- parent->shape_owner_set_disabled(owner_id, disabled);
- parent->shape_owner_set_one_way_collision(owner_id, one_way_collision);
+ _update_in_shape_owner();
}
/*if (Engine::get_singleton()->is_editor_hint()) {
//display above all else
set_z_as_relative(false);
- set_z(VS::CANVAS_ITEM_Z_MAX - 1);
+ set_z_index(VS::CANVAS_ITEM_Z_MAX - 1);
}*/
} break;
+ case NOTIFICATION_ENTER_TREE: {
+
+ if (parent) {
+ _update_in_shape_owner();
+ }
+
+ } break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {
if (parent) {
- parent->shape_owner_set_transform(owner_id, get_transform());
+ _update_in_shape_owner(true);
}
} break;
@@ -163,6 +178,14 @@ Rect2 CollisionShape2D::_edit_get_rect() const {
return rect;
}
+bool CollisionShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ if (!shape.is_valid())
+ return false;
+
+ return shape->_edit_is_selected_on_click(p_point, p_tolerance);
+}
+
String CollisionShape2D::get_configuration_warning() const {
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
diff --git a/scene/2d/collision_shape_2d.h b/scene/2d/collision_shape_2d.h
index 833d9ae5cb..cdff595828 100644
--- a/scene/2d/collision_shape_2d.h
+++ b/scene/2d/collision_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SHAPE_2D_H
#define COLLISION_SHAPE_2D_H
@@ -46,12 +47,15 @@ class CollisionShape2D : public Node2D {
bool disabled;
bool one_way_collision;
+ void _update_in_shape_owner(bool p_xform_only = false);
+
protected:
void _notification(int p_what);
static void _bind_methods();
public:
virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
void set_shape(const Ref<Shape2D> &p_shape);
Ref<Shape2D> get_shape() const;
diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp
index eec483c29e..7a96a54854 100644
--- a/scene/2d/joints_2d.cpp
+++ b/scene/2d/joints_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "joints_2d.h"
#include "engine.h"
diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h
index 9b6ba22d64..744994f0a7 100644
--- a/scene/2d/joints_2d.h
+++ b/scene/2d/joints_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOINTS_2D_H
#define JOINTS_2D_H
diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp
index a6a871be1d..999d8a2630 100644
--- a/scene/2d/light_2d.cpp
+++ b/scene/2d/light_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "light_2d.h"
#include "engine.h"
diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h
index 9c55f72870..b216ad5e95 100644
--- a/scene/2d/light_2d.h
+++ b/scene/2d/light_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LIGHT_2D_H
#define LIGHT_2D_H
diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp
index b95d4f8f0a..d4481583fb 100644
--- a/scene/2d/light_occluder_2d.cpp
+++ b/scene/2d/light_occluder_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "light_occluder_2d.h"
#include "engine.h"
diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h
index a2e81ef2b4..5e16351a6f 100644
--- a/scene/2d/light_occluder_2d.h
+++ b/scene/2d/light_occluder_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LIGHTOCCLUDER2D_H
#define LIGHTOCCLUDER2D_H
diff --git a/scene/2d/line_2d.cpp b/scene/2d/line_2d.cpp
index f108df140f..f0ab9652b4 100644
--- a/scene/2d/line_2d.cpp
+++ b/scene/2d/line_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "line_2d.h"
#include "line_builder.h"
@@ -48,6 +49,32 @@ Line2D::Line2D() :
_round_precision = 8;
}
+Rect2 Line2D::_edit_get_rect() const {
+
+ if (_points.size() == 0)
+ return Rect2(0, 0, 0, 0);
+ Vector2 d = Vector2(_width, _width);
+ Rect2 aabb = Rect2(_points[0] - d, 2 * d);
+ for (int i = 1; i < _points.size(); i++) {
+ aabb.expand_to(_points[i] - d);
+ aabb.expand_to(_points[i] + d);
+ }
+ return aabb;
+}
+
+bool Line2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ const real_t d = _width / 2 + p_tolerance;
+ PoolVector<Vector2>::Read points = _points.read();
+ for (int i = 0; i < _points.size() - 1; i++) {
+ Vector2 p = Geometry::get_closest_point_to_segment_2d(p_point, &points[i]);
+ if (p.distance_to(p_point) <= d)
+ return true;
+ }
+
+ return false;
+}
+
void Line2D::set_points(const PoolVector<Vector2> &p_points) {
_points = p_points;
update();
diff --git a/scene/2d/line_2d.h b/scene/2d/line_2d.h
index 123728ab39..0eba024555 100644
--- a/scene/2d/line_2d.h
+++ b/scene/2d/line_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LINE2D_H
#define LINE2D_H
@@ -57,6 +58,9 @@ public:
Line2D();
+ virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_points(const PoolVector<Vector2> &p_points);
PoolVector<Vector2> get_points() const;
diff --git a/scene/2d/line_builder.cpp b/scene/2d/line_builder.cpp
index ae2f9371a3..e78d2e9c34 100644
--- a/scene/2d/line_builder.cpp
+++ b/scene/2d/line_builder.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "line_builder.h"
//----------------------------------------------------------------------------
diff --git a/scene/2d/line_builder.h b/scene/2d/line_builder.h
index 0b19cd4674..daa2ed7c24 100644
--- a/scene/2d/line_builder.h
+++ b/scene/2d/line_builder.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LINE_BUILDER_H
#define LINE_BUILDER_H
diff --git a/scene/2d/navigation2d.cpp b/scene/2d/navigation2d.cpp
index 8e910563ca..4737e14111 100644
--- a/scene/2d/navigation2d.cpp
+++ b/scene/2d/navigation2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation2d.h"
#define USE_ENTRY_POINT
diff --git a/scene/2d/navigation2d.h b/scene/2d/navigation2d.h
index 52c4967d3d..02c46d5de1 100644
--- a/scene/2d/navigation2d.h
+++ b/scene/2d/navigation2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_2D_H
#define NAVIGATION_2D_H
diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp
index 9c297db52b..6e27bf1c1d 100644
--- a/scene/2d/navigation_polygon.cpp
+++ b/scene/2d/navigation_polygon.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation_polygon.h"
#include "core_string_names.h"
@@ -35,9 +36,50 @@
#include "thirdparty/misc/triangulator.h"
+Rect2 NavigationPolygon::_edit_get_rect() const {
+
+ if (rect_cache_dirty) {
+ item_rect = Rect2();
+ bool first = true;
+
+ for (int i = 0; i < outlines.size(); i++) {
+ const PoolVector<Vector2> &outline = outlines[i];
+ const int outline_size = outline.size();
+ if (outline_size < 3)
+ continue;
+ PoolVector<Vector2>::Read p = outline.read();
+ for (int j = 0; j < outline_size; j++) {
+ if (first) {
+ item_rect = Rect2(p[j], Vector2(0, 0));
+ first = false;
+ } else {
+ item_rect.expand_to(p[j]);
+ }
+ }
+ }
+
+ rect_cache_dirty = false;
+ }
+ return item_rect;
+}
+
+bool NavigationPolygon::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ for (int i = 0; i < outlines.size(); i++) {
+ const PoolVector<Vector2> &outline = outlines[i];
+ const int outline_size = outline.size();
+ if (outline_size < 3)
+ continue;
+ if (Geometry::is_point_in_polygon(p_point, Variant(outline)))
+ return true;
+ }
+ return false;
+}
+
void NavigationPolygon::set_vertices(const PoolVector<Vector2> &p_vertices) {
vertices = p_vertices;
+ rect_cache_dirty = true;
}
PoolVector<Vector2> NavigationPolygon::get_vertices() const {
@@ -70,6 +112,7 @@ void NavigationPolygon::_set_outlines(const Array &p_array) {
for (int i = 0; i < p_array.size(); i++) {
outlines[i] = p_array[i];
}
+ rect_cache_dirty = true;
}
Array NavigationPolygon::_get_outlines() const {
@@ -93,6 +136,7 @@ void NavigationPolygon::add_polygon(const Vector<int> &p_polygon) {
void NavigationPolygon::add_outline_at_index(const PoolVector<Vector2> &p_outline, int p_index) {
outlines.insert(p_index, p_outline);
+ rect_cache_dirty = true;
}
int NavigationPolygon::get_polygon_count() const {
@@ -112,6 +156,7 @@ void NavigationPolygon::clear_polygons() {
void NavigationPolygon::add_outline(const PoolVector<Vector2> &p_outline) {
outlines.push_back(p_outline);
+ rect_cache_dirty = true;
}
int NavigationPolygon::get_outline_count() const {
@@ -122,12 +167,14 @@ int NavigationPolygon::get_outline_count() const {
void NavigationPolygon::set_outline(int p_idx, const PoolVector<Vector2> &p_outline) {
ERR_FAIL_INDEX(p_idx, outlines.size());
outlines[p_idx] = p_outline;
+ rect_cache_dirty = true;
}
void NavigationPolygon::remove_outline(int p_idx) {
ERR_FAIL_INDEX(p_idx, outlines.size());
outlines.remove(p_idx);
+ rect_cache_dirty = true;
}
PoolVector<Vector2> NavigationPolygon::get_outline(int p_idx) const {
@@ -138,6 +185,7 @@ PoolVector<Vector2> NavigationPolygon::get_outline(int p_idx) const {
void NavigationPolygon::clear_outlines() {
outlines.clear();
+ rect_cache_dirty = true;
}
void NavigationPolygon::make_polygons_from_outlines() {
@@ -264,12 +312,13 @@ void NavigationPolygon::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_outlines", "outlines"), &NavigationPolygon::_set_outlines);
ClassDB::bind_method(D_METHOD("_get_outlines"), &NavigationPolygon::_get_outlines);
- ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_vertices", "get_vertices");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_polygons", "_get_polygons");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "outlines", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_outlines", "_get_outlines");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_vertices", "get_vertices");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_polygons", "_get_polygons");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "outlines", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_outlines", "_get_outlines");
}
-NavigationPolygon::NavigationPolygon() {
+NavigationPolygon::NavigationPolygon() :
+ rect_cache_dirty(true) {
}
void NavigationPolygonInstance::set_enabled(bool p_enabled) {
@@ -311,6 +360,16 @@ bool NavigationPolygonInstance::is_enabled() const {
/////////////////////////////
+Rect2 NavigationPolygonInstance::_edit_get_rect() const {
+
+ return navpoly.is_valid() ? navpoly->_edit_get_rect() : Rect2();
+}
+
+bool NavigationPolygonInstance::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return navpoly.is_valid() ? navpoly->_edit_is_selected_on_click(p_point, p_tolerance) : false;
+}
+
void NavigationPolygonInstance::_notification(int p_what) {
switch (p_what) {
diff --git a/scene/2d/navigation_polygon.h b/scene/2d/navigation_polygon.h
index febdcf2ca6..d7684c2d94 100644
--- a/scene/2d/navigation_polygon.h
+++ b/scene/2d/navigation_polygon.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_POLYGON_H
#define NAVIGATION_POLYGON_H
@@ -43,6 +44,9 @@ class NavigationPolygon : public Resource {
Vector<Polygon> polygons;
Vector<PoolVector<Vector2> > outlines;
+ mutable Rect2 item_rect;
+ mutable bool rect_cache_dirty;
+
protected:
static void _bind_methods();
@@ -53,6 +57,9 @@ protected:
Array _get_outlines() const;
public:
+ Rect2 _edit_get_rect() const;
+ bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_vertices(const PoolVector<Vector2> &p_vertices);
PoolVector<Vector2> get_vertices() const;
@@ -93,6 +100,9 @@ protected:
static void _bind_methods();
public:
+ virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_enabled(bool p_enabled);
bool is_enabled() const;
diff --git a/scene/2d/node_2d.cpp b/scene/2d/node_2d.cpp
index 2a305512af..95a1cbfce3 100644
--- a/scene/2d/node_2d.cpp
+++ b/scene/2d/node_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "node_2d.h"
#include "message_queue.h"
@@ -329,13 +330,13 @@ void Node2D::set_global_transform(const Transform2D &p_transform) {
set_transform(p_transform);
}
-void Node2D::set_z(int p_z) {
+void Node2D::set_z_index(int p_z) {
ERR_FAIL_COND(p_z < VS::CANVAS_ITEM_Z_MIN);
ERR_FAIL_COND(p_z > VS::CANVAS_ITEM_Z_MAX);
- z = p_z;
- VS::get_singleton()->canvas_item_set_z(get_canvas_item(), z);
- _change_notify("z");
+ z_index = p_z;
+ VS::get_singleton()->canvas_item_set_z_index(get_canvas_item(), z_index);
+ _change_notify("z_index");
}
void Node2D::set_z_as_relative(bool p_enabled) {
@@ -351,9 +352,9 @@ bool Node2D::is_z_relative() const {
return z_relative;
}
-int Node2D::get_z() const {
+int Node2D::get_z_index() const {
- return z;
+ return z_index;
}
Transform2D Node2D::get_relative_transform_to_parent(const Node *p_parent) const {
@@ -427,8 +428,8 @@ void Node2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("to_local", "global_point"), &Node2D::to_local);
ClassDB::bind_method(D_METHOD("to_global", "local_point"), &Node2D::to_global);
- ClassDB::bind_method(D_METHOD("set_z", "z"), &Node2D::set_z);
- ClassDB::bind_method(D_METHOD("get_z"), &Node2D::get_z);
+ ClassDB::bind_method(D_METHOD("set_z_index", "z_index"), &Node2D::set_z_index);
+ ClassDB::bind_method(D_METHOD("get_z_index"), &Node2D::get_z_index);
ClassDB::bind_method(D_METHOD("set_z_as_relative", "enable"), &Node2D::set_z_as_relative);
ClassDB::bind_method(D_METHOD("is_z_relative"), &Node2D::is_z_relative);
@@ -448,8 +449,8 @@ void Node2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "global_scale", PROPERTY_HINT_NONE, "", 0), "set_global_scale", "get_global_scale");
ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "global_transform", PROPERTY_HINT_NONE, "", 0), "set_global_transform", "get_global_transform");
- ADD_GROUP("Z", "");
- ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "z", PROPERTY_HINT_RANGE, itos(VS::CANVAS_ITEM_Z_MIN) + "," + itos(VS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z", "get_z");
+ ADD_GROUP("Z Index", "");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "z_index", PROPERTY_HINT_RANGE, itos(VS::CANVAS_ITEM_Z_MIN) + "," + itos(VS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z_index", "get_z_index");
ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "z_as_relative"), "set_z_as_relative", "is_z_relative");
}
@@ -458,6 +459,6 @@ Node2D::Node2D() {
angle = 0;
_scale = Vector2(1, 1);
_xform_dirty = false;
- z = 0;
+ z_index = 0;
z_relative = true;
}
diff --git a/scene/2d/node_2d.h b/scene/2d/node_2d.h
index 7d2e5aa00c..f817b214f8 100644
--- a/scene/2d/node_2d.h
+++ b/scene/2d/node_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NODE2D_H
#define NODE2D_H
@@ -39,7 +40,7 @@ class Node2D : public CanvasItem {
Point2 pos;
float angle;
Size2 _scale;
- int z;
+ int z_index;
bool z_relative;
Transform2D _mat;
@@ -96,8 +97,8 @@ public:
void set_global_rotation_degrees(float p_degrees);
void set_global_scale(const Size2 &p_scale);
- void set_z(int p_z);
- int get_z() const;
+ void set_z_index(int p_z);
+ int get_z_index() const;
void look_at(const Vector2 &p_pos);
float get_angle_to(const Vector2 &p_pos) const;
diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp
index 46d0b7647f..027d64b813 100644
--- a/scene/2d/parallax_background.cpp
+++ b/scene/2d/parallax_background.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "parallax_background.h"
#include "parallax_layer.h"
diff --git a/scene/2d/parallax_background.h b/scene/2d/parallax_background.h
index a7b745f199..31d1c553a2 100644
--- a/scene/2d/parallax_background.h
+++ b/scene/2d/parallax_background.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PARALLAX_BACKGROUND_H
#define PARALLAX_BACKGROUND_H
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp
index 7a9ea1931e..050f98b02b 100644
--- a/scene/2d/parallax_layer.cpp
+++ b/scene/2d/parallax_layer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "parallax_layer.h"
#include "engine.h"
diff --git a/scene/2d/parallax_layer.h b/scene/2d/parallax_layer.h
index 937451c3e2..b2b98b0ef6 100644
--- a/scene/2d/parallax_layer.h
+++ b/scene/2d/parallax_layer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PARALLAX_LAYER_H
#define PARALLAX_LAYER_H
diff --git a/scene/2d/particles_2d.cpp b/scene/2d/particles_2d.cpp
index a760b8e599..7eaa5bb88c 100644
--- a/scene/2d/particles_2d.cpp
+++ b/scene/2d/particles_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "particles_2d.h"
#include "engine.h"
diff --git a/scene/2d/particles_2d.h b/scene/2d/particles_2d.h
index e7a510d8bc..f367095581 100644
--- a/scene/2d/particles_2d.h
+++ b/scene/2d/particles_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PARTICLES_FRAME_H
#define PARTICLES_FRAME_H
diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp
index 06bd55858c..052a0ac026 100644
--- a/scene/2d/path_2d.cpp
+++ b/scene/2d/path_2d.cpp
@@ -27,11 +27,57 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_2d.h"
#include "engine.h"
#include "scene/scene_string_names.h"
+#ifdef TOOLS_ENABLED
+#include "editor/editor_scale.h"
+#endif
+
+Rect2 Path2D::_edit_get_rect() const {
+
+ if (!curve.is_valid() || curve->get_point_count() == 0)
+ return Rect2(0, 0, 0, 0);
+
+ Rect2 aabb = Rect2(curve->get_point_position(0), Vector2(0, 0));
+
+ for (int i = 0; i < curve->get_point_count(); i++) {
+
+ for (int j = 0; j <= 8; j++) {
+
+ real_t frac = j / 8.0;
+ Vector2 p = curve->interpolate(i, frac);
+ aabb.expand_to(p);
+ }
+ }
+
+ return aabb;
+}
+
+bool Path2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ for (int i = 0; i < curve->get_point_count(); i++) {
+ Vector2 s[2];
+ s[0] = curve->get_point_position(i);
+
+ for (int j = 1; j <= 8; j++) {
+ real_t frac = j / 8.0;
+ s[1] = curve->interpolate(i, frac);
+
+ Vector2 p = Geometry::get_closest_point_to_segment_2d(p_point, s);
+ if (p.distance_to(p_point) <= p_tolerance)
+ return true;
+
+ s[0] = s[1];
+ }
+ }
+
+ return false;
+}
+
void Path2D::_notification(int p_what) {
if (p_what == NOTIFICATION_DRAW && curve.is_valid()) {
@@ -41,6 +87,13 @@ void Path2D::_notification(int p_what) {
return;
}
+#if TOOLS_ENABLED
+ const float line_width = 2 * EDSCALE;
+#else
+ const float line_width = 2;
+#endif
+ const Color color = Color(0.5, 0.6, 1.0, 0.7);
+
for (int i = 0; i < curve->get_point_count(); i++) {
Vector2 prev_p = curve->get_point_position(i);
@@ -49,7 +102,7 @@ void Path2D::_notification(int p_what) {
real_t frac = j / 8.0;
Vector2 p = curve->interpolate(i, frac);
- draw_line(prev_p, p, Color(0.5, 0.6, 1.0, 0.7), 2);
+ draw_line(prev_p, p, color, line_width);
prev_p = p;
}
}
@@ -191,66 +244,16 @@ bool PathFollow2D::get_cubic_interpolation() const {
return cubic;
}
-bool PathFollow2D::_set(const StringName &p_name, const Variant &p_value) {
-
- if (p_name == SceneStringNames::get_singleton()->offset) {
- set_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->unit_offset) {
- set_unit_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->rotate) {
- set_rotate(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->v_offset) {
- set_v_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->h_offset) {
- set_h_offset(p_value);
- } else if (String(p_name) == "cubic_interp") {
- set_cubic_interpolation(p_value);
- } else if (String(p_name) == "loop") {
- set_loop(p_value);
- } else if (String(p_name) == "lookahead") {
- set_lookahead(p_value);
- } else
- return false;
-
- return true;
-}
+void PathFollow2D::_validate_property(PropertyInfo &property) const {
-bool PathFollow2D::_get(const StringName &p_name, Variant &r_ret) const {
-
- if (p_name == SceneStringNames::get_singleton()->offset) {
- r_ret = get_offset();
- } else if (p_name == SceneStringNames::get_singleton()->unit_offset) {
- r_ret = get_unit_offset();
- } else if (p_name == SceneStringNames::get_singleton()->rotate) {
- r_ret = is_rotating();
- } else if (p_name == SceneStringNames::get_singleton()->v_offset) {
- r_ret = get_v_offset();
- } else if (p_name == SceneStringNames::get_singleton()->h_offset) {
- r_ret = get_h_offset();
- } else if (String(p_name) == "cubic_interp") {
- r_ret = cubic;
- } else if (String(p_name) == "loop") {
- r_ret = loop;
- } else if (String(p_name) == "lookahead") {
- r_ret = lookahead;
- } else
- return false;
-
- return true;
-}
-void PathFollow2D::_get_property_list(List<PropertyInfo> *p_list) const {
-
- float max = 10000;
- if (path && path->get_curve().is_valid())
- max = path->get_curve()->get_baked_length();
- p_list->push_back(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0," + rtos(max) + ",0.01"));
- p_list->push_back(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR));
- p_list->push_back(PropertyInfo(Variant::REAL, "h_offset"));
- p_list->push_back(PropertyInfo(Variant::REAL, "v_offset"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "rotate"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "cubic_interp"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "loop"));
- p_list->push_back(PropertyInfo(Variant::REAL, "lookahead", PROPERTY_HINT_RANGE, "0.001,1024.0,0.001"));
+ if (property.name == "offset") {
+
+ float max = 10000;
+ if (path && path->get_curve().is_valid())
+ max = path->get_curve()->get_baked_length();
+
+ property.hint_string = "0," + rtos(max) + ",0.01";
+ }
}
String PathFollow2D::get_configuration_warning() const {
@@ -287,6 +290,18 @@ void PathFollow2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow2D::set_loop);
ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow2D::has_loop);
+
+ ClassDB::bind_method(D_METHOD("set_lookahead", "lookahead"), &PathFollow2D::set_lookahead);
+ ClassDB::bind_method(D_METHOD("get_lookahead"), &PathFollow2D::get_lookahead);
+
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rotate"), "set_rotate", "is_rotating");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cubic_interp"), "set_cubic_interpolation", "get_cubic_interpolation");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "lookahead", PROPERTY_HINT_RANGE, "0.001,1024.0,0.001"), "set_lookahead", "get_lookahead");
}
void PathFollow2D::set_offset(float p_offset) {
diff --git a/scene/2d/path_2d.h b/scene/2d/path_2d.h
index ebfa77d605..735d289d74 100644
--- a/scene/2d/path_2d.h
+++ b/scene/2d/path_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_2D_H
#define PATH_2D_H
@@ -46,6 +47,9 @@ protected:
static void _bind_methods();
public:
+ virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_curve(const Ref<Curve2D> &p_curve);
Ref<Curve2D> get_curve() const;
@@ -70,9 +74,7 @@ private:
void _update_transform();
protected:
- 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;
+ virtual void _validate_property(PropertyInfo &property) const;
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/2d/path_texture.cpp b/scene/2d/path_texture.cpp
index 59e01f7cb6..d36a9fb65a 100644
--- a/scene/2d/path_texture.cpp
+++ b/scene/2d/path_texture.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path_texture.h"
void PathTexture::set_begin_texture(const Ref<Texture> &p_texture) {
diff --git a/scene/2d/path_texture.h b/scene/2d/path_texture.h
index cfe00f3880..7a347c0653 100644
--- a/scene/2d/path_texture.h
+++ b/scene/2d/path_texture.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_TEXTURE_H
#define PATH_TEXTURE_H
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index ec6ff182db..cc99ce5f49 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_body_2d.h"
#include "engine.h"
@@ -243,6 +244,7 @@ void RigidBody2D::_body_enter_tree(ObjectID p_id) {
Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
ERR_FAIL_COND(E->get().in_scene);
@@ -265,6 +267,7 @@ void RigidBody2D::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
ERR_FAIL_COND(!E->get().in_scene);
@@ -290,6 +293,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap
Object *obj = ObjectDB::get_instance(objid);
Node *node = Object::cast_to<Node>(obj);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid);
/*if (obj) {
@@ -309,7 +313,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap
E->get().in_scene = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
if (E->get().in_scene) {
emit_signal(SceneStringNames::get_singleton()->body_entered, node);
}
@@ -338,7 +342,7 @@ void RigidBody2D::_body_inout(int p_status, ObjectID p_instance, int p_body_shap
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
if (in_scene)
emit_signal(SceneStringNames::get_singleton()->body_exited, obj);
}
@@ -762,6 +766,14 @@ void RigidBody2D::set_contact_monitor(bool p_enabled) {
for (Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.front(); E; E = E->next()) {
//clean up mess
+ Object *obj = ObjectDB::get_instance(E->key());
+ Node *node = Object::cast_to<Node>(obj);
+
+ if (node) {
+
+ node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ }
}
memdelete(contact_monitor);
@@ -806,7 +818,7 @@ String RigidBody2D::get_configuration_warning() const {
if (warning != String()) {
warning += "\n";
}
- warning += TTR("Size changes to RigidBody2D (in character or rigid modes) will be overriden by the physics engine when running.\nChange the size in children collision shapes instead.");
+ warning += TTR("Size changes to RigidBody2D (in character or rigid modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead.");
}
return warning;
@@ -888,6 +900,7 @@ void RigidBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Rigid,Static,Character,Kinematic"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01"), "set_mass", "get_mass");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "inertia", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", 0), "set_inertia", "get_inertia");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "weight", PROPERTY_HINT_EXP_RANGE, "0.01,65535,0.01", PROPERTY_USAGE_EDITOR), "set_weight", "get_weight");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_friction", "get_friction");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bounce", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_bounce", "get_bounce");
@@ -904,6 +917,9 @@ void RigidBody2D::_bind_methods() {
ADD_GROUP("Angular", "angular_");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_damp", PROPERTY_HINT_RANGE, "-1,128,0.01"), "set_angular_damp", "get_angular_damp");
+ ADD_GROUP("Applied Forces", "applied_");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "applied_force"), "set_applied_force", "get_applied_force");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "applied_torque"), "set_applied_torque", "get_applied_torque");
ADD_SIGNAL(MethodInfo("body_shape_entered", PropertyInfo(Variant::INT, "body_id"), PropertyInfo(Variant::OBJECT, "body"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
ADD_SIGNAL(MethodInfo("body_shape_exited", PropertyInfo(Variant::INT, "body_id"), PropertyInfo(Variant::OBJECT, "body"), PropertyInfo(Variant::INT, "body_shape"), PropertyInfo(Variant::INT, "local_shape")));
diff --git a/scene/2d/physics_body_2d.h b/scene/2d/physics_body_2d.h
index a39eb09514..c755f30f2b 100644
--- a/scene/2d/physics_body_2d.h
+++ b/scene/2d/physics_body_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_BODY_2D_H
#define PHYSICS_BODY_2D_H
diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp
index a2f49d938b..f6cb796b10 100644
--- a/scene/2d/polygon_2d.cpp
+++ b/scene/2d/polygon_2d.cpp
@@ -27,7 +27,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "polygon_2d.h"
+#include "core/math/geometry.h"
Rect2 Polygon2D::_edit_get_rect() const {
@@ -42,13 +44,17 @@ Rect2 Polygon2D::_edit_get_rect() const {
else
item_rect.expand_to(pos);
}
- item_rect = item_rect.grow(20);
rect_cache_dirty = false;
}
return item_rect;
}
+bool Polygon2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return Geometry::is_point_in_polygon(p_point, Variant(polygon));
+}
+
void Polygon2D::_edit_set_pivot(const Point2 &p_pivot) {
set_offset(p_pivot);
@@ -377,7 +383,8 @@ void Polygon2D::_bind_methods() {
ADD_GROUP("Texture", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_offset"), "set_texture_offset", "get_texture_offset");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_scale"), "set_texture_scale", "get_texture_scale");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation", PROPERTY_HINT_RANGE, "-1440,1440,0.1"), "set_texture_rotation_degrees", "get_texture_rotation_degrees");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation_degrees", PROPERTY_HINT_RANGE, "-1440,1440,0.1"), "set_texture_rotation_degrees", "get_texture_rotation_degrees");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "texture_rotation", PROPERTY_HINT_NONE, "", 0), "set_texture_rotation", "get_texture_rotation");
ADD_GROUP("Invert", "invert_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert_enable"), "set_invert", "get_invert");
diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h
index a23e223e6e..f62c78c55b 100644
--- a/scene/2d/polygon_2d.h
+++ b/scene/2d/polygon_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POLYGON_2D_H
#define POLYGON_2D_H
@@ -104,6 +105,7 @@ public:
virtual bool _edit_use_pivot() const;
virtual Rect2 _edit_get_rect() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
Polygon2D();
};
diff --git a/scene/2d/position_2d.cpp b/scene/2d/position_2d.cpp
index bff7554ec3..37f6aaa2d6 100644
--- a/scene/2d/position_2d.cpp
+++ b/scene/2d/position_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "position_2d.h"
#include "engine.h"
diff --git a/scene/2d/position_2d.h b/scene/2d/position_2d.h
index e5862974fa..6f6a34c452 100644
--- a/scene/2d/position_2d.h
+++ b/scene/2d/position_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POSITION_2D_H
#define POSITION_2D_H
diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp
index d7c152b108..5a563143ad 100644
--- a/scene/2d/ray_cast_2d.cpp
+++ b/scene/2d/ray_cast_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ray_cast_2d.h"
#include "collision_object_2d.h"
diff --git a/scene/2d/ray_cast_2d.h b/scene/2d/ray_cast_2d.h
index a2e1d689fc..0850cdc7cc 100644
--- a/scene/2d/ray_cast_2d.h
+++ b/scene/2d/ray_cast_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RAY_CAST_2D_H
#define RAY_CAST_2D_H
diff --git a/scene/2d/remote_transform_2d.cpp b/scene/2d/remote_transform_2d.cpp
index c283d69f86..da764e032b 100644
--- a/scene/2d/remote_transform_2d.cpp
+++ b/scene/2d/remote_transform_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "remote_transform_2d.h"
#include "scene/scene_string_names.h"
diff --git a/scene/2d/remote_transform_2d.h b/scene/2d/remote_transform_2d.h
index cfc38ebabb..3f395f820e 100644
--- a/scene/2d/remote_transform_2d.h
+++ b/scene/2d/remote_transform_2d.h
@@ -27,6 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
+#ifndef REMOTE_TRANSFORM_2D_H
+#define REMOTE_TRANSFORM_2D_H
+
#include "scene/2d/node_2d.h"
class RemoteTransform2D : public Node2D {
@@ -69,3 +73,5 @@ public:
RemoteTransform2D();
};
+
+#endif // REMOTE_TRANSFORM_2D_H
diff --git a/scene/2d/screen_button.cpp b/scene/2d/screen_button.cpp
index cf059ec55e..b6cb734cee 100644
--- a/scene/2d/screen_button.cpp
+++ b/scene/2d/screen_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "screen_button.h"
#include "input_map.h"
#include "os/input.h"
diff --git a/scene/2d/screen_button.h b/scene/2d/screen_button.h
index ad558bb9ec..e6f2a2f3cd 100644
--- a/scene/2d/screen_button.h
+++ b/scene/2d/screen_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCREEN_BUTTON_H
#define SCREEN_BUTTON_H
diff --git a/scene/2d/sprite.cpp b/scene/2d/sprite.cpp
index c4a7e5aebd..9c344b9581 100644
--- a/scene/2d/sprite.cpp
+++ b/scene/2d/sprite.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sprite.h"
#include "core/core_string_names.h"
#include "os/os.h"
@@ -47,6 +48,40 @@ bool Sprite::_edit_use_pivot() const {
return true;
}
+void Sprite::_get_rects(Rect2 &r_src_rect, Rect2 &r_dst_rect, bool &r_filter_clip) const {
+
+ Size2 s;
+ r_filter_clip = false;
+
+ if (region) {
+
+ s = region_rect.size;
+ r_src_rect = region_rect;
+ r_filter_clip = region_filter_clip;
+ } else {
+ s = Size2(texture->get_size());
+ s = s / Size2(hframes, vframes);
+
+ r_src_rect.size = s;
+ r_src_rect.position.x += float(frame % hframes) * s.x;
+ r_src_rect.position.y += float(frame / hframes) * s.y;
+ }
+
+ Point2 ofs = offset;
+ if (centered)
+ ofs -= s / 2;
+ if (Engine::get_singleton()->get_use_pixel_snap()) {
+ ofs = ofs.floor();
+ }
+
+ r_dst_rect = Rect2(ofs, s);
+
+ if (hflip)
+ r_dst_rect.size.x = -r_dst_rect.size.x;
+ if (vflip)
+ r_dst_rect.size.y = -r_dst_rect.size.y;
+}
+
void Sprite::_notification(int p_what) {
switch (p_what) {
@@ -63,38 +98,9 @@ void Sprite::_notification(int p_what) {
break;
*/
- Size2 s;
- Rect2 src_rect;
- bool filter_clip = false;
-
- if (region) {
-
- s = region_rect.size;
- src_rect = region_rect;
- filter_clip = region_filter_clip;
- } else {
- s = Size2(texture->get_size());
- s = s / Size2(hframes, vframes);
-
- src_rect.size = s;
- src_rect.position.x += float(frame % hframes) * s.x;
- src_rect.position.y += float(frame / hframes) * s.y;
- }
-
- Point2 ofs = offset;
- if (centered)
- ofs -= s / 2;
- if (Engine::get_singleton()->get_use_pixel_snap()) {
- ofs = ofs.floor();
- }
-
- Rect2 dst_rect(ofs, s);
-
- if (hflip)
- dst_rect.size.x = -dst_rect.size.x;
- if (vflip)
- dst_rect.size.y = -dst_rect.size.y;
-
+ Rect2 src_rect, dst_rect;
+ bool filter_clip;
+ _get_rects(src_rect, dst_rect, filter_clip);
texture->draw_rect_region(ci, dst_rect, src_rect, Color(1, 1, 1), false, normal_map, filter_clip);
} break;
@@ -257,6 +263,30 @@ int Sprite::get_hframes() const {
return hframes;
}
+bool Sprite::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ if (texture.is_null())
+ return false;
+
+ Rect2 src_rect, dst_rect;
+ bool filter_clip;
+ _get_rects(src_rect, dst_rect, filter_clip);
+
+ if (!dst_rect.has_point(p_point))
+ return false;
+
+ Vector2 q = ((p_point - dst_rect.position) / dst_rect.size) * src_rect.size + src_rect.position;
+
+ Ref<Image> image = texture->get_data();
+ ERR_FAIL_COND_V(image.is_null(), false);
+
+ image->lock();
+ const Color c = image->get_pixel((int)q.x, (int)q.y);
+ image->unlock();
+
+ return c.a > 0.01;
+}
+
Rect2 Sprite::_edit_get_rect() const {
if (texture.is_null())
diff --git a/scene/2d/sprite.h b/scene/2d/sprite.h
index c437f6d404..261165bbf9 100644
--- a/scene/2d/sprite.h
+++ b/scene/2d/sprite.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPRITE_H
#define SPRITE_H
@@ -54,6 +55,8 @@ class Sprite : public Node2D {
int vframes;
int hframes;
+ void _get_rects(Rect2 &r_src_rect, Rect2 &r_dst_rect, bool &r_filter_clip) const;
+
protected:
void _notification(int p_what);
@@ -65,6 +68,7 @@ public:
virtual void _edit_set_pivot(const Point2 &p_pivot);
virtual Point2 _edit_get_pivot() const;
virtual bool _edit_use_pivot() const;
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
virtual Rect2 _edit_get_rect() const;
void set_texture(const Ref<Texture> &p_texture);
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index 73fce4be75..361d765c97 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tile_map.h"
#include "io/marshalls.h"
@@ -336,7 +337,7 @@ void TileMap::_update_dirty_quadrants() {
debug_canvas_item = vs->canvas_item_create();
vs->canvas_item_set_parent(debug_canvas_item, canvas_item);
vs->canvas_item_set_z_as_relative_to_parent(debug_canvas_item, false);
- vs->canvas_item_set_z(debug_canvas_item, VS::CANVAS_ITEM_Z_MAX - 1);
+ vs->canvas_item_set_z_index(debug_canvas_item, VS::CANVAS_ITEM_Z_MAX - 1);
q.canvas_items.push_back(debug_canvas_item);
prev_debug_canvas_item = debug_canvas_item;
}
@@ -998,8 +999,8 @@ void TileMap::_set_tile_data(const PoolVector<int> &p_data) {
bool flip_v = v & (1 << 30);
bool transpose = v & (1 << 31);
v &= (1 << 29) - 1;
- int16_t coord_x;
- int16_t coord_y;
+ int16_t coord_x = 0;
+ int16_t coord_y = 0;
if (format == FORMAT_2) {
coord_x = decode_uint16(&local[8]);
coord_y = decode_uint16(&local[10]);
@@ -1311,10 +1312,10 @@ bool TileMap::_get(const StringName &p_name, Variant &r_ret) const {
void TileMap::_get_property_list(List<PropertyInfo> *p_list) const {
- PropertyInfo p(Variant::INT, "format", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR);
+ 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);
+ p = PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL);
p_list->push_back(p);
}
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index 21258f27c9..973e527b42 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TILE_MAP_H
#define TILE_MAP_H
diff --git a/scene/2d/visibility_notifier_2d.cpp b/scene/2d/visibility_notifier_2d.cpp
index cc6ee1a426..4b38534d97 100644
--- a/scene/2d/visibility_notifier_2d.cpp
+++ b/scene/2d/visibility_notifier_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visibility_notifier_2d.h"
#include "engine.h"
@@ -218,7 +219,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
if (add) {
- p_node->connect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
+ p_node->connect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
nodes[p_node] = meta;
_change_node_state(p_node, false);
}
@@ -261,7 +262,7 @@ void VisibilityEnabler2D::_notification(int p_what) {
if (!visible)
_change_node_state(E->key(), true);
- E->key()->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed");
+ E->key()->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed");
}
nodes.clear();
diff --git a/scene/2d/visibility_notifier_2d.h b/scene/2d/visibility_notifier_2d.h
index b2fbb39dfc..93a35a709e 100644
--- a/scene/2d/visibility_notifier_2d.h
+++ b/scene/2d/visibility_notifier_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISIBILITY_NOTIFIER_2D_H
#define VISIBILITY_NOTIFIER_2D_H
diff --git a/scene/2d/y_sort.cpp b/scene/2d/y_sort.cpp
index 85c068b212..d3997c13c3 100644
--- a/scene/2d/y_sort.cpp
+++ b/scene/2d/y_sort.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "y_sort.h"
void YSort::set_sort_enabled(bool p_enabled) {
diff --git a/scene/2d/y_sort.h b/scene/2d/y_sort.h
index 63796f8719..5ff12aa25a 100644
--- a/scene/2d/y_sort.h
+++ b/scene/2d/y_sort.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef Y_SORT_H
#define Y_SORT_H
diff --git a/scene/3d/area.cpp b/scene/3d/area.cpp
index ad8bf7141a..21f471039f 100644
--- a/scene/3d/area.cpp
+++ b/scene/3d/area.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area.h"
#include "scene/scene_string_names.h"
#include "servers/audio_server.h"
@@ -168,7 +169,7 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo
E->get().in_tree = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->body_entered, node);
}
@@ -195,7 +196,7 @@ void Area::_body_inout(int p_status, const RID &p_body, int p_instance, int p_bo
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
if (E->get().in_tree)
emit_signal(SceneStringNames::get_singleton()->body_exited, obj);
}
@@ -245,7 +246,7 @@ void Area::_clear_monitoring() {
emit_signal(SceneStringNames::get_singleton()->body_exited, obj);
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
}
}
@@ -275,7 +276,7 @@ void Area::_clear_monitoring() {
emit_signal(SceneStringNames::get_singleton()->area_exited, obj);
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree);
}
}
}
@@ -365,7 +366,7 @@ void Area::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ar
E->get().in_tree = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree, make_binds(objid));
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->area_entered, node);
}
@@ -392,7 +393,7 @@ void Area::_area_inout(int p_status, const RID &p_area, int p_instance, int p_ar
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_area_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_area_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_area_exit_tree);
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->area_exited, obj);
}
diff --git a/scene/3d/area.h b/scene/3d/area.h
index fa01a783f9..e49b7e493b 100644
--- a/scene/3d/area.h
+++ b/scene/3d/area.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_H
#define AREA_H
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index 006c3d587c..d448ef024d 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* audio_stream_player_3d.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "audio_stream_player_3d.h"
#include "engine.h"
#include "scene/3d/area.h"
@@ -290,7 +320,7 @@ void AudioStreamPlayer3D::_notification(int p_what) {
total_max = MAX(total_max, cam_area_pos.length());
}
if (total_max > max_distance) {
- continue; //cant hear this sound in this camera
+ continue; //can't hear this sound in this camera
}
}
diff --git a/scene/3d/audio_stream_player_3d.h b/scene/3d/audio_stream_player_3d.h
index 76d645dcbc..1fcb83cf21 100644
--- a/scene/3d/audio_stream_player_3d.h
+++ b/scene/3d/audio_stream_player_3d.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* audio_stream_player_3d.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 AUDIO_STREAM_PLAYER_3D_H
#define AUDIO_STREAM_PLAYER_3D_H
diff --git a/scene/3d/baked_lightmap.cpp b/scene/3d/baked_lightmap.cpp
index 8c282a31b8..fa4e6492a1 100644
--- a/scene/3d/baked_lightmap.cpp
+++ b/scene/3d/baked_lightmap.cpp
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* baked_lightmap.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "baked_lightmap.h"
#include "io/resource_saver.h"
#include "os/dir_access.h"
@@ -140,11 +170,11 @@ void BakedLightmapData::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_users"), &BakedLightmapData::clear_users);
ADD_PROPERTY(PropertyInfo(Variant::AABB, "bounds", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_bounds", "get_bounds");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "octree", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_octree", "get_octree");
ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "cell_space_transform", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_cell_space_transform", "get_cell_space_transform");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_subdiv", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_cell_subdiv", "get_cell_subdiv");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "energy", PROPERTY_HINT_RANGE, "0,16,0.01"), "set_energy", "get_energy");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "user_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_user_data", "_get_user_data");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "octree", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_octree", "get_octree");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "user_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_user_data", "_get_user_data");
}
BakedLightmapData::BakedLightmapData() {
@@ -754,7 +784,7 @@ void BakedLightmap::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "capture_cell_size", PROPERTY_HINT_RANGE, "0.01,64,0.01"), "set_capture_cell_size", "get_capture_cell_size");
ADD_GROUP("Data", "");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "image_path", PROPERTY_HINT_DIR), "set_image_path", "get_image_path");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_data", PROPERTY_HINT_RESOURCE_TYPE, "BakedIndirectLightData"), "set_light_data", "get_light_data");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "light_data", PROPERTY_HINT_RESOURCE_TYPE, "BakedLightmapData"), "set_light_data", "get_light_data");
BIND_ENUM_CONSTANT(BAKE_QUALITY_LOW);
BIND_ENUM_CONSTANT(BAKE_QUALITY_MEDIUM);
diff --git a/scene/3d/baked_lightmap.h b/scene/3d/baked_lightmap.h
index 9b53e41d73..60b62f74eb 100644
--- a/scene/3d/baked_lightmap.h
+++ b/scene/3d/baked_lightmap.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* baked_lightmap.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 BAKED_INDIRECT_LIGHT_H
#define BAKED_INDIRECT_LIGHT_H
diff --git a/scene/3d/bone_attachment.cpp b/scene/3d/bone_attachment.cpp
index 9e3b15461b..a875b65c22 100644
--- a/scene/3d/bone_attachment.cpp
+++ b/scene/3d/bone_attachment.cpp
@@ -27,45 +27,30 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "bone_attachment.h"
-
-bool BoneAttachment::_get(const StringName &p_name, Variant &r_ret) const {
- if (String(p_name) == "bone_name") {
-
- r_ret = get_bone_name();
- return true;
- }
+#include "bone_attachment.h"
- return false;
-}
-bool BoneAttachment::_set(const StringName &p_name, const Variant &p_value) {
+void BoneAttachment::_validate_property(PropertyInfo &property) const {
- if (String(p_name) == "bone_name") {
+ if (property.name == "bone_name") {
+ Skeleton *parent = Object::cast_to<Skeleton>(get_parent());
- set_bone_name(p_value);
- return true;
- }
+ if (parent) {
- return false;
-}
-void BoneAttachment::_get_property_list(List<PropertyInfo> *p_list) const {
-
- Skeleton *parent = Object::cast_to<Skeleton>(get_parent());
+ String names;
+ for (int i = 0; i < parent->get_bone_count(); i++) {
+ if (i > 0)
+ names += ",";
+ names += parent->get_bone_name(i);
+ }
- if (parent) {
+ property.hint = PROPERTY_HINT_ENUM;
+ property.hint_string = names;
+ } else {
- String names;
- for (int i = 0; i < parent->get_bone_count(); i++) {
- if (i > 0)
- names += ",";
- names += parent->get_bone_name(i);
+ property.hint = PROPERTY_HINT_NONE;
+ property.hint_string = "";
}
-
- p_list->push_back(PropertyInfo(Variant::STRING, "bone_name", PROPERTY_HINT_ENUM, names));
- } else {
-
- p_list->push_back(PropertyInfo(Variant::STRING, "bone_name"));
}
}
@@ -137,4 +122,6 @@ BoneAttachment::BoneAttachment() {
void BoneAttachment::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_bone_name", "bone_name"), &BoneAttachment::set_bone_name);
ClassDB::bind_method(D_METHOD("get_bone_name"), &BoneAttachment::get_bone_name);
+
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "bone_name"), "set_bone_name", "get_bone_name");
}
diff --git a/scene/3d/bone_attachment.h b/scene/3d/bone_attachment.h
index 57bc71a51f..81a225015e 100644
--- a/scene/3d/bone_attachment.h
+++ b/scene/3d/bone_attachment.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BONE_ATTACHMENT_H
#define BONE_ATTACHMENT_H
@@ -43,9 +44,7 @@ class BoneAttachment : public Spatial {
void _check_unbind();
protected:
- bool _get(const StringName &p_name, Variant &r_ret) const;
- bool _set(const StringName &p_name, const Variant &p_value);
- void _get_property_list(List<PropertyInfo> *p_list) const;
+ virtual void _validate_property(PropertyInfo &property) const;
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index 840783c399..6998b34cfd 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "camera.h"
#include "camera_matrix.h"
diff --git a/scene/3d/camera.h b/scene/3d/camera.h
index c24286ecc5..3fd3303a25 100644
--- a/scene/3d/camera.h
+++ b/scene/3d/camera.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAMERA_H
#define CAMERA_H
diff --git a/scene/3d/collision_object.cpp b/scene/3d/collision_object.cpp
index e591b17aa6..07235b3da4 100644
--- a/scene/3d/collision_object.cpp
+++ b/scene/3d/collision_object.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_object.h"
#include "scene/scene_string_names.h"
@@ -364,6 +365,20 @@ bool CollisionObject::get_capture_input_on_drag() const {
return capture_input_on_drag;
}
+String CollisionObject::get_configuration_warning() const {
+
+ String warning = Spatial::get_configuration_warning();
+
+ if (shapes.empty()) {
+ if (warning == String()) {
+ warning += "\n";
+ }
+ warning += TTR("This node has no children shapes, so it can't interact with the space.\nConsider adding CollisionShape or CollisionPolygon children nodes to define its shape.");
+ }
+
+ return warning;
+}
+
CollisionObject::CollisionObject() {
capture_input_on_drag = false;
diff --git a/scene/3d/collision_object.h b/scene/3d/collision_object.h
index c1fed559c5..f31d65e411 100644
--- a/scene/3d/collision_object.h
+++ b/scene/3d/collision_object.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_OBJECT_H
#define COLLISION_OBJECT_H
@@ -108,6 +109,8 @@ public:
_FORCE_INLINE_ RID get_rid() const { return rid; }
+ virtual String get_configuration_warning() const;
+
CollisionObject();
~CollisionObject();
};
diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp
index 7d894a0544..3a77360bc2 100644
--- a/scene/3d/collision_polygon.cpp
+++ b/scene/3d/collision_polygon.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_polygon.h"
#include "collision_object.h"
@@ -72,6 +73,14 @@ void CollisionPolygon::_build_polygon() {
}
}
+void CollisionPolygon::_update_in_shape_owner(bool p_xform_only) {
+
+ parent->shape_owner_set_transform(owner_id, get_transform());
+ if (p_xform_only)
+ return;
+ parent->shape_owner_set_disabled(owner_id, disabled);
+}
+
void CollisionPolygon::_notification(int p_what) {
switch (p_what) {
@@ -81,14 +90,20 @@ void CollisionPolygon::_notification(int p_what) {
if (parent) {
owner_id = parent->create_shape_owner(this);
_build_polygon();
- parent->shape_owner_set_transform(owner_id, get_transform());
- parent->shape_owner_set_disabled(owner_id, disabled);
+ _update_in_shape_owner();
}
} break;
+ case NOTIFICATION_ENTER_TREE: {
+
+ if (parent) {
+ _update_in_shape_owner();
+ }
+
+ } break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {
if (parent) {
- parent->shape_owner_set_transform(owner_id, get_transform());
+ _update_in_shape_owner(true);
}
} break;
diff --git a/scene/3d/collision_polygon.h b/scene/3d/collision_polygon.h
index b979057da1..971c67f1ad 100644
--- a/scene/3d/collision_polygon.h
+++ b/scene/3d/collision_polygon.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_POLYGON_H
#define COLLISION_POLYGON_H
@@ -50,6 +51,8 @@ protected:
void _build_polygon();
+ void _update_in_shape_owner(bool p_xform_only = false);
+
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/3d/collision_shape.cpp b/scene/3d/collision_shape.cpp
index b5f3a09c09..943f4158f7 100644
--- a/scene/3d/collision_shape.cpp
+++ b/scene/3d/collision_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_shape.h"
#include "scene/resources/box_shape.h"
#include "scene/resources/capsule_shape.h"
@@ -63,6 +64,14 @@ void CollisionShape::make_convex_from_brothers() {
}
}
+void CollisionShape::_update_in_shape_owner(bool p_xform_only) {
+
+ parent->shape_owner_set_transform(owner_id, get_transform());
+ if (p_xform_only)
+ return;
+ parent->shape_owner_set_disabled(owner_id, disabled);
+}
+
void CollisionShape::_notification(int p_what) {
switch (p_what) {
@@ -74,19 +83,20 @@ void CollisionShape::_notification(int p_what) {
if (shape.is_valid()) {
parent->shape_owner_add_shape(owner_id, shape);
}
- parent->shape_owner_set_transform(owner_id, get_transform());
- parent->shape_owner_set_disabled(owner_id, disabled);
+ _update_in_shape_owner();
}
} break;
case NOTIFICATION_ENTER_TREE: {
+ if (parent) {
+ _update_in_shape_owner();
+ }
if (get_tree()->is_debugging_collisions_hint()) {
_create_debug_shape();
}
-
} break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {
if (parent) {
- parent->shape_owner_set_transform(owner_id, get_transform());
+ _update_in_shape_owner(true);
}
} break;
case NOTIFICATION_UNPARENTED: {
diff --git a/scene/3d/collision_shape.h b/scene/3d/collision_shape.h
index 4728d3d5c1..c9c91a5824 100644
--- a/scene/3d/collision_shape.h
+++ b/scene/3d/collision_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SHAPE_H
#define COLLISION_SHAPE_H
@@ -50,6 +51,8 @@ class CollisionShape : public Spatial {
void _create_debug_shape();
+ void _update_in_shape_owner(bool p_xform_only = false);
+
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp
index 21e8a6e17a..4ad2eb60ee 100644
--- a/scene/3d/gi_probe.cpp
+++ b/scene/3d/gi_probe.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gi_probe.h"
#include "mesh_instance.h"
@@ -534,7 +535,7 @@ void GIProbe::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "normal_bias", PROPERTY_HINT_RANGE, "0,4,0.001"), "set_normal_bias", "get_normal_bias");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "interior"), "set_interior", "is_interior");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "compress"), "set_compress", "is_compressed");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "GIProbeData"), "set_probe_data", "get_probe_data");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "data", PROPERTY_HINT_RESOURCE_TYPE, "GIProbeData", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE), "set_probe_data", "get_probe_data");
BIND_ENUM_CONSTANT(SUBDIV_64);
BIND_ENUM_CONSTANT(SUBDIV_128);
diff --git a/scene/3d/gi_probe.h b/scene/3d/gi_probe.h
index af3c854f1f..af4b646590 100644
--- a/scene/3d/gi_probe.h
+++ b/scene/3d/gi_probe.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GIPROBE_H
#define GIPROBE_H
diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp
index 8d8c1b65fc..14a0b0505d 100644
--- a/scene/3d/immediate_geometry.cpp
+++ b/scene/3d/immediate_geometry.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "immediate_geometry.h"
void ImmediateGeometry::begin(Mesh::PrimitiveType p_primitive, const Ref<Texture> &p_texture) {
diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h
index abcabf2c34..f7201b4bba 100644
--- a/scene/3d/immediate_geometry.h
+++ b/scene/3d/immediate_geometry.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef IMMEDIATE_GEOMETRY_H
#define IMMEDIATE_GEOMETRY_H
diff --git a/scene/3d/interpolated_camera.cpp b/scene/3d/interpolated_camera.cpp
index 03f82e0e44..9865fe156a 100644
--- a/scene/3d/interpolated_camera.cpp
+++ b/scene/3d/interpolated_camera.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "interpolated_camera.h"
#include "engine.h"
diff --git a/scene/3d/interpolated_camera.h b/scene/3d/interpolated_camera.h
index d74b13c214..b025112295 100644
--- a/scene/3d/interpolated_camera.h
+++ b/scene/3d/interpolated_camera.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INTERPOLATED_CAMERA_H
#define INTERPOLATED_CAMERA_H
diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp
index 04c1f9e3e8..240bd631a1 100644
--- a/scene/3d/light.cpp
+++ b/scene/3d/light.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "light.h"
#include "engine.h"
diff --git a/scene/3d/light.h b/scene/3d/light.h
index 2639e47217..b35b397ced 100644
--- a/scene/3d/light.h
+++ b/scene/3d/light.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LIGHT_H
#define LIGHT_H
diff --git a/scene/3d/listener.cpp b/scene/3d/listener.cpp
index 752a2059f5..439c1f8c45 100644
--- a/scene/3d/listener.cpp
+++ b/scene/3d/listener.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "listener.h"
#include "scene/resources/mesh.h"
diff --git a/scene/3d/listener.h b/scene/3d/listener.h
index db8dca8ce2..8047971ebd 100644
--- a/scene/3d/listener.h
+++ b/scene/3d/listener.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LISTENER_H
#define LISTENER_H
diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp
index cffcbd9a41..80bae911d4 100644
--- a/scene/3d/mesh_instance.cpp
+++ b/scene/3d/mesh_instance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh_instance.h"
#include "collision_shape.h"
diff --git a/scene/3d/mesh_instance.h b/scene/3d/mesh_instance.h
index 74041a46bc..5d359cd4d5 100644
--- a/scene/3d/mesh_instance.h
+++ b/scene/3d/mesh_instance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESH_INSTANCE_H
#define MESH_INSTANCE_H
diff --git a/scene/3d/multimesh_instance.cpp b/scene/3d/multimesh_instance.cpp
index a6a8d434fa..4cbd1df64a 100644
--- a/scene/3d/multimesh_instance.cpp
+++ b/scene/3d/multimesh_instance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "multimesh_instance.h"
void MultiMeshInstance::_bind_methods() {
diff --git a/scene/3d/multimesh_instance.h b/scene/3d/multimesh_instance.h
index 312748b6f0..1cd077a0a5 100644
--- a/scene/3d/multimesh_instance.h
+++ b/scene/3d/multimesh_instance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MULTIMESH_INSTANCE_H
#define MULTIMESH_INSTANCE_H
diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp
index 5d41fe576b..e7ab6cde8a 100644
--- a/scene/3d/navigation.cpp
+++ b/scene/3d/navigation.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation.h"
void Navigation::_navmesh_link(int p_id) {
diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h
index a5a4deebcd..5a501039c8 100644
--- a/scene/3d/navigation.h
+++ b/scene/3d/navigation.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_H
#define NAVIGATION_H
diff --git a/scene/3d/navigation_mesh.cpp b/scene/3d/navigation_mesh.cpp
index 3e548b8e8f..073e56fdb4 100644
--- a/scene/3d/navigation_mesh.cpp
+++ b/scene/3d/navigation_mesh.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "navigation_mesh.h"
#include "mesh_instance.h"
#include "navigation.h"
@@ -404,8 +405,8 @@ void NavigationMesh::_bind_methods() {
BIND_CONSTANT(SAMPLE_PARTITION_MONOTONE);
BIND_CONSTANT(SAMPLE_PARTITION_LAYERS);
- ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_vertices", "get_vertices");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_polygons", "_get_polygons");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "vertices", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_vertices", "get_vertices");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "polygons", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_polygons", "_get_polygons");
ADD_PROPERTY(PropertyInfo(Variant::INT, "sample_partition_type/sample_partition_type", PROPERTY_HINT_ENUM, "Watershed,Monotone,Layers"), "set_sample_partition_type", "get_sample_partition_type");
diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h
index 0a81e1c67b..753ad76edc 100644
--- a/scene/3d/navigation_mesh.h
+++ b/scene/3d/navigation_mesh.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NAVIGATION_MESH_H
#define NAVIGATION_MESH_H
diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp
index fda4647141..8617bbc2f6 100644
--- a/scene/3d/particles.cpp
+++ b/scene/3d/particles.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "particles.h"
#include "scene/resources/surface_tool.h"
#include "servers/visual_server.h"
@@ -1596,4 +1597,21 @@ ParticlesMaterial::ParticlesMaterial() :
}
ParticlesMaterial::~ParticlesMaterial() {
+
+ if (material_mutex)
+ material_mutex->lock();
+
+ if (shader_map.has(current_key)) {
+ shader_map[current_key].users--;
+ if (shader_map[current_key].users == 0) {
+ //deallocate shader, as it's no longer in use
+ VS::get_singleton()->free(shader_map[current_key].shader);
+ shader_map.erase(current_key);
+ }
+
+ VS::get_singleton()->material_set_shader(_get_material(), RID());
+ }
+
+ if (material_mutex)
+ material_mutex->unlock();
}
diff --git a/scene/3d/particles.h b/scene/3d/particles.h
index ebd2b6ce48..17e21c6cee 100644
--- a/scene/3d/particles.h
+++ b/scene/3d/particles.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALINSTANCEPARTICLES_H
#define VISUALINSTANCEPARTICLES_H
diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp
index e0520fdb7c..7ac7f74bb0 100644
--- a/scene/3d/path.cpp
+++ b/scene/3d/path.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "path.h"
#include "engine.h"
@@ -189,61 +190,16 @@ bool PathFollow::get_cubic_interpolation() const {
return cubic;
}
-bool PathFollow::_set(const StringName &p_name, const Variant &p_value) {
-
- if (p_name == SceneStringNames::get_singleton()->offset) {
- set_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->unit_offset) {
- set_unit_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->rotation_mode) {
- set_rotation_mode(RotationMode(p_value.operator int()));
- } else if (p_name == SceneStringNames::get_singleton()->v_offset) {
- set_v_offset(p_value);
- } else if (p_name == SceneStringNames::get_singleton()->h_offset) {
- set_h_offset(p_value);
- } else if (String(p_name) == "cubic_interp") {
- set_cubic_interpolation(p_value);
- } else if (String(p_name) == "loop") {
- set_loop(p_value);
- } else
- return false;
-
- return true;
-}
+void PathFollow::_validate_property(PropertyInfo &property) const {
-bool PathFollow::_get(const StringName &p_name, Variant &r_ret) const {
-
- if (p_name == SceneStringNames::get_singleton()->offset) {
- r_ret = get_offset();
- } else if (p_name == SceneStringNames::get_singleton()->unit_offset) {
- r_ret = get_unit_offset();
- } else if (p_name == SceneStringNames::get_singleton()->rotation_mode) {
- r_ret = get_rotation_mode();
- } else if (p_name == SceneStringNames::get_singleton()->v_offset) {
- r_ret = get_v_offset();
- } else if (p_name == SceneStringNames::get_singleton()->h_offset) {
- r_ret = get_h_offset();
- } else if (String(p_name) == "cubic_interp") {
- r_ret = cubic;
- } else if (String(p_name) == "loop") {
- r_ret = loop;
- } else
- return false;
-
- return true;
-}
-void PathFollow::_get_property_list(List<PropertyInfo> *p_list) const {
-
- float max = 10000;
- if (path && path->get_curve().is_valid())
- max = path->get_curve()->get_baked_length();
- p_list->push_back(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0," + rtos(max) + ",0.01"));
- p_list->push_back(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR));
- p_list->push_back(PropertyInfo(Variant::REAL, "h_offset"));
- p_list->push_back(PropertyInfo(Variant::REAL, "v_offset"));
- p_list->push_back(PropertyInfo(Variant::INT, "rotation_mode", PROPERTY_HINT_ENUM, "None,Y,XY,XYZ"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "cubic_interp"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "loop"));
+ if (property.name == "offset") {
+
+ float max = 10000;
+ if (path && path->get_curve().is_valid())
+ max = path->get_curve()->get_baked_length();
+
+ property.hint_string = "0," + rtos(max) + ",0.01";
+ }
}
void PathFollow::_bind_methods() {
@@ -269,6 +225,14 @@ void PathFollow::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_loop", "loop"), &PathFollow::set_loop);
ClassDB::bind_method(D_METHOD("has_loop"), &PathFollow::has_loop);
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "offset", PROPERTY_HINT_RANGE, "0,10000,0.01"), "set_offset", "get_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "unit_offset", PROPERTY_HINT_RANGE, "0,1,0.0001", PROPERTY_USAGE_EDITOR), "set_unit_offset", "get_unit_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "h_offset"), "set_h_offset", "get_h_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_offset"), "set_v_offset", "get_v_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "rotation_mode", PROPERTY_HINT_ENUM, "None,Y,XY,XYZ"), "set_rotation_mode", "get_rotation_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cubic_interp"), "set_cubic_interpolation", "get_cubic_interpolation");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop");
+
BIND_ENUM_CONSTANT(ROTATION_NONE);
BIND_ENUM_CONSTANT(ROTATION_Y);
BIND_ENUM_CONSTANT(ROTATION_XY);
diff --git a/scene/3d/path.h b/scene/3d/path.h
index 7c3e0f35cc..2ed686ac3c 100644
--- a/scene/3d/path.h
+++ b/scene/3d/path.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PATH_H
#define PATH_H
@@ -78,9 +79,7 @@ private:
void _update_transform();
protected:
- 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;
+ virtual void _validate_property(PropertyInfo &property) const;
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp
index 4c4e4bf1e6..25acd6deb0 100644
--- a/scene/3d/physics_body.cpp
+++ b/scene/3d/physics_body.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_body.h"
#include "engine.h"
@@ -257,6 +258,7 @@ void RigidBody::_body_enter_tree(ObjectID p_id) {
Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
ERR_FAIL_COND(E->get().in_tree);
@@ -280,6 +282,7 @@ void RigidBody::_body_exit_tree(ObjectID p_id) {
Object *obj = ObjectDB::get_instance(p_id);
Node *node = Object::cast_to<Node>(obj);
ERR_FAIL_COND(!node);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(p_id);
ERR_FAIL_COND(!E);
ERR_FAIL_COND(!E->get().in_tree);
@@ -305,6 +308,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape,
Object *obj = ObjectDB::get_instance(objid);
Node *node = Object::cast_to<Node>(obj);
+ ERR_FAIL_COND(!contact_monitor);
Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.find(objid);
ERR_FAIL_COND(!body_in && !E);
@@ -317,7 +321,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape,
E->get().in_tree = node && node->is_inside_tree();
if (node) {
node->connect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree, make_binds(objid));
- node->connect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
+ node->connect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree, make_binds(objid));
if (E->get().in_tree) {
emit_signal(SceneStringNames::get_singleton()->body_entered, node);
}
@@ -344,7 +348,7 @@ void RigidBody::_body_inout(int p_status, ObjectID p_instance, int p_body_shape,
if (node) {
node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
- node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
if (in_tree)
emit_signal(SceneStringNames::get_singleton()->body_exited, obj);
}
@@ -718,6 +722,14 @@ void RigidBody::set_contact_monitor(bool p_enabled) {
for (Map<ObjectID, BodyState>::Element *E = contact_monitor->body_map.front(); E; E = E->next()) {
//clean up mess
+ Object *obj = ObjectDB::get_instance(E->key());
+ Node *node = Object::cast_to<Node>(obj);
+
+ if (node) {
+
+ node->disconnect(SceneStringNames::get_singleton()->tree_entered, this, SceneStringNames::get_singleton()->_body_enter_tree);
+ node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, SceneStringNames::get_singleton()->_body_exit_tree);
+ }
}
memdelete(contact_monitor);
@@ -771,7 +783,7 @@ String RigidBody::get_configuration_warning() const {
if (warning != String()) {
warning += "\n";
}
- warning += TTR("Size changes to RigidBody (in character or rigid modes) will be overriden by the physics engine when running.\nChange the size in children collision shapes instead.");
+ warning += TTR("Size changes to RigidBody (in character or rigid modes) will be overridden by the physics engine when running.\nChange the size in children collision shapes instead.");
}
return warning;
diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h
index f64733e707..c7556c0c5f 100644
--- a/scene/3d/physics_body.h
+++ b/scene/3d/physics_body.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_BODY__H
#define PHYSICS_BODY__H
@@ -114,7 +115,7 @@ public:
MODE_KINEMATIC,
};
-private:
+protected:
bool can_sleep;
PhysicsDirectBodyState *state;
Mode mode;
@@ -177,9 +178,8 @@ private:
void _body_exit_tree(ObjectID p_id);
void _body_inout(int p_status, ObjectID p_instance, int p_body_shape, int p_local_shape);
- void _direct_state_changed(Object *p_state);
+ virtual void _direct_state_changed(Object *p_state);
-protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp
index c36e684477..fed6d76f65 100644
--- a/scene/3d/physics_joint.cpp
+++ b/scene/3d/physics_joint.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_joint.h"
void Joint::_update_joint(bool p_only_free) {
diff --git a/scene/3d/physics_joint.h b/scene/3d/physics_joint.h
index 1520c40cdd..000109ac55 100644
--- a/scene/3d/physics_joint.h
+++ b/scene/3d/physics_joint.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_JOINT_H
#define PHYSICS_JOINT_H
diff --git a/scene/3d/portal.cpp b/scene/3d/portal.cpp
index 35ef6fa2f1..d16d9ed7c5 100644
--- a/scene/3d/portal.cpp
+++ b/scene/3d/portal.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "portal.h"
#include "project_settings.h"
#include "scene/resources/surface_tool.h"
diff --git a/scene/3d/portal.h b/scene/3d/portal.h
index 545dd61650..cb3f208072 100644
--- a/scene/3d/portal.h
+++ b/scene/3d/portal.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PORTAL_H
#define PORTAL_H
diff --git a/scene/3d/position_3d.cpp b/scene/3d/position_3d.cpp
index 955c54a008..3ae04f491f 100644
--- a/scene/3d/position_3d.cpp
+++ b/scene/3d/position_3d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "position_3d.h"
#include "scene/resources/mesh.h"
diff --git a/scene/3d/position_3d.h b/scene/3d/position_3d.h
index 59512ea108..2bc69eff9b 100644
--- a/scene/3d/position_3d.h
+++ b/scene/3d/position_3d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POSITION_3D_H
#define POSITION_3D_H
diff --git a/scene/3d/proximity_group.cpp b/scene/3d/proximity_group.cpp
index 7daf43aefd..101d9ed70c 100644
--- a/scene/3d/proximity_group.cpp
+++ b/scene/3d/proximity_group.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "proximity_group.h"
#include "math_funcs.h"
@@ -111,11 +112,6 @@ void ProximityGroup::_new_group(StringName p_name) {
groups[p_name] = group_version;
};
-void ProximityGroup::set_group_name(String p_group_name) {
-
- group_name = p_group_name;
-};
-
void ProximityGroup::_notification(int p_what) {
switch (p_what) {
@@ -152,9 +148,24 @@ void ProximityGroup::_proximity_group_broadcast(String p_name, Variant p_params)
};
};
-void ProximityGroup::set_dispatch_mode(int p_mode) {
+void ProximityGroup::set_group_name(const String &p_group_name) {
+
+ group_name = p_group_name;
+};
+
+String ProximityGroup::get_group_name() const {
+
+ return group_name;
+};
+
+void ProximityGroup::set_dispatch_mode(DispatchMode p_mode) {
+
+ dispatch_mode = p_mode;
+};
+
+ProximityGroup::DispatchMode ProximityGroup::get_dispatch_mode() const {
- dispatch_mode = (DispatchMode)p_mode;
+ return dispatch_mode;
};
void ProximityGroup::set_grid_radius(const Vector3 &p_radius) {
@@ -170,15 +181,22 @@ Vector3 ProximityGroup::get_grid_radius() const {
void ProximityGroup::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_group_name", "name"), &ProximityGroup::set_group_name);
- ClassDB::bind_method(D_METHOD("broadcast", "name", "parameters"), &ProximityGroup::broadcast);
+ ClassDB::bind_method(D_METHOD("get_group_name"), &ProximityGroup::get_group_name);
ClassDB::bind_method(D_METHOD("set_dispatch_mode", "mode"), &ProximityGroup::set_dispatch_mode);
- ClassDB::bind_method(D_METHOD("_proximity_group_broadcast", "name", "params"), &ProximityGroup::_proximity_group_broadcast);
+ ClassDB::bind_method(D_METHOD("get_dispatch_mode"), &ProximityGroup::get_dispatch_mode);
ClassDB::bind_method(D_METHOD("set_grid_radius", "radius"), &ProximityGroup::set_grid_radius);
ClassDB::bind_method(D_METHOD("get_grid_radius"), &ProximityGroup::get_grid_radius);
+ ClassDB::bind_method(D_METHOD("broadcast", "name", "parameters"), &ProximityGroup::broadcast);
+ ClassDB::bind_method(D_METHOD("_proximity_group_broadcast", "name", "params"), &ProximityGroup::_proximity_group_broadcast);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "group_name"), "set_group_name", "get_group_name");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "dispatch_mode", PROPERTY_HINT_ENUM, "Proxy,Signal"), "set_dispatch_mode", "get_dispatch_mode");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "grid_radius"), "set_grid_radius", "get_grid_radius");
- ADD_SIGNAL(MethodInfo("broadcast", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::ARRAY, "parameters")));
+ ADD_SIGNAL(MethodInfo("broadcast", PropertyInfo(Variant::STRING, "group_name"), PropertyInfo(Variant::ARRAY, "parameters")));
+
+ BIND_ENUM_CONSTANT(MODE_PROXY);
+ BIND_ENUM_CONSTANT(MODE_SIGNAL);
};
ProximityGroup::ProximityGroup() {
diff --git a/scene/3d/proximity_group.h b/scene/3d/proximity_group.h
index 7c61c0f949..448f30bf80 100644
--- a/scene/3d/proximity_group.h
+++ b/scene/3d/proximity_group.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROXIMITY_GROUP_H
#define PROXIMITY_GROUP_H
@@ -66,15 +67,21 @@ public:
static void _bind_methods();
public:
- void set_group_name(String p_group_name);
- void broadcast(String p_name, Variant p_params);
- void set_dispatch_mode(int p_mode);
+ void set_group_name(const String &p_group_name);
+ String get_group_name() const;
+
+ void set_dispatch_mode(DispatchMode p_mode);
+ DispatchMode get_dispatch_mode() const;
void set_grid_radius(const Vector3 &p_radius);
Vector3 get_grid_radius() const;
+ void broadcast(String p_name, Variant p_params);
+
ProximityGroup();
~ProximityGroup();
};
+VARIANT_ENUM_CAST(ProximityGroup::DispatchMode);
+
#endif
diff --git a/scene/3d/ray_cast.cpp b/scene/3d/ray_cast.cpp
index 962af4b244..dd5ae8a999 100644
--- a/scene/3d/ray_cast.cpp
+++ b/scene/3d/ray_cast.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ray_cast.h"
#include "collision_object.h"
@@ -216,6 +217,8 @@ void RayCast::_update_raycast_state() {
against_shape = rr.shape;
} else {
collided = false;
+ against = 0;
+ against_shape = 0;
}
}
diff --git a/scene/3d/ray_cast.h b/scene/3d/ray_cast.h
index c44fd907e5..20cea80700 100644
--- a/scene/3d/ray_cast.h
+++ b/scene/3d/ray_cast.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RAY_CAST_H
#define RAY_CAST_H
diff --git a/scene/3d/reflection_probe.cpp b/scene/3d/reflection_probe.cpp
index b8fa50357a..2178da02b5 100644
--- a/scene/3d/reflection_probe.cpp
+++ b/scene/3d/reflection_probe.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "reflection_probe.h"
void ReflectionProbe::set_intensity(float p_intensity) {
@@ -194,7 +195,7 @@ void ReflectionProbe::_validate_property(PropertyInfo &property) const {
if (property.name == "interior/ambient_color" || property.name == "interior/ambient_energy" || property.name == "interior/ambient_contrib") {
if (!interior) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
}
diff --git a/scene/3d/reflection_probe.h b/scene/3d/reflection_probe.h
index 742e4121f7..13ae1c81f6 100644
--- a/scene/3d/reflection_probe.h
+++ b/scene/3d/reflection_probe.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REFLECTIONPROBE_H
#define REFLECTIONPROBE_H
diff --git a/scene/3d/remote_transform.h b/scene/3d/remote_transform.h
index 5fc9b071b0..6b788a2d75 100644
--- a/scene/3d/remote_transform.h
+++ b/scene/3d/remote_transform.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REMOTETRANSFORM_H
#define REMOTETRANSFORM_H
diff --git a/scene/3d/room_instance.cpp b/scene/3d/room_instance.cpp
index 94ad07c617..0d83a9942e 100644
--- a/scene/3d/room_instance.cpp
+++ b/scene/3d/room_instance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "room_instance.h"
#include "servers/visual_server.h"
diff --git a/scene/3d/room_instance.h b/scene/3d/room_instance.h
index dc066c73c3..ff388e606c 100644
--- a/scene/3d/room_instance.h
+++ b/scene/3d/room_instance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ROOM_INSTANCE_H
#define ROOM_INSTANCE_H
diff --git a/scene/3d/scenario_fx.cpp b/scene/3d/scenario_fx.cpp
index cefe3e46f3..02768ac91f 100644
--- a/scene/3d/scenario_fx.cpp
+++ b/scene/3d/scenario_fx.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scenario_fx.h"
#include "scene/main/viewport.h"
diff --git a/scene/3d/scenario_fx.h b/scene/3d/scenario_fx.h
index 3a8a927f88..7a8e2b548f 100644
--- a/scene/3d/scenario_fx.h
+++ b/scene/3d/scenario_fx.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENARIO_FX_H
#define SCENARIO_FX_H
diff --git a/scene/3d/skeleton.cpp b/scene/3d/skeleton.cpp
index ef60a2151d..d3a13c741e 100644
--- a/scene/3d/skeleton.cpp
+++ b/scene/3d/skeleton.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "skeleton.h"
#include "message_queue.h"
@@ -60,7 +61,7 @@ bool Skeleton::_set(const StringName &p_path, const Variant &p_value) {
set_bone_enabled(which, p_value);
else if (what == "pose")
set_bone_pose(which, p_value);
- else if (what == "bound_childs") {
+ else if (what == "bound_children") {
Array children = p_value;
if (is_inside_tree()) {
@@ -104,7 +105,7 @@ bool Skeleton::_get(const StringName &p_path, Variant &r_ret) const {
r_ret = is_bone_enabled(which);
else if (what == "pose")
r_ret = get_bone_pose(which);
- else if (what == "bound_childs") {
+ else if (what == "bound_children") {
Array children;
for (const List<uint32_t>::Element *E = bones[which].nodes_bound.front(); E; E = E->next()) {
@@ -133,7 +134,7 @@ void Skeleton::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::TRANSFORM, prep + "rest"));
p_list->push_back(PropertyInfo(Variant::BOOL, prep + "enabled"));
p_list->push_back(PropertyInfo(Variant::TRANSFORM, prep + "pose", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, prep + "bound_childs"));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, prep + "bound_children"));
}
}
@@ -160,14 +161,14 @@ void Skeleton::_notification(int p_what) {
//if moved, just update transforms
VisualServer *vs = VisualServer::get_singleton();
- Bone *bonesptr = &bones[0];
+ const Bone *bonesptr = bones.ptr();
int len = bones.size();
Transform global_transform = get_global_transform();
Transform global_transform_inverse = global_transform.affine_inverse();
for (int i = 0; i < len; i++) {
- Bone &b = bonesptr[i];
+ const Bone &b = bonesptr[i];
vs->skeleton_bone_set_transform(skeleton, i, global_transform * (b.transform_final * global_transform_inverse));
}
} break;
diff --git a/scene/3d/skeleton.h b/scene/3d/skeleton.h
index 1b999d91c3..d693670055 100644
--- a/scene/3d/skeleton.h
+++ b/scene/3d/skeleton.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SKELETON_H
#define SKELETON_H
@@ -82,12 +83,12 @@ class Skeleton : public Spatial {
Array _get_bound_child_nodes_to_bone(int p_bone) const {
Array bound;
- List<Node *> childs;
- get_bound_child_nodes_to_bone(p_bone, &childs);
+ List<Node *> children;
+ get_bound_child_nodes_to_bone(p_bone, &children);
- for (int i = 0; i < childs.size(); i++) {
+ for (int i = 0; i < children.size(); i++) {
- bound.push_back(childs[i]);
+ bound.push_back(children[i]);
}
return bound;
}
diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp
index 8b5c85763a..721641e09b 100644
--- a/scene/3d/spatial.cpp
+++ b/scene/3d/spatial.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "spatial.h"
#include "engine.h"
@@ -555,30 +556,36 @@ bool Spatial::is_visible() const {
return data.visible;
}
-void Spatial::rotate(const Vector3 &p_normal, float p_radians) {
+void Spatial::rotate_object_local(const Vector3 &p_axis, float p_angle) {
+ Transform t = get_transform();
+ t.basis.rotate_local(p_axis, p_angle);
+ set_transform(t);
+}
+
+void Spatial::rotate(const Vector3 &p_axis, float p_angle) {
Transform t = get_transform();
- t.basis.rotate_local(p_normal, p_radians); //use local rotation here, as it makes more sense here in tree hierarchy
+ t.basis.rotate(p_axis, p_angle);
set_transform(t);
}
-void Spatial::rotate_x(float p_radians) {
+void Spatial::rotate_x(float p_angle) {
Transform t = get_transform();
- t.basis.rotate_local(Vector3(1, 0, 0), p_radians);
+ t.basis.rotate(Vector3(1, 0, 0), p_angle);
set_transform(t);
}
-void Spatial::rotate_y(float p_radians) {
+void Spatial::rotate_y(float p_angle) {
Transform t = get_transform();
- t.basis.rotate_local(Vector3(0, 1, 0), p_radians);
+ t.basis.rotate(Vector3(0, 1, 0), p_angle);
set_transform(t);
}
-void Spatial::rotate_z(float p_radians) {
+void Spatial::rotate_z(float p_angle) {
Transform t = get_transform();
- t.basis.rotate_local(Vector3(0, 0, 1), p_radians);
+ t.basis.rotate(Vector3(0, 0, 1), p_angle);
set_transform(t);
}
@@ -589,19 +596,45 @@ void Spatial::translate(const Vector3 &p_offset) {
set_transform(t);
}
+void Spatial::translate_object_local(const Vector3 &p_offset) {
+ Transform t = get_transform();
+
+ Transform s;
+ s.translate(p_offset);
+ set_transform(t * s);
+}
+
void Spatial::scale(const Vector3 &p_ratio) {
Transform t = get_transform();
t.basis.scale(p_ratio);
set_transform(t);
}
-void Spatial::global_rotate(const Vector3 &p_normal, float p_radians) {
- Basis rotation(p_normal, p_radians);
+void Spatial::scale_object_local(const Vector3 &p_scale) {
+ Transform t = get_transform();
+ t.basis.scale_local(p_scale);
+ set_transform(t);
+}
+
+void Spatial::global_rotate(const Vector3 &p_axis, float p_angle) {
+
+ Basis rotation(p_axis, p_angle);
Transform t = get_global_transform();
t.basis = rotation * t.basis;
set_global_transform(t);
}
+
+void Spatial::global_scale(const Vector3 &p_scale) {
+
+ Basis s;
+ s.set_scale(p_scale);
+
+ Transform t = get_global_transform();
+ t.basis = s * t.basis;
+ set_global_transform(t);
+}
+
void Spatial::global_translate(const Vector3 &p_offset) {
Transform t = get_global_transform();
t.origin += p_offset;
@@ -620,7 +653,7 @@ void Spatial::set_identity() {
set_transform(Transform());
}
-void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up_normal) {
+void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up) {
Transform lookat;
lookat.origin = get_global_transform().origin;
@@ -629,19 +662,19 @@ void Spatial::look_at(const Vector3 &p_target, const Vector3 &p_up_normal) {
ERR_FAIL();
}
- if (p_up_normal.cross(p_target - lookat.origin) == Vector3()) {
+ if (p_up.cross(p_target - lookat.origin) == Vector3()) {
ERR_EXPLAIN("Up vector and direction between node origin and target are aligned, look_at() failed");
ERR_FAIL();
}
- lookat = lookat.looking_at(p_target, p_up_normal);
+ lookat = lookat.looking_at(p_target, p_up);
set_global_transform(lookat);
}
-void Spatial::look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up_normal) {
+void Spatial::look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up) {
Transform lookat;
lookat.origin = p_pos;
- lookat = lookat.looking_at(p_target, p_up_normal);
+ lookat = lookat.looking_at(p_target, p_up);
set_global_transform(lookat);
}
@@ -677,9 +710,9 @@ void Spatial::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_transform"), &Spatial::get_transform);
ClassDB::bind_method(D_METHOD("set_translation", "translation"), &Spatial::set_translation);
ClassDB::bind_method(D_METHOD("get_translation"), &Spatial::get_translation);
- ClassDB::bind_method(D_METHOD("set_rotation", "radians"), &Spatial::set_rotation);
+ ClassDB::bind_method(D_METHOD("set_rotation", "euler"), &Spatial::set_rotation);
ClassDB::bind_method(D_METHOD("get_rotation"), &Spatial::get_rotation);
- ClassDB::bind_method(D_METHOD("set_rotation_degrees", "degrees"), &Spatial::set_rotation_degrees);
+ ClassDB::bind_method(D_METHOD("set_rotation_degrees", "euler_degrees"), &Spatial::set_rotation_degrees);
ClassDB::bind_method(D_METHOD("get_rotation_degrees"), &Spatial::get_rotation_degrees);
ClassDB::bind_method(D_METHOD("set_scale", "scale"), &Spatial::set_scale);
ClassDB::bind_method(D_METHOD("get_scale"), &Spatial::get_scale);
@@ -711,22 +744,26 @@ void Spatial::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_notify_transform", "enable"), &Spatial::set_notify_transform);
ClassDB::bind_method(D_METHOD("is_transform_notification_enabled"), &Spatial::is_transform_notification_enabled);
- void rotate(const Vector3 &p_normal, float p_radians);
- void rotate_x(float p_radians);
- void rotate_y(float p_radians);
- void rotate_z(float p_radians);
+ void rotate(const Vector3 &p_axis, float p_angle);
+ void rotate_x(float p_angle);
+ void rotate_y(float p_angle);
+ void rotate_z(float p_angle);
void translate(const Vector3 &p_offset);
void scale(const Vector3 &p_ratio);
- void global_rotate(const Vector3 &p_normal, float p_radians);
+ void global_rotate(const Vector3 &p_axis, float p_angle);
void global_translate(const Vector3 &p_offset);
- ClassDB::bind_method(D_METHOD("rotate", "normal", "radians"), &Spatial::rotate);
- ClassDB::bind_method(D_METHOD("global_rotate", "normal", "radians"), &Spatial::global_rotate);
- ClassDB::bind_method(D_METHOD("rotate_x", "radians"), &Spatial::rotate_x);
- ClassDB::bind_method(D_METHOD("rotate_y", "radians"), &Spatial::rotate_y);
- ClassDB::bind_method(D_METHOD("rotate_z", "radians"), &Spatial::rotate_z);
- ClassDB::bind_method(D_METHOD("translate", "offset"), &Spatial::translate);
+ ClassDB::bind_method(D_METHOD("rotate", "axis", "angle"), &Spatial::rotate);
+ ClassDB::bind_method(D_METHOD("global_rotate", "axis", "angle"), &Spatial::global_rotate);
+ ClassDB::bind_method(D_METHOD("global_scale", "scale"), &Spatial::global_scale);
ClassDB::bind_method(D_METHOD("global_translate", "offset"), &Spatial::global_translate);
+ ClassDB::bind_method(D_METHOD("rotate_object_local", "axis", "angle"), &Spatial::rotate_object_local);
+ ClassDB::bind_method(D_METHOD("scale_object_local", "scale"), &Spatial::scale_object_local);
+ ClassDB::bind_method(D_METHOD("translate_object_local", "offset"), &Spatial::translate_object_local);
+ ClassDB::bind_method(D_METHOD("rotate_x", "angle"), &Spatial::rotate_x);
+ ClassDB::bind_method(D_METHOD("rotate_y", "angle"), &Spatial::rotate_y);
+ ClassDB::bind_method(D_METHOD("rotate_z", "angle"), &Spatial::rotate_z);
+ ClassDB::bind_method(D_METHOD("translate", "offset"), &Spatial::translate);
ClassDB::bind_method(D_METHOD("orthonormalize"), &Spatial::orthonormalize);
ClassDB::bind_method(D_METHOD("set_identity"), &Spatial::set_identity);
@@ -751,7 +788,9 @@ void Spatial::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_scale", "get_scale");
ADD_GROUP("Visibility", "");
ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible");
- //ADD_PROPERTY( PropertyInfo(Variant::TRANSFORM,"transform/local"), "set_transform", "get_transform") ;
+#ifdef TOOLS_ENABLED
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "SpatialGizmo", 0), "set_gizmo", "get_gizmo");
+#endif
ADD_SIGNAL(MethodInfo("visibility_changed"));
}
diff --git a/scene/3d/spatial.h b/scene/3d/spatial.h
index 5ebe2f5214..518bba9a51 100644
--- a/scene/3d/spatial.h
+++ b/scene/3d/spatial.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPATIAL_H
#define SPATIAL_H
@@ -158,17 +159,23 @@ public:
Transform get_relative_transform(const Node *p_parent) const;
- void rotate(const Vector3 &p_normal, float p_radians);
- void rotate_x(float p_radians);
- void rotate_y(float p_radians);
- void rotate_z(float p_radians);
+ void rotate(const Vector3 &p_axis, float p_angle);
+ void rotate_x(float p_angle);
+ void rotate_y(float p_angle);
+ void rotate_z(float p_angle);
void translate(const Vector3 &p_offset);
void scale(const Vector3 &p_ratio);
- void global_rotate(const Vector3 &p_normal, float p_radians);
+
+ void rotate_object_local(const Vector3 &p_axis, float p_angle);
+ void scale_object_local(const Vector3 &p_scale);
+ void translate_object_local(const Vector3 &p_offset);
+
+ void global_rotate(const Vector3 &p_axis, float p_angle);
+ void global_scale(const Vector3 &p_scale);
void global_translate(const Vector3 &p_offset);
- void look_at(const Vector3 &p_target, const Vector3 &p_up_normal);
- void look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up_normal);
+ void look_at(const Vector3 &p_target, const Vector3 &p_up);
+ void look_at_from_position(const Vector3 &p_pos, const Vector3 &p_target, const Vector3 &p_up);
Vector3 to_local(Vector3 p_global) const;
Vector3 to_global(Vector3 p_local) const;
diff --git a/scene/3d/spatial_velocity_tracker.cpp b/scene/3d/spatial_velocity_tracker.cpp
index 1c7423e645..c547e76e30 100644
--- a/scene/3d/spatial_velocity_tracker.cpp
+++ b/scene/3d/spatial_velocity_tracker.cpp
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* spatial_velocity_tracker.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 "spatial_velocity_tracker.h"
#include "engine.h"
@@ -95,6 +125,8 @@ void SpatialVelocityTracker::_bind_methods() {
ClassDB::bind_method(D_METHOD("update_position", "position"), &SpatialVelocityTracker::update_position);
ClassDB::bind_method(D_METHOD("get_tracked_linear_velocity"), &SpatialVelocityTracker::get_tracked_linear_velocity);
ClassDB::bind_method(D_METHOD("reset", "position"), &SpatialVelocityTracker::reset);
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "track_physics_step"), "set_track_physics_step", "is_tracking_physics_step");
}
SpatialVelocityTracker::SpatialVelocityTracker() {
diff --git a/scene/3d/spatial_velocity_tracker.h b/scene/3d/spatial_velocity_tracker.h
index c4371ff1f7..a8278a4fb5 100644
--- a/scene/3d/spatial_velocity_tracker.h
+++ b/scene/3d/spatial_velocity_tracker.h
@@ -1,3 +1,33 @@
+/*************************************************************************/
+/* spatial_velocity_tracker.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 SPATIAL_VELOCITY_TRACKER_H
#define SPATIAL_VELOCITY_TRACKER_H
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 6bd673c7a2..232855c978 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sprite_3d.h"
#include "core_string_names.h"
#include "scene/scene_string_names.h"
diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h
index 0ec8f4d668..23e1d96b4b 100644
--- a/scene/3d/sprite_3d.h
+++ b/scene/3d/sprite_3d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPRITE_3D_H
#define SPRITE_3D_H
diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp
index d9918c0b62..ed3bde9504 100644
--- a/scene/3d/vehicle_body.cpp
+++ b/scene/3d/vehicle_body.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "vehicle_body.h"
#define ROLLING_INFLUENCE_FIX
@@ -374,7 +375,7 @@ void VehicleBody::_update_wheel(int p_idx, PhysicsDirectBodyState *s) {
Basis steeringMat(up, steering);
- Basis rotatingMat(right, -wheel.m_rotation);
+ Basis rotatingMat(right, wheel.m_rotation);
/*
if (p_idx==1)
@@ -571,7 +572,7 @@ void VehicleBody::_resolve_single_bilateral(PhysicsDirectBodyState *s, const Vec
b2invmass);
// FIXME: rel_vel assignment here is overwritten by the following assignment.
- // What seemes to be intented in the next next assignment is: rel_vel = normal.dot(rel_vel);
+ // What seemes to be intended in the next next assignment is: rel_vel = normal.dot(rel_vel);
// Investigate why.
real_t rel_vel = jac.getRelativeVelocity(
s->get_linear_velocity(),
@@ -815,26 +816,24 @@ void VehicleBody::_update_friction(PhysicsDirectBodyState *s) {
void VehicleBody::_direct_state_changed(Object *p_state) {
- PhysicsDirectBodyState *s = Object::cast_to<PhysicsDirectBodyState>(p_state);
+ RigidBody::_direct_state_changed(p_state);
- set_ignore_transform_notification(true);
- set_global_transform(s->get_transform());
- set_ignore_transform_notification(false);
+ state = Object::cast_to<PhysicsDirectBodyState>(p_state);
- float step = s->get_step();
+ float step = state->get_step();
for (int i = 0; i < wheels.size(); i++) {
- _update_wheel(i, s);
+ _update_wheel(i, state);
}
for (int i = 0; i < wheels.size(); i++) {
- _ray_cast(i, s);
- wheels[i]->set_transform(s->get_transform().inverse() * wheels[i]->m_worldTransform);
+ _ray_cast(i, state);
+ wheels[i]->set_transform(state->get_transform().inverse() * wheels[i]->m_worldTransform);
}
- _update_suspension(s);
+ _update_suspension(state);
for (int i = 0; i < wheels.size(); i++) {
@@ -847,21 +846,21 @@ void VehicleBody::_direct_state_changed(Object *p_state) {
suspensionForce = wheel.m_maxSuspensionForce;
}
Vector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step;
- Vector3 relpos = wheel.m_raycastInfo.m_contactPointWS - s->get_transform().origin;
+ Vector3 relpos = wheel.m_raycastInfo.m_contactPointWS - state->get_transform().origin;
- s->apply_impulse(relpos, impulse);
+ state->apply_impulse(relpos, impulse);
//getRigidBody()->applyImpulse(impulse, relpos);
}
- _update_friction(s);
+ _update_friction(state);
for (int i = 0; i < wheels.size(); i++) {
VehicleWheel &wheel = *wheels[i];
- Vector3 relpos = wheel.m_raycastInfo.m_hardPointWS - s->get_transform().origin;
- Vector3 vel = s->get_linear_velocity() + (s->get_angular_velocity()).cross(relpos); // * mPos);
+ Vector3 relpos = wheel.m_raycastInfo.m_hardPointWS - state->get_transform().origin;
+ Vector3 vel = state->get_linear_velocity() + (state->get_angular_velocity()).cross(relpos); // * mPos);
if (wheel.m_raycastInfo.m_isInContact) {
- const Transform &chassisWorldTransform = s->get_transform();
+ const Transform &chassisWorldTransform = state->get_transform();
Vector3 fwd(
chassisWorldTransform.basis[0][Vector3::AXIS_Z],
@@ -882,29 +881,8 @@ void VehicleBody::_direct_state_changed(Object *p_state) {
wheel.m_deltaRotation *= real_t(0.99); //damping of rotation when not in contact
}
- linear_velocity = s->get_linear_velocity();
-}
-
-void VehicleBody::set_mass(real_t p_mass) {
-
- mass = p_mass;
- PhysicsServer::get_singleton()->body_set_param(get_rid(), PhysicsServer::BODY_PARAM_MASS, mass);
-}
-
-real_t VehicleBody::get_mass() const {
-
- return mass;
-}
-
-void VehicleBody::set_friction(real_t p_friction) {
- friction = p_friction;
- PhysicsServer::get_singleton()->body_set_param(get_rid(), PhysicsServer::BODY_PARAM_FRICTION, friction);
-}
-
-real_t VehicleBody::get_friction() const {
-
- return friction;
+ state = NULL;
}
void VehicleBody::set_engine_force(float p_engine_force) {
@@ -935,18 +913,8 @@ float VehicleBody::get_steering() const {
return m_steeringValue;
}
-Vector3 VehicleBody::get_linear_velocity() const {
- return linear_velocity;
-}
-
void VehicleBody::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_mass", "mass"), &VehicleBody::set_mass);
- ClassDB::bind_method(D_METHOD("get_mass"), &VehicleBody::get_mass);
-
- ClassDB::bind_method(D_METHOD("set_friction", "friction"), &VehicleBody::set_friction);
- ClassDB::bind_method(D_METHOD("get_friction"), &VehicleBody::get_friction);
-
ClassDB::bind_method(D_METHOD("set_engine_force", "engine_force"), &VehicleBody::set_engine_force);
ClassDB::bind_method(D_METHOD("get_engine_force"), &VehicleBody::get_engine_force);
@@ -956,21 +924,14 @@ void VehicleBody::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_steering", "steering"), &VehicleBody::set_steering);
ClassDB::bind_method(D_METHOD("get_steering"), &VehicleBody::get_steering);
- ClassDB::bind_method(D_METHOD("get_linear_velocity"), &VehicleBody::get_linear_velocity);
-
- ClassDB::bind_method(D_METHOD("_direct_state_changed"), &VehicleBody::_direct_state_changed);
-
ADD_GROUP("Motion", "");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "engine_force", PROPERTY_HINT_RANGE, "0.00,1024.0,0.01"), "set_engine_force", "get_engine_force");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "brake", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_brake", "get_brake");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "steering", PROPERTY_HINT_RANGE, "-180,180.0,0.01"), "set_steering", "get_steering");
- ADD_GROUP("Mass", "");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "mass", PROPERTY_HINT_RANGE, "0.01,65536,0.01"), "set_mass", "get_mass");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "friction", PROPERTY_HINT_RANGE, "0.01,1,0.01"), "set_friction", "get_friction");
}
VehicleBody::VehicleBody() :
- PhysicsBody(PhysicsServer::BODY_MODE_RIGID) {
+ RigidBody() {
m_pitchControl = 0;
m_currentVehicleSpeedKmHour = real_t(0.);
@@ -981,10 +942,11 @@ VehicleBody::VehicleBody() :
friction = 1;
+ state = NULL;
ccd = false;
exclude.insert(get_rid());
- PhysicsServer::get_singleton()->body_set_force_integration_callback(get_rid(), this, "_direct_state_changed");
+ //PhysicsServer::get_singleton()->body_set_force_integration_callback(get_rid(), this, "_direct_state_changed");
set_mass(40);
}
diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h
index b4420e95e7..7810a42e8a 100644
--- a/scene/3d/vehicle_body.h
+++ b/scene/3d/vehicle_body.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VEHICLE_BODY_H
#define VEHICLE_BODY_H
@@ -138,20 +139,13 @@ public:
VehicleWheel();
};
-class VehicleBody : public PhysicsBody {
-
- GDCLASS(VehicleBody, PhysicsBody);
+class VehicleBody : public RigidBody {
- real_t mass;
- real_t friction;
+ GDCLASS(VehicleBody, RigidBody);
float engine_force;
float brake;
- Vector3 linear_velocity;
- Vector3 angular_velocity;
- bool ccd;
-
real_t m_pitchControl;
real_t m_steeringValue;
real_t m_currentVehicleSpeedKmHour;
@@ -191,12 +185,6 @@ class VehicleBody : public PhysicsBody {
void _direct_state_changed(Object *p_state);
public:
- void set_mass(real_t p_mass);
- real_t get_mass() const;
-
- void set_friction(real_t p_friction);
- real_t get_friction() const;
-
void set_engine_force(float p_engine_force);
float get_engine_force() const;
@@ -206,8 +194,6 @@ public:
void set_steering(float p_steering);
float get_steering() const;
- Vector3 get_linear_velocity() const;
-
VehicleBody();
};
diff --git a/scene/3d/visibility_notifier.cpp b/scene/3d/visibility_notifier.cpp
index e6c660bad7..9d6e4941f3 100644
--- a/scene/3d/visibility_notifier.cpp
+++ b/scene/3d/visibility_notifier.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visibility_notifier.h"
#include "engine.h"
@@ -169,7 +170,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
if (add) {
- p_node->connect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
+ p_node->connect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed", varray(p_node), CONNECT_ONESHOT);
nodes[p_node] = meta;
_change_node_state(p_node, false);
}
@@ -207,7 +208,7 @@ void VisibilityEnabler::_notification(int p_what) {
if (!visible)
_change_node_state(E->key(), true);
- E->key()->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed");
+ E->key()->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed");
}
nodes.clear();
@@ -239,7 +240,7 @@ void VisibilityEnabler::_node_removed(Node *p_node) {
if (!visible)
_change_node_state(p_node, true);
- p_node->disconnect(SceneStringNames::get_singleton()->tree_exited, this, "_node_removed");
+ p_node->disconnect(SceneStringNames::get_singleton()->tree_exiting, this, "_node_removed");
nodes.erase(p_node);
}
diff --git a/scene/3d/visibility_notifier.h b/scene/3d/visibility_notifier.h
index ae17939e12..b1985f4a0c 100644
--- a/scene/3d/visibility_notifier.h
+++ b/scene/3d/visibility_notifier.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISIBILITY_NOTIFIER_H
#define VISIBILITY_NOTIFIER_H
diff --git a/scene/3d/visual_instance.cpp b/scene/3d/visual_instance.cpp
index 7497f35d29..00541a7d8a 100644
--- a/scene/3d/visual_instance.cpp
+++ b/scene/3d/visual_instance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_instance.h"
#include "scene/scene_string_names.h"
diff --git a/scene/3d/visual_instance.h b/scene/3d/visual_instance.h
index 34f035c9f8..8458a343b2 100644
--- a/scene/3d/visual_instance.h
+++ b/scene/3d/visual_instance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_INSTANCE_H
#define VISUAL_INSTANCE_H
diff --git a/scene/3d/voxel_light_baker.cpp b/scene/3d/voxel_light_baker.cpp
index e1717a56f3..d389b69ef3 100644
--- a/scene/3d/voxel_light_baker.cpp
+++ b/scene/3d/voxel_light_baker.cpp
@@ -461,16 +461,16 @@ void VoxelLightBaker::_plot_face(int p_idx, int p_level, int p_x, int p_y, int p
}
}
- if (bake_cells[p_idx].childs[i] == CHILD_EMPTY) {
+ if (bake_cells[p_idx].children[i] == CHILD_EMPTY) {
//sub cell must be created
uint32_t child_idx = bake_cells.size();
- bake_cells[p_idx].childs[i] = child_idx;
+ bake_cells[p_idx].children[i] = child_idx;
bake_cells.resize(bake_cells.size() + 1);
bake_cells[child_idx].level = p_level + 1;
}
- _plot_face(bake_cells[p_idx].childs[i], p_level + 1, nx, ny, nz, p_vtx, p_normal, p_uv, p_material, aabb);
+ _plot_face(bake_cells[p_idx].children[i], p_level + 1, nx, ny, nz, p_vtx, p_normal, p_uv, p_material, aabb);
}
}
}
@@ -700,7 +700,7 @@ void VoxelLightBaker::_init_light_plot(int p_idx, int p_level, int p_x, int p_y,
int half = (1 << (cell_subdiv - 1)) >> (p_level + 1);
for (int i = 0; i < 8; i++) {
- uint32_t child = bake_cells[p_idx].childs[i];
+ uint32_t child = bake_cells[p_idx].children[i];
if (child == CHILD_EMPTY)
continue;
@@ -809,7 +809,7 @@ uint32_t VoxelLightBaker::_find_cell_at_pos(const Cell *cells, int x, int y, int
ofs_z += half;
}
- cell = bc->childs[child];
+ cell = bc->children[child];
if (cell == CHILD_EMPTY)
return CHILD_EMPTY;
@@ -1257,7 +1257,7 @@ void VoxelLightBaker::_fixup_plot(int p_idx, int p_level) {
for (int i = 0; i < 8; i++) {
- uint32_t child = bake_cells[p_idx].childs[i];
+ uint32_t child = bake_cells[p_idx].children[i];
if (child == CHILD_EMPTY)
continue;
@@ -1483,7 +1483,7 @@ void VoxelLightBaker::_sample_baked_octree_filtered_and_anisotropic(const Vector
ofs_z += half;
}
- cell = bc->childs[child];
+ cell = bc->children[child];
if (cell == CHILD_EMPTY)
break;
@@ -1766,7 +1766,7 @@ Vector3 VoxelLightBaker::_compute_ray_trace_at_pos(const Vector3 &p_pos, const V
ofs_z += half;
}
- cell = bc->childs[child];
+ cell = bc->children[child];
if (unlikely(cell == CHILD_EMPTY))
break;
@@ -1928,7 +1928,7 @@ Error VoxelLightBaker::make_lightmap(const Transform &p_xform, Ref<Mesh> &p_mesh
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (lightmap_ptr[i * width + j].normal == Vector3())
- continue; //empty, dont write over it anyway
+ continue; //empty, don't write over it anyway
float gauss_sum = gauss_kernel[0];
Vector3 accum = lightmap_ptr[i * width + j].pos * gauss_kernel[0];
for (int k = 1; k < 4; k++) {
@@ -2191,7 +2191,7 @@ PoolVector<int> VoxelLightBaker::create_gi_probe_data() {
for (int i = 0; i < bake_cells.size(); i++) {
for (int j = 0; j < 8; j++) {
- w32[ofs++] = bake_cells[i].childs[j];
+ w32[ofs++] = bake_cells[i].children[j];
}
{ //albedo
@@ -2275,7 +2275,7 @@ void VoxelLightBaker::_debug_mesh(int p_idx, int p_level, const AABB &p_aabb, Re
for (int i = 0; i < 8; i++) {
- uint32_t child = bake_cells[p_idx].childs[i];
+ uint32_t child = bake_cells[p_idx].children[i];
if (child == CHILD_EMPTY || child >= max_original_cells)
continue;
@@ -2290,7 +2290,7 @@ void VoxelLightBaker::_debug_mesh(int p_idx, int p_level, const AABB &p_aabb, Re
if (i & 4)
aabb.position.z += aabb.size.z;
- _debug_mesh(bake_cells[p_idx].childs[i], p_level + 1, aabb, p_multimesh, idx, p_mode);
+ _debug_mesh(bake_cells[p_idx].children[i], p_level + 1, aabb, p_multimesh, idx, p_mode);
}
}
}
@@ -2423,7 +2423,7 @@ PoolVector<uint8_t> VoxelLightBaker::create_capture_octree(int p_subdiv) {
}
for (int j = 0; j < 8; j++) {
- uint32_t child = bake_cells[demap[i]].childs[j];
+ uint32_t child = bake_cells[demap[i]].children[j];
octree[i].children[j] = child == CHILD_EMPTY ? CHILD_EMPTY : remap[child];
}
}
diff --git a/scene/3d/voxel_light_baker.h b/scene/3d/voxel_light_baker.h
index d270a26a2a..6a1f1253a3 100644
--- a/scene/3d/voxel_light_baker.h
+++ b/scene/3d/voxel_light_baker.h
@@ -60,7 +60,7 @@ private:
struct Cell {
- uint32_t childs[8];
+ uint32_t children[8];
float albedo[3]; //albedo in RGB24
float emission[3]; //accumulated light in 16:16 fixed point (needs to be integer for moving lights fast)
float normal[3];
@@ -70,7 +70,7 @@ private:
Cell() {
for (int i = 0; i < 8; i++) {
- childs[i] = CHILD_EMPTY;
+ children[i] = CHILD_EMPTY;
}
for (int i = 0; i < 3; i++) {
diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp
index 76043436df..949a0be3bc 100644
--- a/scene/animation/animation_cache.cpp
+++ b/scene/animation/animation_cache.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_cache.h"
void AnimationCache::_node_exit_tree(Node *p_node) {
@@ -55,7 +56,7 @@ void AnimationCache::_clear_cache() {
while (connected_nodes.size()) {
- connected_nodes.front()->get()->disconnect("tree_exited", this, "_node_exit_tree");
+ connected_nodes.front()->get()->disconnect("tree_exiting", this, "_node_exit_tree");
connected_nodes.erase(connected_nodes.front());
}
path_cache.clear();
@@ -180,7 +181,7 @@ void AnimationCache::_update_cache() {
if (!connected_nodes.has(path.node)) {
connected_nodes.insert(path.node);
- path.node->connect("tree_exited", this, "_node_exit_tree", Node::make_binds(path.node), CONNECT_ONESHOT);
+ path.node->connect("tree_exiting", this, "_node_exit_tree", Node::make_binds(path.node), CONNECT_ONESHOT);
}
}
diff --git a/scene/animation/animation_cache.h b/scene/animation/animation_cache.h
index 63c1f243ef..cf28236376 100644
--- a/scene/animation/animation_cache.h
+++ b/scene/animation/animation_cache.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_CACHE_H
#define ANIMATION_CACHE_H
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 6463180d9e..9db4a5fb04 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_player.h"
#include "engine.h"
@@ -48,24 +49,15 @@ bool AnimationPlayer::_set(const StringName &p_name, const Variant &p_value) {
String name = p_name;
- if (p_name == SceneStringNames::get_singleton()->playback_speed || p_name == SceneStringNames::get_singleton()->speed) { //bw compatibility
- set_speed_scale(p_value);
-
- } else if (p_name == SceneStringNames::get_singleton()->playback_active) {
- set_active(p_value);
- } else if (name.begins_with("playback/play")) {
+ if (name.begins_with("playback/play")) { // bw compatibility
- String which = p_value;
+ set_current_animation(p_value);
- if (which == "[stop]")
- stop();
- else
- play(which);
} else if (name.begins_with("anims/")) {
String which = name.get_slicec('/', 1);
-
add_animation(which, p_value);
+
} else if (name.begins_with("next/")) {
String which = name.get_slicec('/', 1);
@@ -86,9 +78,6 @@ bool AnimationPlayer::_set(const StringName &p_name, const Variant &p_value) {
set_blend_time(from, to, time);
}
- } else if (p_name == SceneStringNames::get_singleton()->autoplay) {
- autoplay = p_value;
-
} else
return false;
@@ -99,24 +88,15 @@ bool AnimationPlayer::_get(const StringName &p_name, Variant &r_ret) const {
String name = p_name;
- if (name == "playback/speed") { //bw compatibility
-
- r_ret = speed_scale;
- } else if (name == "playback/active") {
-
- r_ret = is_active();
- } else if (name == "playback/play") {
+ if (name == "playback/play") { // bw compatibility
- if (is_active() && is_playing())
- r_ret = playback.assigned;
- else
- r_ret = "[stop]";
+ r_ret = get_current_animation();
} else if (name.begins_with("anims/")) {
String which = name.get_slicec('/', 1);
-
r_ret = get_animation(which).get_ref_ptr();
+
} else if (name.begins_with("next/")) {
String which = name.get_slicec('/', 1);
@@ -140,27 +120,43 @@ bool AnimationPlayer::_get(const StringName &p_name, Variant &r_ret) const {
}
r_ret = array;
- } else if (name == "autoplay") {
- r_ret = autoplay;
-
} else
return false;
return true;
}
-void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const {
+void AnimationPlayer::_validate_property(PropertyInfo &property) const {
+
+ if (property.name == "current_animation") {
+ List<String> names;
+
+ for (Map<StringName, AnimationData>::Element *E = animation_set.front(); E; E = E->next()) {
+ names.push_back(E->key());
+ }
+ names.sort();
+ names.push_front("[stop]");
+ String hint;
+ for (List<String>::Element *E = names.front(); E; E = E->next()) {
+
+ if (E != names.front())
+ hint += ",";
+ hint += E->get();
+ }
- List<String> names;
+ property.hint_string = hint;
+ }
+}
+
+void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const {
List<PropertyInfo> anim_names;
for (Map<StringName, AnimationData>::Element *E = animation_set.front(); E; E = E->next()) {
- anim_names.push_back(PropertyInfo(Variant::OBJECT, "anims/" + String(E->key()), PROPERTY_HINT_RESOURCE_TYPE, "Animation", PROPERTY_USAGE_NOEDITOR));
+ anim_names.push_back(PropertyInfo(Variant::OBJECT, "anims/" + String(E->key()), PROPERTY_HINT_RESOURCE_TYPE, "Animation", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE));
if (E->get().next != StringName())
- anim_names.push_back(PropertyInfo(Variant::STRING, "next/" + String(E->key()), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- names.push_back(E->key());
+ anim_names.push_back(PropertyInfo(Variant::STRING, "next/" + String(E->key()), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
anim_names.sort();
@@ -169,24 +165,7 @@ void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(E->get());
}
- {
- names.sort();
- names.push_front("[stop]");
- String hint;
- for (List<String>::Element *E = names.front(); E; E = E->next()) {
-
- if (E != names.front())
- hint += ",";
- hint += E->get();
- }
-
- p_list->push_back(PropertyInfo(Variant::STRING, "playback/play", PROPERTY_HINT_ENUM, hint, PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ANIMATE_AS_TRIGGER));
- p_list->push_back(PropertyInfo(Variant::BOOL, "playback/active", PROPERTY_HINT_NONE, ""));
- p_list->push_back(PropertyInfo(Variant::REAL, "playback/speed", PROPERTY_HINT_RANGE, "-64,64,0.01"));
- }
-
- p_list->push_back(PropertyInfo(Variant::ARRAY, "blend_times", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::STRING, "autoplay", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, "blend_times", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
void AnimationPlayer::advance(float p_time) {
@@ -275,8 +254,8 @@ void AnimationPlayer::_ensure_node_caches(AnimationData *p_anim) {
}
{
- if (!child->is_connected("tree_exited", this, "_node_removed"))
- child->connect("tree_exited", this, "_node_removed", make_binds(child), CONNECT_ONESHOT);
+ if (!child->is_connected("tree_exiting", this, "_node_removed"))
+ child->connect("tree_exiting", this, "_node_removed", make_binds(child), CONNECT_ONESHOT);
}
TrackNodeCacheKey key;
@@ -547,12 +526,14 @@ void AnimationPlayer::_animation_process_data(PlaybackData &cd, float p_delta, f
if (!backwards && cd.pos <= len && next_pos == len /*&& playback.blend.empty()*/) {
//playback finished
- end_notify = true;
+ end_reached = true;
+ end_notify = cd.pos < len; // Notify only if not already at the end
}
if (backwards && cd.pos >= 0 && next_pos == 0 /*&& playback.blend.empty()*/) {
//playback finished
- end_notify = true;
+ end_reached = true;
+ end_notify = cd.pos > 0; // Notify only if not already at the beginning
}
}
@@ -679,24 +660,26 @@ void AnimationPlayer::_animation_process(float p_delta) {
if (playback.current.from) {
+ end_reached = false;
end_notify = false;
_animation_process2(p_delta);
_animation_update_transforms();
- if (end_notify) {
+ if (end_reached) {
if (queued.size()) {
String old = playback.assigned;
play(queued.front()->get());
String new_name = playback.assigned;
queued.pop_front();
- end_notify = false;
- emit_signal(SceneStringNames::get_singleton()->animation_changed, old, new_name);
+ if (end_notify)
+ emit_signal(SceneStringNames::get_singleton()->animation_changed, old, new_name);
} else {
//stop();
playing = false;
_set_process(false);
- end_notify = false;
- emit_signal(SceneStringNames::get_singleton()->animation_finished, playback.assigned);
+ if (end_notify)
+ emit_signal(SceneStringNames::get_singleton()->animation_finished, playback.assigned);
}
+ end_reached = false;
}
} else {
@@ -954,7 +937,7 @@ void AnimationPlayer::play(const StringName &p_name, float p_custom_blend, float
c.current.speed_scale = p_custom_scale;
c.assigned = p_name;
- if (!end_notify)
+ if (!end_reached)
queued.clear();
_set_process(true); // always process when starting an animation
playing = true;
@@ -985,10 +968,27 @@ bool AnimationPlayer::is_playing() const {
};
return true;
- */
+ */
}
+
void AnimationPlayer::set_current_animation(const String &p_anim) {
+ if (p_anim == "[stop]" || p_anim == "") {
+ stop();
+ } else if (!is_playing() || playback.assigned != p_anim) {
+ play(p_anim);
+ } else {
+ // Same animation, do not replay from start
+ }
+}
+
+String AnimationPlayer::get_current_animation() const {
+
+ return (is_playing() ? playback.assigned : "");
+}
+
+void AnimationPlayer::set_assigned_animation(const String &p_anim) {
+
if (is_playing()) {
play(p_anim);
} else {
@@ -999,9 +999,9 @@ void AnimationPlayer::set_current_animation(const String &p_anim) {
}
}
-String AnimationPlayer::get_current_animation() const {
+String AnimationPlayer::get_assigned_animation() const {
- return (playback.assigned);
+ return playback.assigned;
}
void AnimationPlayer::stop(bool p_reset) {
@@ -1028,8 +1028,10 @@ float AnimationPlayer::get_speed_scale() const {
void AnimationPlayer::seek(float p_time, bool p_update) {
if (!playback.current.from) {
- if (playback.assigned)
- set_current_animation(playback.assigned);
+ if (playback.assigned) {
+ ERR_FAIL_COND(!animation_set.has(playback.assigned));
+ playback.current.from = &animation_set[playback.assigned];
+ }
ERR_FAIL_COND(!playback.current.from);
}
@@ -1042,8 +1044,10 @@ void AnimationPlayer::seek(float p_time, bool p_update) {
void AnimationPlayer::seek_delta(float p_time, float p_delta) {
if (!playback.current.from) {
- if (playback.assigned)
- set_current_animation(playback.assigned);
+ if (playback.assigned) {
+ ERR_FAIL_COND(!animation_set.has(playback.assigned));
+ playback.current.from = &animation_set[playback.assigned];
+ }
ERR_FAIL_COND(!playback.current.from);
}
@@ -1301,6 +1305,8 @@ void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_current_animation", "anim"), &AnimationPlayer::set_current_animation);
ClassDB::bind_method(D_METHOD("get_current_animation"), &AnimationPlayer::get_current_animation);
+ ClassDB::bind_method(D_METHOD("set_assigned_animation", "anim"), &AnimationPlayer::set_assigned_animation);
+ ClassDB::bind_method(D_METHOD("get_assigned_animation"), &AnimationPlayer::get_assigned_animation);
ClassDB::bind_method(D_METHOD("queue", "name"), &AnimationPlayer::queue);
ClassDB::bind_method(D_METHOD("clear_queue"), &AnimationPlayer::clear_queue);
@@ -1329,14 +1335,22 @@ void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("seek", "seconds", "update"), &AnimationPlayer::seek, DEFVAL(false));
ClassDB::bind_method(D_METHOD("advance", "delta"), &AnimationPlayer::advance);
+ ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_node"), "set_root", "get_root");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_animation", PROPERTY_HINT_ENUM, "", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_ANIMATE_AS_TRIGGER), "set_current_animation", "get_current_animation");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "assigned_animation", PROPERTY_HINT_NONE, "", 0), "set_assigned_animation", "get_assigned_animation");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "autoplay", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_autoplay", "get_autoplay");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "current_animation_length", PROPERTY_HINT_NONE, "", 0), "", "get_current_animation_length");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "current_animation_position", PROPERTY_HINT_NONE, "", 0), "", "get_current_animation_position");
+
ADD_GROUP("Playback Options", "playback_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_animation_process_mode", "get_animation_process_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_default_blend_time", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_default_blend_time", "get_default_blend_time");
- ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_node"), "set_root", "get_root");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "playback_active", PROPERTY_HINT_NONE, "", 0), "set_active", "is_active");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_speed", PROPERTY_HINT_RANGE, "-64,64,0.01"), "set_speed_scale", "get_speed_scale");
- ADD_SIGNAL(MethodInfo("animation_finished", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("animation_finished", PropertyInfo(Variant::STRING, "anim_name")));
ADD_SIGNAL(MethodInfo("animation_changed", PropertyInfo(Variant::STRING, "old_name"), PropertyInfo(Variant::STRING, "new_name")));
- ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("animation_started", PropertyInfo(Variant::STRING, "anim_name")));
BIND_ENUM_CONSTANT(ANIMATION_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(ANIMATION_PROCESS_IDLE);
@@ -1348,6 +1362,7 @@ AnimationPlayer::AnimationPlayer() {
cache_update_size = 0;
cache_update_prop_size = 0;
speed_scale = 1;
+ end_reached = false;
end_notify = false;
animation_process_mode = ANIMATION_PROCESS_IDLE;
processing = false;
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index 57c658e054..ef758bac44 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_PLAYER_H
#define ANIMATION_PLAYER_H
@@ -205,6 +206,7 @@ private:
List<StringName> queued;
+ bool end_reached;
bool end_notify;
String autoplay;
@@ -249,6 +251,7 @@ private:
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
+ virtual void _validate_property(PropertyInfo &property) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
void _notification(int p_what);
@@ -281,6 +284,8 @@ public:
bool is_playing() const;
String get_current_animation() const;
void set_current_animation(const String &p_anim);
+ String get_assigned_animation() const;
+ void set_assigned_animation(const String &p_anim);
void stop_all();
void set_active(bool p_active);
bool is_active() const;
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp
index 5777562f93..89f0e43a86 100644
--- a/scene/animation/animation_tree_player.cpp
+++ b/scene/animation/animation_tree_player.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation_tree_player.h"
#include "animation_player.h"
diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h
index c6062b97e4..09d6f6fcb4 100644
--- a/scene/animation/animation_tree_player.h
+++ b/scene/animation/animation_tree_player.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_TREE_PLAYER_H
#define ANIMATION_TREE_PLAYER_H
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp
index 2f30337cb8..49013b160a 100644
--- a/scene/animation/tween.cpp
+++ b/scene/animation/tween.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tween.h"
#include "method_bind_ext.gen.inc"
@@ -218,11 +219,13 @@ void Tween::_bind_methods() {
ClassDB::bind_method(D_METHOD("targeting_property", "object", "property", "initial", "initial_val", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_property, DEFVAL(0));
ClassDB::bind_method(D_METHOD("targeting_method", "object", "method", "initial", "initial_method", "final_val", "duration", "trans_type", "ease_type", "delay"), &Tween::targeting_method, DEFVAL(0));
- ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key")));
- ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value")));
- ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key")));
+ ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key")));
+ ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value")));
+ ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key")));
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "repeat"), "set_repeat", "is_repeat");
ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_tween_process_mode", "get_tween_process_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_speed", PROPERTY_HINT_RANGE, "-64,64,0.01"), "set_speed_scale", "get_speed_scale");
BIND_ENUM_CONSTANT(TWEEN_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(TWEEN_PROCESS_IDLE);
@@ -561,57 +564,50 @@ void Tween::_tween_process(float p_delta) {
data.finish = true;
}
- switch (data.type) {
- case INTER_PROPERTY:
- case INTER_METHOD: {
- Variant result = _run_equation(data);
- emit_signal("tween_step", object, NodePath(Vector<StringName>(), data.key, false), data.elapsed, result);
- _apply_tween_value(data, result);
- if (data.finish)
- _apply_tween_value(data, data.final_val);
- } break;
-
- case INTER_CALLBACK:
- if (data.finish) {
- if (data.call_deferred) {
-
- switch (data.args) {
- case 0:
- object->call_deferred(data.key[0]);
- break;
- case 1:
- object->call_deferred(data.key[0], data.arg[0]);
- break;
- case 2:
- object->call_deferred(data.key[0], data.arg[0], data.arg[1]);
- break;
- case 3:
- object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2]);
- break;
- case 4:
- object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3]);
- break;
- case 5:
- object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]);
- break;
- }
- } else {
- Variant::CallError error;
- Variant *arg[5] = {
- &data.arg[0],
- &data.arg[1],
- &data.arg[2],
- &data.arg[3],
- &data.arg[4],
- };
- object->call(data.key[0], (const Variant **)arg, data.args, error);
+ if (data.type == INTER_CALLBACK) {
+ if (data.finish) {
+ if (data.call_deferred) {
+
+ switch (data.args) {
+ case 0:
+ object->call_deferred(data.key[0]);
+ break;
+ case 1:
+ object->call_deferred(data.key[0], data.arg[0]);
+ break;
+ case 2:
+ object->call_deferred(data.key[0], data.arg[0], data.arg[1]);
+ break;
+ case 3:
+ object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2]);
+ break;
+ case 4:
+ object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3]);
+ break;
+ case 5:
+ object->call_deferred(data.key[0], data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]);
+ break;
}
+ } else {
+ Variant::CallError error;
+ Variant *arg[5] = {
+ &data.arg[0],
+ &data.arg[1],
+ &data.arg[2],
+ &data.arg[3],
+ &data.arg[4],
+ };
+ object->call(data.key[0], (const Variant **)arg, data.args, error);
}
- break;
- default: {}
+ }
+ } else {
+ Variant result = _run_equation(data);
+ emit_signal("tween_step", object, NodePath(Vector<StringName>(), data.key, false), data.elapsed, result);
+ _apply_tween_value(data, result);
}
if (data.finish) {
+ _apply_tween_value(data, data.final_val);
emit_signal("tween_completed", object, NodePath(Vector<StringName>(), data.key, false));
// not repeat mode, remove completed action
if (!repeat)
diff --git a/scene/animation/tween.h b/scene/animation/tween.h
index f052c415ae..757d80e90a 100644
--- a/scene/animation/tween.h
+++ b/scene/animation/tween.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TWEEN_H
#define TWEEN_H
diff --git a/scene/animation/tween_interpolaters.cpp b/scene/animation/tween_interpolaters.cpp
index 72c603473a..11f2b0c17f 100644
--- a/scene/animation/tween_interpolaters.cpp
+++ b/scene/animation/tween_interpolaters.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tween.h"
const real_t pi = 3.1415926535898;
diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp
index 8a73c65df6..766c9acf99 100644
--- a/scene/audio/audio_player.cpp
+++ b/scene/audio/audio_player.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_player.h"
#include "engine.h"
diff --git a/scene/audio/audio_player.h b/scene/audio/audio_player.h
index 74109b1fac..21189aea6d 100644
--- a/scene/audio/audio_player.h
+++ b/scene/audio/audio_player.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOPLAYER_H
#define AUDIOPLAYER_H
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index 41ff000ac1..9dfd388c3d 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "base_button.h"
#include "os/keyboard.h"
@@ -310,10 +311,6 @@ void BaseButton::set_disabled(bool p_disabled) {
status.disabled = p_disabled;
update();
_change_notify("disabled");
- if (p_disabled)
- set_focus_mode(FOCUS_NONE);
- else
- set_focus_mode(enabled_focus_mode);
}
bool BaseButton::is_disabled() const {
@@ -503,12 +500,12 @@ void BaseButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_button_group"), &BaseButton::get_button_group);
BIND_VMETHOD(MethodInfo("_pressed"));
- BIND_VMETHOD(MethodInfo("_toggled", PropertyInfo(Variant::BOOL, "pressed")));
+ BIND_VMETHOD(MethodInfo("_toggled", PropertyInfo(Variant::BOOL, "button_pressed")));
ADD_SIGNAL(MethodInfo("pressed"));
ADD_SIGNAL(MethodInfo("button_up"));
ADD_SIGNAL(MethodInfo("button_down"));
- ADD_SIGNAL(MethodInfo("toggled", PropertyInfo(Variant::BOOL, "pressed")));
+ ADD_SIGNAL(MethodInfo("toggled", PropertyInfo(Variant::BOOL, "button_pressed")));
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "disabled"), "set_disabled", "is_disabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "toggle_mode"), "set_toggle_mode", "is_toggle_mode");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "pressed"), "set_pressed", "is_pressed");
@@ -538,15 +535,15 @@ BaseButton::BaseButton() {
set_focus_mode(FOCUS_ALL);
enabled_focus_mode = FOCUS_ALL;
action_mode = ACTION_MODE_BUTTON_RELEASE;
+}
+
+BaseButton::~BaseButton() {
if (button_group.is_valid()) {
button_group->buttons.erase(this);
}
}
-BaseButton::~BaseButton() {
-}
-
void ButtonGroup::get_buttons(List<BaseButton *> *r_buttons) {
for (Set<BaseButton *>::Element *E = buttons.front(); E; E = E->next()) {
diff --git a/scene/gui/base_button.h b/scene/gui/base_button.h
index 00c9fe959c..6917e112ab 100644
--- a/scene/gui/base_button.h
+++ b/scene/gui/base_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BASE_BUTTON_H
#define BASE_BUTTON_H
@@ -89,8 +90,8 @@ public:
/* Signals */
- bool is_pressed() const; ///< return wether button is pressed (toggled in)
- bool is_pressing() const; ///< return wether button is pressed (toggled in)
+ bool is_pressed() const; ///< return whether button is pressed (toggled in)
+ bool is_pressing() const; ///< return whether button is pressed (toggled in)
bool is_hovered() const;
void set_pressed(bool p_pressed); ///only works in toggle mode
diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp
index b7f1dbaa70..12b9fe7c03 100644
--- a/scene/gui/box_container.cpp
+++ b/scene/gui/box_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "box_container.h"
#include "label.h"
#include "margin_container.h"
diff --git a/scene/gui/box_container.h b/scene/gui/box_container.h
index b22b3e28e3..abc228f804 100644
--- a/scene/gui/box_container.h
+++ b/scene/gui/box_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BOX_CONTAINER_H
#define BOX_CONTAINER_H
diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp
index d5715d63b6..03b25a138f 100644
--- a/scene/gui/button.cpp
+++ b/scene/gui/button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "button.h"
#include "print_string.h"
#include "servers/visual_server.h"
diff --git a/scene/gui/button.h b/scene/gui/button.h
index b3645fff7a..0b41b14f02 100644
--- a/scene/gui/button.h
+++ b/scene/gui/button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BUTTON_H
#define BUTTON_H
diff --git a/scene/gui/center_container.cpp b/scene/gui/center_container.cpp
index bf9ca69be4..cf71f89830 100644
--- a/scene/gui/center_container.cpp
+++ b/scene/gui/center_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "center_container.h"
Size2 CenterContainer::get_minimum_size() const {
diff --git a/scene/gui/center_container.h b/scene/gui/center_container.h
index 97912b11c7..519e1493ec 100644
--- a/scene/gui/center_container.h
+++ b/scene/gui/center_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CENTER_CONTAINER_H
#define CENTER_CONTAINER_H
diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp
index 73db240468..0790f87ea7 100644
--- a/scene/gui/check_box.cpp
+++ b/scene/gui/check_box.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* check_button.cpp */
+/* check_box.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "check_box.h"
#include "servers/visual_server.h"
diff --git a/scene/gui/check_box.h b/scene/gui/check_box.h
index e7358c1fb2..8375b46ca0 100644
--- a/scene/gui/check_box.h
+++ b/scene/gui/check_box.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CHECK_BOX_H
#define CHECK_BOX_H
diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp
index dbafcd4353..f9ed0ecdbb 100644
--- a/scene/gui/check_button.cpp
+++ b/scene/gui/check_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "check_button.h"
#include "print_string.h"
diff --git a/scene/gui/check_button.h b/scene/gui/check_button.h
index 8cf927de9b..a11749e3f6 100644
--- a/scene/gui/check_button.h
+++ b/scene/gui/check_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CHECK_BUTTON_H
#define CHECK_BUTTON_H
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 95298f5a18..30bcc48149 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "color_picker.h"
#include "os/input.h"
@@ -209,6 +210,7 @@ Color ColorPicker::get_pick_color() const {
}
void ColorPicker::add_preset(const Color &p_color) {
+
if (presets.find(p_color)) {
presets.move_to_back(presets.find(p_color));
} else {
@@ -482,6 +484,10 @@ void ColorPicker::_bind_methods() {
ClassDB::bind_method(D_METHOD("_preset_input"), &ColorPicker::_preset_input);
ClassDB::bind_method(D_METHOD("_screen_input"), &ColorPicker::_screen_input);
+ ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_pick_color", "get_pick_color");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "edit_alpha"), "set_edit_alpha", "is_editing_alpha");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "raw_mode"), "set_raw_mode", "is_raw_mode");
+
ADD_SIGNAL(MethodInfo("color_changed", PropertyInfo(Variant::COLOR, "color")));
}
diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h
index 1f6a8fb1bb..01ae1cc464 100644
--- a/scene/gui/color_picker.h
+++ b/scene/gui/color_picker.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLOR_PICKER_H
#define COLOR_PICKER_H
diff --git a/scene/gui/color_rect.cpp b/scene/gui/color_rect.cpp
index d212ba9416..463f3911dc 100644
--- a/scene/gui/color_rect.cpp
+++ b/scene/gui/color_rect.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "color_rect.h"
void ColorRect::set_frame_color(const Color &p_color) {
diff --git a/scene/gui/color_rect.h b/scene/gui/color_rect.h
index 747ae72997..a841008f76 100644
--- a/scene/gui/color_rect.h
+++ b/scene/gui/color_rect.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLOR_RECT_H
#define COLOR_RECT_H
diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp
index 20616d5dd8..7cb0ad5707 100644
--- a/scene/gui/container.cpp
+++ b/scene/gui/container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "container.h"
#include "message_queue.h"
#include "scene/scene_string_names.h"
diff --git a/scene/gui/container.h b/scene/gui/container.h
index 2b9910dcf5..c472162f58 100644
--- a/scene/gui/container.h
+++ b/scene/gui/container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTAINER_H
#define CONTAINER_H
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 6072653c54..01415594d3 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "control.h"
#include "project_settings.h"
#include "scene/main/canvas_layer.h"
@@ -860,6 +861,8 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName &
class_name = ClassDB::get_parent_class_nocheck(class_name);
}
+ class_name = type;
+
Control *parent = Object::cast_to<Control>(theme_owner->get_parent());
if (parent)
@@ -868,8 +871,6 @@ Ref<StyleBox> Control::get_stylebox(const StringName &p_name, const StringName &
theme_owner = NULL;
}
- class_name = type;
-
while (class_name != StringName()) {
if (Theme::get_default()->has_stylebox(p_name, class_name))
return Theme::get_default()->get_stylebox(p_name, class_name);
@@ -1324,7 +1325,7 @@ float Control::_get_parent_range(int p_idx) const {
if (!is_inside_tree()) {
- return 1.0;
+ return 0;
}
if (data.parent_canvas_item) {
@@ -1333,7 +1334,7 @@ float Control::_get_parent_range(int p_idx) const {
return get_viewport()->get_visible_rect().size[p_idx & 1];
}
- return 1.0;
+ return 0;
}
float Control::_get_range(int p_idx) const {
@@ -1356,24 +1357,32 @@ float Control::_a2s(float p_val, float p_anchor, float p_range) const {
}
void Control::set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin, bool p_push_opposite_anchor) {
- bool pushed = false;
+ float parent_range = _get_parent_range((p_margin == MARGIN_LEFT || p_margin == MARGIN_RIGHT) ? 0 : 1);
+ float previous_margin_pos = data.margin[p_margin] + data.anchor[p_margin] * parent_range;
+ float previous_opposite_margin_pos = data.margin[(p_margin + 2) % 4] + data.anchor[(p_margin + 2) % 4] * parent_range;
+
data.anchor[p_margin] = CLAMP(p_anchor, 0.0, 1.0);
if (((p_margin == MARGIN_LEFT || p_margin == MARGIN_TOP) && data.anchor[p_margin] > data.anchor[(p_margin + 2) % 4]) ||
((p_margin == MARGIN_RIGHT || p_margin == MARGIN_BOTTOM) && data.anchor[p_margin] < data.anchor[(p_margin + 2) % 4])) {
if (p_push_opposite_anchor) {
data.anchor[(p_margin + 2) % 4] = data.anchor[p_margin];
- pushed = true;
} else {
data.anchor[p_margin] = data.anchor[(p_margin + 2) % 4];
}
}
- if (is_inside_tree()) {
- if (p_keep_margin) {
- _size_changed();
+ if (!p_keep_margin) {
+ data.margin[p_margin] = _s2a(previous_margin_pos, data.anchor[p_margin], parent_range);
+ if (p_push_opposite_anchor) {
+ data.margin[(p_margin + 2) % 4] = _s2a(previous_opposite_margin_pos, data.anchor[(p_margin + 2) % 4], parent_range);
}
}
+
+ if (is_inside_tree()) {
+ _size_changed();
+ }
+
update();
_change_notify();
}
@@ -2004,7 +2013,7 @@ Control *Control::find_prev_valid_focus() const {
if (from->is_set_as_toplevel() || !Object::cast_to<Control>(from->get_parent())) {
- //find last of the childs
+ //find last of the children
prev_child = _prev_control(from);
@@ -2154,6 +2163,7 @@ void Control::set_theme(const Ref<Theme> &p_theme) {
data.theme = p_theme;
if (!p_theme.is_null()) {
+ data.theme_owner = this;
_propagate_theme_changed(this, this);
} else {
@@ -2737,7 +2747,7 @@ void Control::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_icon_override", "name", "texture"), &Control::add_icon_override);
ClassDB::bind_method(D_METHOD("add_shader_override", "name", "shader"), &Control::add_shader_override);
- ClassDB::bind_method(D_METHOD("add_style_override", "name", "stylebox"), &Control::add_style_override);
+ ClassDB::bind_method(D_METHOD("add_stylebox_override", "name", "stylebox"), &Control::add_style_override);
ClassDB::bind_method(D_METHOD("add_font_override", "name", "font"), &Control::add_font_override);
ClassDB::bind_method(D_METHOD("add_color_override", "name", "color"), &Control::add_color_override);
ClassDB::bind_method(D_METHOD("add_constant_override", "name", "constant"), &Control::add_constant_override);
@@ -2749,6 +2759,7 @@ void Control::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_constant", "name", "type"), &Control::get_constant, DEFVAL(""));
ClassDB::bind_method(D_METHOD("has_icon_override", "name"), &Control::has_icon_override);
+ ClassDB::bind_method(D_METHOD("has_shader_override", "name"), &Control::has_shader_override);
ClassDB::bind_method(D_METHOD("has_stylebox_override", "name"), &Control::has_stylebox_override);
ClassDB::bind_method(D_METHOD("has_font_override", "name"), &Control::has_font_override);
ClassDB::bind_method(D_METHOD("has_color_override", "name"), &Control::has_color_override);
@@ -2830,6 +2841,7 @@ void Control::_bind_methods() {
ADD_GROUP("Rect", "rect_");
ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_position", "get_position");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_global_position", PROPERTY_HINT_NONE, "", 0), "set_global_position", "get_global_position");
ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_size", "get_size");
ADD_PROPERTYNZ(PropertyInfo(Variant::VECTOR2, "rect_min_size"), "set_custom_minimum_size", "get_custom_minimum_size");
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "rect_rotation", PROPERTY_HINT_RANGE, "-1080,1080,0.01"), "set_rotation_degrees", "get_rotation_degrees");
@@ -2847,9 +2859,11 @@ void Control::_bind_methods() {
ADD_PROPERTYINZ(PropertyInfo(Variant::NODE_PATH, "focus_neighbour_bottom"), "set_focus_neighbour", "get_focus_neighbour", MARGIN_BOTTOM);
ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "focus_next"), "set_focus_next", "get_focus_next");
ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "focus_previous"), "set_focus_previous", "get_focus_previous");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "focus_mode", PROPERTY_HINT_ENUM, "None,Click,All"), "set_focus_mode", "get_focus_mode");
ADD_GROUP("Mouse", "mouse_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mouse_filter", PROPERTY_HINT_ENUM, "Stop,Pass,Ignore"), "set_mouse_filter", "get_mouse_filter");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "mouse_default_cursor_shape", PROPERTY_HINT_ENUM, "Arrow,Ibeam,Pointing hand,Cross,Wait,Busy,Drag,Can drop,Forbidden,Vertical resize,Horizontal resize,Secondary diagonal resize,Main diagonal resize,Move,Vertial split,Horizontal split,Help"), "set_default_cursor_shape", "get_default_cursor_shape");
ADD_GROUP("Size Flags", "size_flags_");
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");
diff --git a/scene/gui/control.h b/scene/gui/control.h
index 8da40e7d3f..51325f27b5 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONTROL_H
#define CONTROL_H
@@ -316,11 +317,11 @@ public:
/* POSITIONING */
- void set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin = false);
+ void set_anchors_preset(LayoutPreset p_preset, bool p_keep_margin = true);
void set_margins_preset(LayoutPreset p_preset, LayoutPresetMode p_resize_mode = PRESET_MODE_MINSIZE, int p_margin = 0);
void set_anchors_and_margins_preset(LayoutPreset p_preset, LayoutPresetMode p_resize_mode = PRESET_MODE_MINSIZE, int p_margin = 0);
- void set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin = false, bool p_push_opposite_anchor = true);
+ void set_anchor(Margin p_margin, float p_anchor, bool p_keep_margin = true, bool p_push_opposite_anchor = true);
float get_anchor(Margin p_margin) const;
void set_margin(Margin p_margin, float p_value);
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index a2cf0c951f..d9737fa21a 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dialogs.h"
#include "line_edit.h"
#include "print_string.h"
diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h
index c4cde8ef22..e61ede7c3d 100644
--- a/scene/gui/dialogs.h
+++ b/scene/gui/dialogs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DIALOGS_H
#define DIALOGS_H
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index 7bf06bc8c2..58717edbae 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "file_dialog.h"
#include "os/keyboard.h"
#include "print_string.h"
@@ -792,6 +793,15 @@ void FileDialog::_bind_methods() {
ClassDB::bind_method(D_METHOD("invalidate"), &FileDialog::invalidate);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "mode_overrides_title"), "set_mode_overrides_title", "is_mode_overriding_title");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Open one,Open many,Open folder,Open any,Save"), "set_mode", "get_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "access", PROPERTY_HINT_ENUM, "Resources,User data,File system"), "set_access", "get_access");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "filters"), "set_filters", "get_filters");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_hidden_files"), "set_show_hidden_files", "is_showing_hidden_files");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_dir"), "set_current_dir", "get_current_dir");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_file"), "set_current_file", "get_current_file");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_path"), "set_current_path", "get_current_path");
+
ADD_SIGNAL(MethodInfo("file_selected", PropertyInfo(Variant::STRING, "path")));
ADD_SIGNAL(MethodInfo("files_selected", PropertyInfo(Variant::POOL_STRING_ARRAY, "paths")));
ADD_SIGNAL(MethodInfo("dir_selected", PropertyInfo(Variant::STRING, "dir")));
@@ -805,12 +815,6 @@ void FileDialog::_bind_methods() {
BIND_ENUM_CONSTANT(ACCESS_RESOURCES);
BIND_ENUM_CONSTANT(ACCESS_USERDATA);
BIND_ENUM_CONSTANT(ACCESS_FILESYSTEM);
-
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "mode_overrides_title"), "set_mode_overrides_title", "is_mode_overriding_title");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Open one,Open many,Open folder,Open any,Save"), "set_mode", "get_mode");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "access", PROPERTY_HINT_ENUM, "Resources,User data,File system"), "set_access", "get_access");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "filters"), "set_filters", "get_filters");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_hidden_files"), "set_show_hidden_files", "is_showing_hidden_files");
}
void FileDialog::set_show_hidden_files(bool p_show) {
diff --git a/scene/gui/file_dialog.h b/scene/gui/file_dialog.h
index 04f004bf47..2a09494682 100644
--- a/scene/gui/file_dialog.h
+++ b/scene/gui/file_dialog.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FILE_DIALOG_H
#define FILE_DIALOG_H
diff --git a/scene/gui/gradient_edit.cpp b/scene/gui/gradient_edit.cpp
index 10cbac7d40..3985039716 100644
--- a/scene/gui/gradient_edit.cpp
+++ b/scene/gui/gradient_edit.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* color_ramp_edit.cpp */
+/* gradient_edit.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gradient_edit.h"
#include "os/keyboard.h"
diff --git a/scene/gui/gradient_edit.h b/scene/gui/gradient_edit.h
index 5471b0a769..e7834ea0de 100644
--- a/scene/gui/gradient_edit.h
+++ b/scene/gui/gradient_edit.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* color_ramp_edit.h */
+/* gradient_edit.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,8 +27,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SCENE_GUI_COLOR_RAMP_EDIT_H_
-#define SCENE_GUI_COLOR_RAMP_EDIT_H_
+
+#ifndef GRADIENT_EDIT_H
+#define GRADIENT_EDIT_H
#include "scene/gui/color_picker.h"
#include "scene/gui/popup.h"
@@ -72,9 +73,4 @@ public:
virtual ~GradientEdit();
};
-/*class ColorRampEditPanel : public Panel
-{
- GDCLASS(ColorRampEditPanel, Panel );
-};*/
-
-#endif /* SCENE_GUI_COLOR_RAMP_EDIT_H_ */
+#endif // GRADIENT_EDIT_H
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index d0ab77ecf8..38ce91a4df 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "graph_edit.h"
#include "os/input.h"
@@ -1146,9 +1147,18 @@ void GraphEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_node_connected", "from", "from_port", "to", "to_port"), &GraphEdit::is_node_connected);
ClassDB::bind_method(D_METHOD("disconnect_node", "from", "from_port", "to", "to_port"), &GraphEdit::disconnect_node);
ClassDB::bind_method(D_METHOD("get_connection_list"), &GraphEdit::_get_connection_list);
+ ClassDB::bind_method(D_METHOD("clear_connections"), &GraphEdit::clear_connections);
ClassDB::bind_method(D_METHOD("get_scroll_ofs"), &GraphEdit::get_scroll_ofs);
ClassDB::bind_method(D_METHOD("set_scroll_ofs", "ofs"), &GraphEdit::set_scroll_ofs);
+ ClassDB::bind_method(D_METHOD("add_valid_right_disconnect_type", "type"), &GraphEdit::add_valid_right_disconnect_type);
+ ClassDB::bind_method(D_METHOD("remove_valid_right_disconnect_type", "type"), &GraphEdit::remove_valid_right_disconnect_type);
+ ClassDB::bind_method(D_METHOD("add_valid_left_disconnect_type", "type"), &GraphEdit::add_valid_left_disconnect_type);
+ ClassDB::bind_method(D_METHOD("remove_valid_left_disconnect_type", "type"), &GraphEdit::remove_valid_left_disconnect_type);
+ ClassDB::bind_method(D_METHOD("add_valid_connection_type", "from_type", "to_type"), &GraphEdit::add_valid_connection_type);
+ ClassDB::bind_method(D_METHOD("remove_valid_connection_type", "from_type", "to_type"), &GraphEdit::remove_valid_connection_type);
+ ClassDB::bind_method(D_METHOD("is_valid_connection_type", "from_type", "to_type"), &GraphEdit::is_valid_connection_type);
+
ClassDB::bind_method(D_METHOD("set_zoom", "p_zoom"), &GraphEdit::set_zoom);
ClassDB::bind_method(D_METHOD("get_zoom"), &GraphEdit::get_zoom);
@@ -1179,6 +1189,12 @@ void GraphEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_selected", "node"), &GraphEdit::set_selected);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "right_disconnects"), "set_right_disconnects", "is_right_disconnects_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scroll_offset"), "set_scroll_ofs", "get_scroll_ofs");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "snap_distance"), "set_snap", "get_snap");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_snap"), "set_use_snap", "is_using_snap");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "zoom"), "set_zoom", "get_zoom");
+
ADD_SIGNAL(MethodInfo("connection_request", PropertyInfo(Variant::STRING, "from"), PropertyInfo(Variant::INT, "from_slot"), PropertyInfo(Variant::STRING, "to"), PropertyInfo(Variant::INT, "to_slot")));
ADD_SIGNAL(MethodInfo("disconnection_request", PropertyInfo(Variant::STRING, "from"), PropertyInfo(Variant::INT, "from_slot"), PropertyInfo(Variant::STRING, "to"), PropertyInfo(Variant::INT, "to_slot")));
ADD_SIGNAL(MethodInfo("popup_request", PropertyInfo(Variant::VECTOR2, "p_position")));
diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h
index d307765bc0..3bfde44854 100644
--- a/scene/gui/graph_edit.h
+++ b/scene/gui/graph_edit.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* graph_edit.cpp */
+/* graph_edit.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRAPH_EDIT_H
#define GRAPH_EDIT_H
diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp
index 12aa79bf65..24857d49fa 100644
--- a/scene/gui/graph_node.cpp
+++ b/scene/gui/graph_node.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "graph_node.h"
#include "method_bind_ext.gen.inc"
@@ -704,8 +705,12 @@ void GraphNode::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_overlay"), &GraphNode::get_overlay);
ADD_PROPERTY(PropertyInfo(Variant::STRING, "title"), "set_title", "get_title");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_close"), "set_show_close_button", "is_close_button_visible");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resizable"), "set_resizable", "is_resizable");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selected"), "set_selected", "is_selected");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "comment"), "set_comment", "is_comment");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "overlay", PROPERTY_HINT_ENUM, "Disabled,Breakpoint,Position"), "set_overlay", "get_overlay");
ADD_SIGNAL(MethodInfo("offset_changed"));
ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::VECTOR2, "from"), PropertyInfo(Variant::VECTOR2, "to")));
diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h
index 13ef533134..20d25a69b0 100644
--- a/scene/gui/graph_node.h
+++ b/scene/gui/graph_node.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRAPH_NODE_H
#define GRAPH_NODE_H
diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp
index a0d9b5f5ff..8c3f835be3 100644
--- a/scene/gui/grid_container.cpp
+++ b/scene/gui/grid_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "grid_container.h"
void GridContainer::_notification(int p_what) {
diff --git a/scene/gui/grid_container.h b/scene/gui/grid_container.h
index c52f8230b0..243d06f034 100644
--- a/scene/gui/grid_container.h
+++ b/scene/gui/grid_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRID_CONTAINER_H
#define GRID_CONTAINER_H
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index b1c862d1d1..77d3a34c66 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "item_list.h"
#include "os/os.h"
#include "project_settings.h"
@@ -930,6 +931,9 @@ void ItemList::_notification(int p_what) {
scroll_bar->hide();
} else {
scroll_bar->show();
+
+ if (do_autoscroll_to_bottom)
+ scroll_bar->set_value(max);
}
break;
}
@@ -1313,6 +1317,11 @@ Size2 ItemList::get_minimum_size() const {
return Size2();
}
+void ItemList::set_autoscroll_to_bottom(const bool p_enable) {
+
+ do_autoscroll_to_bottom = p_enable;
+}
+
void ItemList::set_auto_height(bool p_enable) {
auto_height = p_enable;
@@ -1410,7 +1419,7 @@ void ItemList::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_items"), &ItemList::_set_items);
ClassDB::bind_method(D_METHOD("_get_items"), &ItemList::_get_items);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
ADD_PROPERTY(PropertyInfo(Variant::INT, "select_mode", PROPERTY_HINT_ENUM, "Single,Multi"), "set_select_mode", "get_select_mode");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "allow_rmb_select"), "set_allow_rmb_select", "get_allow_rmb_select");
@@ -1423,6 +1432,7 @@ void ItemList::_bind_methods() {
ADD_GROUP("Icon", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "icon_mode", PROPERTY_HINT_ENUM, "Top,Left"), "set_icon_mode", "get_icon_mode");
ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "icon_scale"), "set_icon_scale", "get_icon_scale");
+ ADD_PROPERTYNO(PropertyInfo(Variant::REAL, "fixed_icon_size"), "set_fixed_icon_size", "get_fixed_icon_size");
BIND_ENUM_CONSTANT(ICON_MODE_TOP);
BIND_ENUM_CONSTANT(ICON_MODE_LEFT);
@@ -1466,6 +1476,7 @@ ItemList::ItemList() {
ensure_selected_visible = false;
defer_select_single = -1;
allow_rmb_select = false;
+ do_autoscroll_to_bottom = false;
icon_scale = 1.0f;
set_clip_contents(true);
diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h
index df751d8b9d..24e9498044 100644
--- a/scene/gui/item_list.h
+++ b/scene/gui/item_list.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ITEMLIST_H
#define ITEMLIST_H
@@ -107,6 +108,8 @@ private:
real_t icon_scale;
+ bool do_autoscroll_to_bottom;
+
Array _get_items() const;
void _set_items(const Array &p_items);
@@ -212,6 +215,8 @@ public:
Size2 get_minimum_size() const;
+ void set_autoscroll_to_bottom(const bool p_enable);
+
VScrollBar *get_v_scroll() { return scroll_bar; }
ItemList();
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index be065bc0fb..830f724b3c 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "label.h"
#include "print_string.h"
#include "project_settings.h"
@@ -563,6 +564,7 @@ void Label::set_visible_characters(int p_amount) {
if (get_total_character_count() > 0) {
percent_visible = (float)p_amount / (float)total_char_cache;
}
+ _change_notify("percent_visible");
update();
}
@@ -583,6 +585,7 @@ void Label::set_percent_visible(float p_percent) {
visible_chars = get_total_character_count() * p_percent;
percent_visible = p_percent;
}
+ _change_notify("visible_chars");
update();
}
@@ -664,6 +667,7 @@ void Label::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "autowrap"), "set_autowrap", "has_autowrap");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "clip_text"), "set_clip_text", "is_clipping_text");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "uppercase"), "set_uppercase", "is_uppercase");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "visible_characters", PROPERTY_HINT_RANGE, "-1,128000,1", PROPERTY_USAGE_EDITOR), "set_visible_characters", "get_visible_characters");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_visible", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_percent_visible", "get_percent_visible");
ADD_PROPERTY(PropertyInfo(Variant::INT, "lines_skipped", PROPERTY_HINT_RANGE, "0,999,1"), "set_lines_skipped", "get_lines_skipped");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_lines_visible", PROPERTY_HINT_RANGE, "-1,999,1"), "set_max_lines_visible", "get_max_lines_visible");
diff --git a/scene/gui/label.h b/scene/gui/label.h
index 160eb66e53..d5e0b60773 100644
--- a/scene/gui/label.h
+++ b/scene/gui/label.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LABEL_H
#define LABEL_H
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 34abb1fbcc..524a68a116 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "line_edit.h"
#include "label.h"
#include "os/keyboard.h"
@@ -368,6 +369,18 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
shift_selection_check_post(k->get_shift());
} break;
+ case KEY_UP: {
+
+ shift_selection_check_pre(k->get_shift());
+ set_cursor_position(0);
+ shift_selection_check_post(k->get_shift());
+ } break;
+ case KEY_DOWN: {
+
+ shift_selection_check_pre(k->get_shift());
+ set_cursor_position(text.length());
+ shift_selection_check_post(k->get_shift());
+ } break;
case KEY_DELETE: {
if (!editable)
@@ -1400,8 +1413,8 @@ void LineEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_context_menu_enabled", "enable"), &LineEdit::set_context_menu_enabled);
ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &LineEdit::is_context_menu_enabled);
- ADD_SIGNAL(MethodInfo("text_changed", PropertyInfo(Variant::STRING, "text")));
- ADD_SIGNAL(MethodInfo("text_entered", PropertyInfo(Variant::STRING, "text")));
+ ADD_SIGNAL(MethodInfo("text_changed", PropertyInfo(Variant::STRING, "new_text")));
+ ADD_SIGNAL(MethodInfo("text_entered", PropertyInfo(Variant::STRING, "new_text")));
BIND_ENUM_CONSTANT(ALIGN_LEFT);
BIND_ENUM_CONSTANT(ALIGN_CENTER);
@@ -1424,13 +1437,14 @@ void LineEdit::_bind_methods() {
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "secret"), "set_secret", "is_secret");
ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "expand_to_text_length"), "set_expand_to_text_length", "get_expand_to_text_length");
ADD_PROPERTY(PropertyInfo(Variant::INT, "focus_mode", PROPERTY_HINT_ENUM, "None,Click,All"), "set_focus_mode", "get_focus_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled");
ADD_GROUP("Placeholder", "placeholder_");
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "placeholder_text"), "set_placeholder", "get_placeholder");
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "placeholder_alpha", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_placeholder_alpha", "get_placeholder_alpha");
ADD_GROUP("Caret", "caret_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_blink"), "cursor_set_blink_enabled", "cursor_get_blink_enabled");
ADD_PROPERTYNZ(PropertyInfo(Variant::REAL, "caret_blink_speed", PROPERTY_HINT_RANGE, "0.1,10,0.1"), "cursor_set_blink_speed", "cursor_get_blink_speed");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "caret_position"), "set_cursor_position", "get_cursor_position");
}
LineEdit::LineEdit() {
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index f57fde2525..e15980d3c4 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LINE_EDIT_H
#define LINE_EDIT_H
diff --git a/scene/gui/link_button.cpp b/scene/gui/link_button.cpp
index dca83dc31f..d862e8669c 100644
--- a/scene/gui/link_button.cpp
+++ b/scene/gui/link_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "link_button.h"
void LinkButton::set_text(const String &p_text) {
diff --git a/scene/gui/link_button.h b/scene/gui/link_button.h
index 610f481e4e..0821ad9c0d 100644
--- a/scene/gui/link_button.h
+++ b/scene/gui/link_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef LINKBUTTON_H
#define LINKBUTTON_H
diff --git a/scene/gui/margin_container.cpp b/scene/gui/margin_container.cpp
index 97cc16c22d..5e1d53fe1d 100644
--- a/scene/gui/margin_container.cpp
+++ b/scene/gui/margin_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "margin_container.h"
Size2 MarginContainer::get_minimum_size() const {
diff --git a/scene/gui/margin_container.h b/scene/gui/margin_container.h
index 443e0769bc..ea75109248 100644
--- a/scene/gui/margin_container.h
+++ b/scene/gui/margin_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MARGIN_CONTAINER_H
#define MARGIN_CONTAINER_H
diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp
index caf3b90fa1..2e74faa61d 100644
--- a/scene/gui/menu_button.cpp
+++ b/scene/gui/menu_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "menu_button.h"
#include "os/keyboard.h"
#include "scene/main/viewport.h"
@@ -88,7 +89,7 @@ void MenuButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("_get_items"), &MenuButton::_get_items);
ClassDB::bind_method(D_METHOD("set_disable_shortcuts", "disabled"), &MenuButton::set_disable_shortcuts);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
ADD_SIGNAL(MethodInfo("about_to_show"));
}
diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h
index bfe168adf7..2356444ecb 100644
--- a/scene/gui/menu_button.h
+++ b/scene/gui/menu_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MENU_BUTTON_H
#define MENU_BUTTON_H
diff --git a/scene/gui/nine_patch_rect.cpp b/scene/gui/nine_patch_rect.cpp
index 0e753675f7..b8f6ffe6d2 100644
--- a/scene/gui/nine_patch_rect.cpp
+++ b/scene/gui/nine_patch_rect.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "nine_patch_rect.h"
#include "servers/visual_server.h"
diff --git a/scene/gui/nine_patch_rect.h b/scene/gui/nine_patch_rect.h
index dc6c5c8a28..b4b4602a7d 100644
--- a/scene/gui/nine_patch_rect.h
+++ b/scene/gui/nine_patch_rect.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NINE_PATCH_RECT_H
#define NINE_PATCH_RECT_H
diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp
index a447889971..1a46921561 100644
--- a/scene/gui/option_button.cpp
+++ b/scene/gui/option_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "option_button.h"
#include "print_string.h"
@@ -318,7 +319,7 @@ void OptionButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("_get_items"), &OptionButton::_get_items);
ADD_PROPERTY(PropertyInfo(Variant::INT, "selected"), "_select_int", "get_selected");
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
ADD_SIGNAL(MethodInfo("item_selected", PropertyInfo(Variant::INT, "ID")));
}
diff --git a/scene/gui/option_button.h b/scene/gui/option_button.h
index c2854e9d1a..f65fa1b631 100644
--- a/scene/gui/option_button.h
+++ b/scene/gui/option_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef OPTION_BUTTON_H
#define OPTION_BUTTON_H
diff --git a/scene/gui/panel.cpp b/scene/gui/panel.cpp
index 28a221b63e..4375e03a50 100644
--- a/scene/gui/panel.cpp
+++ b/scene/gui/panel.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "panel.h"
#include "print_string.h"
diff --git a/scene/gui/panel.h b/scene/gui/panel.h
index 8641be4423..db8b35372e 100644
--- a/scene/gui/panel.h
+++ b/scene/gui/panel.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PANEL_H
#define PANEL_H
diff --git a/scene/gui/panel_container.cpp b/scene/gui/panel_container.cpp
index 9d73b82952..a778d62659 100644
--- a/scene/gui/panel_container.cpp
+++ b/scene/gui/panel_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "panel_container.h"
Size2 PanelContainer::get_minimum_size() const {
diff --git a/scene/gui/panel_container.h b/scene/gui/panel_container.h
index 0a412cb091..267e2b921f 100644
--- a/scene/gui/panel_container.h
+++ b/scene/gui/panel_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PANEL_CONTAINER_H
#define PANEL_CONTAINER_H
diff --git a/scene/gui/popup.cpp b/scene/gui/popup.cpp
index 73bf867c37..d18a3a3f2f 100644
--- a/scene/gui/popup.cpp
+++ b/scene/gui/popup.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "popup.h"
#include "engine.h"
diff --git a/scene/gui/popup.h b/scene/gui/popup.h
index efe2ee88c2..550e803578 100644
--- a/scene/gui/popup.h
+++ b/scene/gui/popup.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POPUP_H
#define POPUP_H
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 7999f50013..89000fcde1 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "popup_menu.h"
#include "os/input.h"
#include "os/keyboard.h"
@@ -122,8 +123,7 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const {
for (int i = 0; i < items.size(); i++) {
- if (i > 0)
- ofs.y += vseparation;
+ ofs.y += vseparation;
float h;
if (!items[i].icon.is_null()) {
@@ -189,6 +189,26 @@ void PopupMenu::_submenu_timeout() {
submenu_over = -1;
}
+void PopupMenu::_scroll(float p_factor, const Point2 &p_over) {
+
+ const float global_y = get_global_position().y;
+
+ int vseparation = get_constant("vseparation");
+ Ref<Font> font = get_font("font");
+
+ float dy = (vseparation + font->get_height()) * 3 * p_factor;
+ if (dy > 0 && global_y < 0)
+ dy = MIN(dy, -global_y - 1);
+ else if (dy < 0 && global_y + get_size().y > get_viewport_rect().size.y)
+ dy = -MIN(-dy, global_y + get_size().y - get_viewport_rect().size.y - 1);
+ set_position(get_position() + Vector2(0, dy));
+
+ Ref<InputEventMouseMotion> ie;
+ ie.instance();
+ ie->set_position(p_over - Vector2(0, dy));
+ _gui_input(ie);
+}
+
void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
Ref<InputEventKey> k = p_event;
@@ -286,39 +306,13 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
case BUTTON_WHEEL_DOWN: {
if (get_global_position().y + get_size().y > get_viewport_rect().size.y) {
-
- int vseparation = get_constant("vseparation");
- Ref<Font> font = get_font("font");
-
- Point2 pos = get_position();
- int s = (vseparation + font->get_height()) * 3;
- pos.y -= (s * b->get_factor());
- set_position(pos);
-
- //update hover
- Ref<InputEventMouseMotion> ie;
- ie.instance();
- ie->set_position(b->get_position() + Vector2(0, s));
- _gui_input(ie);
+ _scroll(-b->get_factor(), b->get_position());
}
} break;
case BUTTON_WHEEL_UP: {
if (get_global_position().y < 0) {
-
- int vseparation = get_constant("vseparation");
- Ref<Font> font = get_font("font");
-
- Point2 pos = get_position();
- int s = (vseparation + font->get_height()) * 3;
- pos.y += (s * b->get_factor());
- set_position(pos);
-
- //update hover
- Ref<InputEventMouseMotion> ie;
- ie.instance();
- ie->set_position(b->get_position() - Vector2(0, s));
- _gui_input(ie);
+ _scroll(b->get_factor(), b->get_position());
}
} break;
case BUTTON_LEFT: {
@@ -387,6 +381,13 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
update();
}
}
+
+ Ref<InputEventPanGesture> pan_gesture = p_event;
+ if (pan_gesture.is_valid()) {
+ if (get_global_position().y + get_size().y > get_viewport_rect().size.y || get_global_position().y < 0) {
+ _scroll(-pan_gesture->get_delta().y, pan_gesture->get_position());
+ }
+ }
}
bool PopupMenu::has_point(const Point2 &p_point) const {
@@ -459,7 +460,7 @@ void PopupMenu::_notification(int p_what) {
if (i == mouse_over) {
- hover->draw(ci, Rect2(item_ofs + Point2(-hseparation, -vseparation), Size2(get_size().width - style->get_minimum_size().width + hseparation * 2, h + vseparation * 2)));
+ hover->draw(ci, Rect2(item_ofs + Point2(-hseparation, -vseparation / 2), Size2(get_size().width - style->get_minimum_size().width + hseparation * 2, h + vseparation)));
}
if (items[i].separator) {
@@ -1222,9 +1223,10 @@ void PopupMenu::_bind_methods() {
ClassDB::bind_method(D_METHOD("_submenu_timeout"), &PopupMenu::_submenu_timeout);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_items", "_get_items");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "items", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_items", "_get_items");
ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_item_selection"), "set_hide_on_item_selection", "is_hide_on_item_selection");
ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_checkable_item_selection"), "set_hide_on_checkable_item_selection", "is_hide_on_checkable_item_selection");
+ ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "hide_on_state_item_selection"), "set_hide_on_state_item_selection", "is_hide_on_state_item_selection");
ADD_SIGNAL(MethodInfo("id_pressed", PropertyInfo(Variant::INT, "ID")));
ADD_SIGNAL(MethodInfo("index_pressed", PropertyInfo(Variant::INT, "index")));
diff --git a/scene/gui/popup_menu.h b/scene/gui/popup_menu.h
index f51ba81c89..60f36e95ec 100644
--- a/scene/gui/popup_menu.h
+++ b/scene/gui/popup_menu.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POPUP_MENU_H
#define POPUP_MENU_H
@@ -83,6 +84,7 @@ class PopupMenu : public Popup {
String _get_accel_text(int p_item) const;
int _get_mouse_over(const Point2 &p_over) const;
virtual Size2 get_minimum_size() const;
+ void _scroll(float p_factor, const Point2 &p_over);
void _gui_input(const Ref<InputEvent> &p_event);
void _activate_submenu(int over);
void _submenu_timeout();
diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp
index 505068f155..c85bed0451 100644
--- a/scene/gui/progress_bar.cpp
+++ b/scene/gui/progress_bar.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "progress_bar.h"
Size2 ProgressBar::get_minimum_size() const {
diff --git a/scene/gui/progress_bar.h b/scene/gui/progress_bar.h
index f7b2a194ba..d091c983b1 100644
--- a/scene/gui/progress_bar.h
+++ b/scene/gui/progress_bar.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PROGRESS_BAR_H
#define PROGRESS_BAR_H
diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp
index b1a33906d2..cd6c6bb65c 100644
--- a/scene/gui/range.cpp
+++ b/scene/gui/range.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "range.h"
void Range::_value_changed_notify() {
@@ -247,6 +248,7 @@ void Range::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "set_step", "get_step");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "page"), "set_page", "get_page");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "value"), "set_value", "get_value");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ratio", PROPERTY_HINT_RANGE, "0,1,0.01", 0), "set_as_ratio", "get_as_ratio");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "exp_edit"), "set_exp_ratio", "is_ratio_exp");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "rounded"), "set_use_rounded_values", "is_using_rounded_values");
}
diff --git a/scene/gui/range.h b/scene/gui/range.h
index 521ce412cf..de9383afd8 100644
--- a/scene/gui/range.h
+++ b/scene/gui/range.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RANGE_H
#define RANGE_H
diff --git a/scene/gui/reference_rect.cpp b/scene/gui/reference_rect.cpp
index 1b25965dab..5e25f43daf 100644
--- a/scene/gui/reference_rect.cpp
+++ b/scene/gui/reference_rect.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "reference_rect.h"
#include "engine.h"
diff --git a/scene/gui/reference_rect.h b/scene/gui/reference_rect.h
index 3a062f1b6b..473e348c85 100644
--- a/scene/gui/reference_rect.h
+++ b/scene/gui/reference_rect.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REFERENCE_RECT_H
#define REFERENCE_RECT_H
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 4f2cfccd4a..a7419519ae 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rich_text_label.h"
#include "os/keyboard.h"
#include "os/os.h"
@@ -371,19 +372,20 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
cw = tab_size * font->get_char_size(' ').width;
}
- if (underline) {
- Color uc = color;
- uc.a *= 0.5;
- int uy = y + lh - fh + ascent + 2;
- float underline_width = 1.0;
-#ifdef TOOLS_ENABLED
- underline_width *= EDSCALE;
-#endif
- VS::get_singleton()->canvas_item_add_line(ci, p_ofs + Point2(align_ofs + pofs, uy), p_ofs + Point2(align_ofs + pofs + cw, uy), uc, underline_width);
- }
ofs += cw;
}
}
+
+ if (underline) {
+ Color uc = color;
+ uc.a *= 0.5;
+ int uy = y + lh - fh + ascent + 2;
+ float underline_width = 1.0;
+#ifdef TOOLS_ENABLED
+ underline_width *= EDSCALE;
+#endif
+ VS::get_singleton()->canvas_item_add_line(ci, p_ofs + Point2(align_ofs + wofs, uy), p_ofs + Point2(align_ofs + wofs + w, uy), uc, underline_width);
+ }
}
ADVANCE(fw);
@@ -451,6 +453,8 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
table->columns[i].width = 0;
}
//compute minimum width for each cell
+ const int available_width = p_width - hseparation * (table->columns.size() - 1) - wofs;
+
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());
@@ -461,7 +465,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
for (int i = 0; i < frame->lines.size(); i++) {
- _process_line(frame, Point2(), ly, p_width, i, PROCESS_CACHE, cfont, Color());
+ _process_line(frame, Point2(), ly, available_width, i, PROCESS_CACHE, cfont, Color());
table->columns[column].min_width = MAX(table->columns[column].min_width, frame->lines[i].minimum_width);
}
idx++;
@@ -470,11 +474,11 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
//compute available width and total ratio (for expanders)
int total_ratio = 0;
- int available_width = p_width - hseparation * (table->columns.size() - 1);
+ int remaining_width = available_width;
table->total_width = hseparation;
for (int i = 0; i < table->columns.size(); i++) {
- available_width -= table->columns[i].min_width;
+ remaining_width -= table->columns[i].min_width;
if (table->columns[i].expand)
total_ratio += table->columns[i].expand_ratio;
}
@@ -484,7 +488,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
for (int i = 0; i < table->columns.size(); i++) {
table->columns[i].width = table->columns[i].min_width;
if (table->columns[i].expand)
- table->columns[i].width += table->columns[i].expand_ratio * available_width / total_ratio;
+ table->columns[i].width += table->columns[i].expand_ratio * remaining_width / total_ratio;
table->total_width += table->columns[i].width + hseparation;
}
@@ -2041,6 +2045,15 @@ void RichTextLabel::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "visible_characters", PROPERTY_HINT_RANGE, "-1,128000,1"), "set_visible_characters", "get_visible_characters");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_visible", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_percent_visible", "get_percent_visible");
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "meta_underlined"), "set_meta_underline", "is_meta_underlined");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_size", PROPERTY_HINT_RANGE, "0,24,1"), "set_tab_size", "get_tab_size");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_active"), "set_scroll_active", "is_scroll_active");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_following"), "set_scroll_follow", "is_scroll_following");
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selection_enabled"), "set_selection_enabled", "is_selection_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color");
ADD_SIGNAL(MethodInfo("meta_clicked", PropertyInfo(Variant::NIL, "meta", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT)));
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index c942ecc00f..48f746e28d 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RICH_TEXT_LABEL_H
#define RICH_TEXT_LABEL_H
diff --git a/scene/gui/scroll_bar.cpp b/scene/gui/scroll_bar.cpp
index 3ac1ba0e48..95fcda2db3 100644
--- a/scene/gui/scroll_bar.cpp
+++ b/scene/gui/scroll_bar.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scroll_bar.h"
#include "os/keyboard.h"
@@ -322,14 +323,14 @@ void ScrollBar::_notification(int p_what) {
if (drag_slave) {
drag_slave->connect("gui_input", this, "_drag_slave_input");
- drag_slave->connect("tree_exited", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT);
+ drag_slave->connect("tree_exiting", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT);
}
}
if (p_what == NOTIFICATION_EXIT_TREE) {
if (drag_slave) {
drag_slave->disconnect("gui_input", this, "_drag_slave_input");
- drag_slave->disconnect("tree_exited", this, "_drag_slave_exit");
+ drag_slave->disconnect("tree_exiting", this, "_drag_slave_exit");
}
drag_slave = NULL;
@@ -654,7 +655,7 @@ void ScrollBar::set_drag_slave(const NodePath &p_path) {
if (drag_slave) {
drag_slave->disconnect("gui_input", this, "_drag_slave_input");
- drag_slave->disconnect("tree_exited", this, "_drag_slave_exit");
+ drag_slave->disconnect("tree_exiting", this, "_drag_slave_exit");
}
}
@@ -670,7 +671,7 @@ void ScrollBar::set_drag_slave(const NodePath &p_path) {
if (drag_slave) {
drag_slave->connect("gui_input", this, "_drag_slave_input");
- drag_slave->connect("tree_exited", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT);
+ drag_slave->connect("tree_exiting", this, "_drag_slave_exit", varray(), CONNECT_ONESHOT);
}
}
}
diff --git a/scene/gui/scroll_bar.h b/scene/gui/scroll_bar.h
index 9d0dc3ccbc..15e037f8bb 100644
--- a/scene/gui/scroll_bar.h
+++ b/scene/gui/scroll_bar.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCROLL_BAR_H
#define SCROLL_BAR_H
diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp
index 42745a7042..33b3d46486 100644
--- a/scene/gui/scroll_container.cpp
+++ b/scene/gui/scroll_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scroll_container.h"
#include "os/os.h"
bool ScrollContainer::clips_input() const {
@@ -461,14 +462,16 @@ void ScrollContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_enable_v_scroll", "enable"), &ScrollContainer::set_enable_v_scroll);
ClassDB::bind_method(D_METHOD("is_v_scroll_enabled"), &ScrollContainer::is_v_scroll_enabled);
ClassDB::bind_method(D_METHOD("_update_scrollbar_position"), &ScrollContainer::_update_scrollbar_position);
- ClassDB::bind_method(D_METHOD("set_h_scroll", "val"), &ScrollContainer::set_h_scroll);
+ ClassDB::bind_method(D_METHOD("set_h_scroll", "value"), &ScrollContainer::set_h_scroll);
ClassDB::bind_method(D_METHOD("get_h_scroll"), &ScrollContainer::get_h_scroll);
- ClassDB::bind_method(D_METHOD("set_v_scroll", "val"), &ScrollContainer::set_v_scroll);
+ ClassDB::bind_method(D_METHOD("set_v_scroll", "value"), &ScrollContainer::set_v_scroll);
ClassDB::bind_method(D_METHOD("get_v_scroll"), &ScrollContainer::get_v_scroll);
ADD_GROUP("Scroll", "scroll_");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_horizontal"), "set_enable_h_scroll", "is_h_scroll_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_vertical"), "set_enable_v_scroll", "is_v_scroll_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_horizontal_enabled"), "set_enable_h_scroll", "is_h_scroll_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_horizontal"), "set_h_scroll", "get_h_scroll");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scroll_vertical_enabled"), "set_enable_v_scroll", "is_v_scroll_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "scroll_vertical"), "set_v_scroll", "get_v_scroll");
};
ScrollContainer::ScrollContainer() {
diff --git a/scene/gui/scroll_container.h b/scene/gui/scroll_container.h
index 997d03cbf2..6e3387918b 100644
--- a/scene/gui/scroll_container.h
+++ b/scene/gui/scroll_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCROLL_CONTAINER_H
#define SCROLL_CONTAINER_H
diff --git a/scene/gui/separator.cpp b/scene/gui/separator.cpp
index f65d51cf86..cd0b06da81 100644
--- a/scene/gui/separator.cpp
+++ b/scene/gui/separator.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "separator.h"
Size2 Separator::get_minimum_size() const {
diff --git a/scene/gui/separator.h b/scene/gui/separator.h
index 985ccce31d..7949c7ca9b 100644
--- a/scene/gui/separator.h
+++ b/scene/gui/separator.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEPARATOR_H
#define SEPARATOR_H
diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp
index 4f32786854..36490cf254 100644
--- a/scene/gui/shortcut.cpp
+++ b/scene/gui/shortcut.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shortcut.h"
#include "os/keyboard.h"
diff --git a/scene/gui/shortcut.h b/scene/gui/shortcut.h
index 1d5bfc8bd9..f9240642bf 100644
--- a/scene/gui/shortcut.h
+++ b/scene/gui/shortcut.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHORTCUT_H
#define SHORTCUT_H
diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp
index 37b4d30e3c..a7a1b499c3 100644
--- a/scene/gui/slider.cpp
+++ b/scene/gui/slider.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "slider.h"
#include "os/keyboard.h"
diff --git a/scene/gui/slider.h b/scene/gui/slider.h
index c380ab25a5..e77a0b7423 100644
--- a/scene/gui/slider.h
+++ b/scene/gui/slider.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SLIDER_H
#define SLIDER_H
diff --git a/scene/gui/spin_box.cpp b/scene/gui/spin_box.cpp
index 76bcde01af..3c5d524d80 100644
--- a/scene/gui/spin_box.cpp
+++ b/scene/gui/spin_box.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "spin_box.h"
#include "os/input.h"
diff --git a/scene/gui/spin_box.h b/scene/gui/spin_box.h
index ab969556d9..b8565ec082 100644
--- a/scene/gui/spin_box.h
+++ b/scene/gui/spin_box.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPIN_BOX_H
#define SPIN_BOX_H
diff --git a/scene/gui/split_container.cpp b/scene/gui/split_container.cpp
index d0b7537665..e1d49019b3 100644
--- a/scene/gui/split_container.cpp
+++ b/scene/gui/split_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "split_container.h"
#include "label.h"
diff --git a/scene/gui/split_container.h b/scene/gui/split_container.h
index 2f3e480434..a31dc766d2 100644
--- a/scene/gui/split_container.h
+++ b/scene/gui/split_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPLIT_CONTAINER_H
#define SPLIT_CONTAINER_H
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index d00e360642..0312e58094 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tab_container.h"
#include "message_queue.h"
diff --git a/scene/gui/tab_container.h b/scene/gui/tab_container.h
index 7374fc2d77..0ba8c205ea 100644
--- a/scene/gui/tab_container.h
+++ b/scene/gui/tab_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TAB_CONTAINER_H
#define TAB_CONTAINER_H
diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp
index 3ab031a2ea..f0e89877cd 100644
--- a/scene/gui/tabs.cpp
+++ b/scene/gui/tabs.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tabs.h"
#include "message_queue.h"
@@ -850,6 +851,7 @@ void Tabs::_bind_methods() {
ADD_SIGNAL(MethodInfo("tab_clicked", PropertyInfo(Variant::INT, "tab")));
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_tab", PROPERTY_HINT_RANGE, "-1,4096,1", PROPERTY_USAGE_EDITOR), "set_current_tab", "get_current_tab");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_align", PROPERTY_HINT_ENUM, "Left,Center,Right"), "set_tab_align", "get_tab_align");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "tab_close_display_policy", PROPERTY_HINT_ENUM, "Show Never,Show Active Only,Show Always"), "set_tab_close_display_policy", "get_tab_close_display_policy");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "scrolling_enabled"), "set_scrolling_enabled", "get_scrolling_enabled");
diff --git a/scene/gui/tabs.h b/scene/gui/tabs.h
index ffc0944829..246b3cba67 100644
--- a/scene/gui/tabs.h
+++ b/scene/gui/tabs.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TABS_H
#define TABS_H
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 46ad956b68..95bd676a08 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "text_edit.h"
#include "message_queue.h"
@@ -454,7 +455,7 @@ void TextEdit::_update_selection_mode_word() {
end += 1;
}
- // inital selection
+ // initial selection
if (!selection.active) {
select(row, beg, row, end);
selection.selecting_column = beg;
@@ -882,12 +883,12 @@ void TextEdit::_notification(int p_what) {
}
// give visual indication of empty selected line
- if (selection.active && line >= selection.from_line && line <= selection.to_line) {
+ if (selection.active && line >= selection.from_line && line <= selection.to_line && char_margin >= xmargin_beg) {
int char_w = cache.font->get_char_size(' ').width;
VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, char_w, get_row_height()), cache.selection_color);
}
} else {
- // if it has text, then draw current line marker in the margin, as line number ect will draw over it, draw the rest of line marker later.
+ // if it has text, then draw current line marker in the margin, as line number etc will draw over it, draw the rest of line marker later.
if (line == cursor.line && highlight_current_line) {
VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(0, ofs_y, xmargin_beg, get_row_height()), cache.current_line_color);
}
@@ -936,7 +937,7 @@ void TextEdit::_notification(int p_what) {
cache.font->draw(ci, Point2(cache.style_normal->get_margin(MARGIN_LEFT) + cache.breakpoint_gutter_width + ofs_x, ofs_y + cache.font->get_ascent()), fc, cache.line_number_color);
}
- //loop through charcters in one line
+ //loop through characters in one line
for (int j = 0; j < str.length(); j++) {
//look for keyword
@@ -1024,6 +1025,21 @@ void TextEdit::_notification(int p_what) {
const Color *col = keywords.custom_getptr(range, hash);
+ if (!col) {
+ col = member_keywords.custom_getptr(range, hash);
+
+ if (col) {
+ for (int k = j - 1; k >= 0; k--) {
+ if (str[k] == '.') {
+ col = NULL; //member indexing not allowed
+ break;
+ } else if (str[k] > 32) {
+ break;
+ }
+ }
+ }
+ }
+
if (col) {
in_keyword = true;
@@ -1103,6 +1119,19 @@ void TextEdit::_notification(int p_what) {
if ((char_ofs + char_margin) < xmargin_beg) {
char_ofs += char_w;
+
+ // line highlighting handle horizontal clipping
+ if (line == cursor.line && highlight_current_line) {
+ // char next to margin is skipped
+ if ((char_ofs + char_margin) > xmargin_beg) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, (char_ofs + char_margin) - (xmargin_beg + ofs_x), get_row_height()), cache.current_line_color);
+ }
+
+ // end of line when last char is skipped
+ if (j == str.length() - 1) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg + ofs_x, ofs_y, xmargin_end - (char_ofs + char_margin + char_w), get_row_height()), cache.current_line_color);
+ }
+ }
continue;
}
@@ -1498,7 +1527,7 @@ void TextEdit::_notification(int p_what) {
if (OS::get_singleton()->has_virtual_keyboard())
OS::get_singleton()->show_virtual_keyboard(get_text(), get_global_rect());
if (raised_from_completion) {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1);
}
} break;
@@ -1512,7 +1541,7 @@ void TextEdit::_notification(int p_what) {
if (OS::get_singleton()->has_virtual_keyboard())
OS::get_singleton()->hide_virtual_keyboard();
if (raised_from_completion) {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0);
}
} break;
}
@@ -1747,14 +1776,15 @@ void TextEdit::_get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) co
float rows = p_mouse.y;
rows -= cache.style_normal->get_margin(MARGIN_TOP);
+ rows += (CLAMP(v_scroll->get_value() - get_line_scroll_pos(true), 0, 1) * get_row_height());
rows /= get_row_height();
- int lsp = get_line_scroll_pos(true);
- int row = cursor.line_ofs + (rows + (round(v_scroll->get_value()) - lsp));
+ int first_vis_line = CLAMP(cursor.line_ofs, 0, text.size() - 1);
+ int row = first_vis_line + Math::floor(rows);
if (is_hiding_enabled()) {
// row will be offset by the hidden rows
- int f_ofs = num_lines_from(CLAMP(cursor.line_ofs, 0, text.size() - 1), MIN(rows + 1, text.size() - cursor.line_ofs)) - 1;
- row = cursor.line_ofs + (f_ofs + (round(v_scroll->get_value()) - lsp));
+ int f_ofs = num_lines_from(first_vis_line, rows + 1) - 1;
+ row = first_vis_line + f_ofs;
row = CLAMP(row, 0, text.size() - num_lines_from(text.size() - 1, -1));
}
@@ -1822,10 +1852,18 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (mb->is_pressed()) {
if (mb->get_button_index() == BUTTON_WHEEL_UP && !mb->get_command()) {
- _scroll_up(3 * mb->get_factor());
+ if (mb->get_shift()) {
+ h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor()));
+ } else {
+ _scroll_up(3 * mb->get_factor());
+ }
}
if (mb->get_button_index() == BUTTON_WHEEL_DOWN && !mb->get_command()) {
- _scroll_down(3 * mb->get_factor());
+ if (mb->get_shift()) {
+ h_scroll->set_value(h_scroll->get_value() + (100 * mb->get_factor()));
+ } else {
+ _scroll_down(3 * mb->get_factor());
+ }
}
if (mb->get_button_index() == BUTTON_WHEEL_LEFT) {
h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor()));
@@ -2581,22 +2619,19 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (cc == 0 && cursor.line > 0) {
cursor_set_line(cursor.line - 1);
cursor_set_column(text[cursor.line].length());
- break;
- }
-
- while (cc > 0) {
-
- bool ischar = _is_text_char(text[cursor.line][cc - 1]);
+ } else {
+ while (cc > 0) {
+ bool ischar = _is_text_char(text[cursor.line][cc - 1]);
- if (prev_char && !ischar)
- break;
+ if (prev_char && !ischar)
+ break;
- prev_char = ischar;
- cc--;
+ prev_char = ischar;
+ cc--;
+ }
+ cursor_set_column(cc);
}
- cursor_set_column(cc);
-
} else if (cursor.column == 0) {
if (cursor.line > 0) {
@@ -2645,21 +2680,18 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (cc == text[cursor.line].length() && cursor.line < text.size() - 1) {
cursor_set_line(cursor.line + 1);
cursor_set_column(0);
- break;
- }
-
- while (cc < text[cursor.line].length()) {
-
- bool ischar = _is_text_char(text[cursor.line][cc]);
+ } else {
+ while (cc < text[cursor.line].length()) {
+ bool ischar = _is_text_char(text[cursor.line][cc]);
- if (prev_char && !ischar)
- break;
- prev_char = ischar;
- cc++;
+ if (prev_char && !ischar)
+ break;
+ prev_char = ischar;
+ cc++;
+ }
+ cursor_set_column(cc);
}
- cursor_set_column(cc);
-
} else if (cursor.column == text[cursor.line].length()) {
if (cursor.line < text.size() - 1) {
@@ -2731,6 +2763,8 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
_scroll_lines_down();
break;
}
+
+ {
#else
if (k->get_command() && k->get_alt()) {
_scroll_lines_down();
@@ -2739,9 +2773,15 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (k->get_command())
cursor_set_line(text.size() - 1, true, false);
- else
+ else {
#endif
- cursor_set_line(cursor_get_line() + num_lines_from(CLAMP(cursor.line + 1, 0, text.size() - 1), 1), true, false);
+ if (!is_last_visible_line(cursor.line)) {
+ cursor_set_line(cursor_get_line() + num_lines_from(CLAMP(cursor.line + 1, 0, text.size() - 1), 1), true, false);
+ } else {
+ cursor_set_line(text.size() - 1);
+ cursor_set_column(get_line(cursor.line).length(), true);
+ }
+ }
if (k->get_shift())
_post_shift_selection();
@@ -3091,7 +3131,7 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
return;
}
- if (!scancode_handled && !k->get_command()) { //for german kbds
+ if (!scancode_handled && !k->get_command()) { //for German kbds
if (k->get_unicode() >= 32) {
@@ -3137,6 +3177,9 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
void TextEdit::_scroll_up(real_t p_delta) {
+ if (scrolling && smooth_scroll_enabled && SGN(target_v_scroll - v_scroll->get_value()) != SGN(-p_delta))
+ scrolling = false;
+
if (scrolling) {
target_v_scroll = (target_v_scroll - p_delta);
} else {
@@ -3147,8 +3190,12 @@ void TextEdit::_scroll_up(real_t p_delta) {
if (target_v_scroll <= 0) {
target_v_scroll = 0;
}
- scrolling = true;
- set_physics_process(true);
+ if (Math::abs(target_v_scroll - v_scroll->get_value()) < 1.0) {
+ v_scroll->set_value(target_v_scroll);
+ } else {
+ scrolling = true;
+ set_physics_process(true);
+ }
} else {
v_scroll->set_value(target_v_scroll);
}
@@ -3156,6 +3203,9 @@ void TextEdit::_scroll_up(real_t p_delta) {
void TextEdit::_scroll_down(real_t p_delta) {
+ if (scrolling && smooth_scroll_enabled && SGN(target_v_scroll - v_scroll->get_value()) != SGN(p_delta))
+ scrolling = false;
+
if (scrolling) {
target_v_scroll = (target_v_scroll + p_delta);
} else {
@@ -3172,8 +3222,13 @@ void TextEdit::_scroll_down(real_t p_delta) {
if (target_v_scroll > max_v_scroll) {
target_v_scroll = max_v_scroll;
}
- scrolling = true;
- set_physics_process(true);
+
+ if (Math::abs(target_v_scroll - v_scroll->get_value()) < 1.0) {
+ v_scroll->set_value(target_v_scroll);
+ } else {
+ scrolling = true;
+ set_physics_process(true);
+ }
} else {
v_scroll->set_value(target_v_scroll);
}
@@ -3615,9 +3670,10 @@ void TextEdit::center_viewport_to_cursor() {
int visible_rows = get_visible_rows();
if (h_scroll->is_visible_in_tree())
visible_rows -= ((h_scroll->get_combined_minimum_size().height - 1) / get_row_height());
-
- int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : num_lines_from(text.size() - 1, -visible_rows));
- cursor.line_ofs = CLAMP(cursor.line - num_lines_from(cursor.line - visible_rows / 2, -visible_rows / 2), 0, max_ofs);
+ if (text.size() >= visible_rows) {
+ int max_ofs = text.size() - (scroll_past_end_of_file_enabled ? 1 : MAX(num_lines_from(text.size() - 1, -visible_rows), 0));
+ cursor.line_ofs = CLAMP(cursor.line - num_lines_from(MAX(cursor.line - visible_rows / 2, 0), -visible_rows / 2), 0, max_ofs);
+ }
int cursor_x = get_column_x_offset(cursor.column, text[cursor.line]);
if (cursor_x > (cursor.x_ofs + visible_width))
@@ -4020,11 +4076,21 @@ void TextEdit::set_wrap(bool p_wrap) {
wrap = p_wrap;
}
+bool TextEdit::is_wrapping() const {
+
+ return wrap;
+}
+
void TextEdit::set_max_chars(int p_max_chars) {
max_chars = p_max_chars;
}
+int TextEdit::get_max_chars() const {
+
+ return max_chars;
+}
+
void TextEdit::_reset_caret_blink_timer() {
if (caret_blink_enabled) {
caret_blink_timer->stop();
@@ -4101,6 +4167,16 @@ void TextEdit::add_color_region(const String &p_begin_key, const String &p_end_k
update();
}
+void TextEdit::add_member_keyword(const String &p_keyword, const Color &p_color) {
+ member_keywords[p_keyword] = p_color;
+ update();
+}
+
+void TextEdit::clear_member_keywords() {
+ member_keywords.clear();
+ update();
+}
+
void TextEdit::set_syntax_coloring(bool p_enabled) {
syntax_coloring = p_enabled;
@@ -4440,31 +4516,44 @@ bool TextEdit::search(const String &p_key, uint32_t p_search_flags, int p_from_l
int pos_from = 0;
int last_pos = -1;
- while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) {
- if (p_search_flags & SEARCH_BACKWARDS) {
+ while (true) {
- if (last_pos > from_column)
- break;
- pos = last_pos;
+ while ((last_pos = (p_search_flags & SEARCH_MATCH_CASE) ? text_line.find(p_key, pos_from) : text_line.findn(p_key, pos_from)) != -1) {
- } else {
+ if (p_search_flags & SEARCH_BACKWARDS) {
- if (last_pos >= from_column) {
+ if (last_pos > from_column)
+ break;
pos = last_pos;
- break;
+
+ } else {
+
+ if (last_pos >= from_column) {
+ pos = last_pos;
+ break;
+ }
}
+
+ pos_from = last_pos + p_key.length();
}
- pos_from = last_pos + p_key.length();
- }
+ bool is_match = true;
+
+ if (pos != -1 && (p_search_flags & SEARCH_WHOLE_WORDS)) {
+ //validate for whole words
+ if (pos > 0 && _is_text_char(text_line[pos - 1]))
+ is_match = false;
+ else if (pos + p_key.length() < text_line.length() && _is_text_char(text_line[pos + p_key.length()]))
+ is_match = false;
+ }
+
+ if (is_match || last_pos == -1 || pos == -1) {
+ break;
+ }
- if (pos != -1 && (p_search_flags & SEARCH_WHOLE_WORDS)) {
- //validate for whole words
- if (pos > 0 && _is_text_char(text_line[pos - 1]))
- pos = -1;
- else if (_is_text_char(text_line[pos + p_key.length()]))
- pos = -1;
+ pos_from = pos + 1;
+ pos = -1;
}
if (pos != -1)
@@ -4590,6 +4679,24 @@ int TextEdit::num_lines_from(int p_line_from, int unhidden_amount) const {
return num_total;
}
+bool TextEdit::is_last_visible_line(int p_line) const {
+
+ ERR_FAIL_INDEX_V(p_line, text.size(), false);
+
+ if (p_line == text.size() - 1)
+ return true;
+
+ if (!is_hiding_enabled())
+ return false;
+
+ for (int i = p_line + 1; i < text.size(); i++) {
+ if (!is_line_hidden(i))
+ return false;
+ }
+
+ return true;
+}
+
int TextEdit::get_indent_level(int p_line) const {
ERR_FAIL_INDEX_V(p_line, text.size(), 0);
@@ -4785,6 +4892,8 @@ void TextEdit::undo() {
else
undo_stack_pos = undo_stack_pos->prev();
+ deselect();
+
TextOperation op = undo_stack_pos->get();
_do_text_op(op, true);
current_op.version = op.prev_version;
@@ -4819,6 +4928,8 @@ void TextEdit::redo() {
if (undo_stack_pos == NULL)
return; //nothing to do.
+ deselect();
+
TextOperation op = undo_stack_pos->get();
_do_text_op(op, false);
current_op.version = op.version;
@@ -5019,7 +5130,7 @@ void TextEdit::_confirm_completion() {
void TextEdit::_cancel_code_hint() {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0);
raised_from_completion = false;
completion_hint = "";
update();
@@ -5027,7 +5138,7 @@ void TextEdit::_cancel_code_hint() {
void TextEdit::_cancel_completion() {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 0);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 0);
raised_from_completion = false;
if (!completion_active)
return;
@@ -5202,7 +5313,7 @@ void TextEdit::query_code_comple() {
void TextEdit::set_code_hint(const String &p_hint) {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1);
raised_from_completion = true;
completion_hint = p_hint;
completion_hint_offset = -0xFFFF;
@@ -5211,7 +5322,7 @@ void TextEdit::set_code_hint(const String &p_hint) {
void TextEdit::code_complete(const Vector<String> &p_strings, bool p_forced) {
- VisualServer::get_singleton()->canvas_item_set_z(get_canvas_item(), 1);
+ VisualServer::get_singleton()->canvas_item_set_z_index(get_canvas_item(), 1);
raised_from_completion = true;
completion_strings = p_strings;
completion_active = true;
@@ -5485,7 +5596,9 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_readonly"), &TextEdit::is_readonly);
ClassDB::bind_method(D_METHOD("set_wrap", "enable"), &TextEdit::set_wrap);
- ClassDB::bind_method(D_METHOD("set_max_chars", "amount"), &TextEdit::set_max_chars);
+ ClassDB::bind_method(D_METHOD("is_wrapping"), &TextEdit::is_wrapping);
+ // ClassDB::bind_method(D_METHOD("set_max_chars", "amount"), &TextEdit::set_max_chars);
+ // ClassDB::bind_method(D_METHOD("get_max_char"), &TextEdit::get_max_chars);
ClassDB::bind_method(D_METHOD("set_context_menu_enabled", "enable"), &TextEdit::set_context_menu_enabled);
ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &TextEdit::is_context_menu_enabled);
@@ -5559,6 +5672,8 @@ void TextEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_scrolling"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hiding_enabled"), "set_hiding_enabled", "is_hiding_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "wrap_lines"), "set_wrap", "is_wrapping");
+ // ADD_PROPERTY(PropertyInfo(Variant::BOOL, "max_chars"), "set_max_chars", "get_max_chars");
ADD_GROUP("Caret", "caret_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "caret_block_mode"), "cursor_set_block_mode", "cursor_is_block_mode");
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index 320bb6d9fd..acbf41aa81 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXT_EDIT_H
#define TEXT_EDIT_H
@@ -209,6 +210,7 @@ class TextEdit : public Control {
//syntax coloring
HashMap<String, Color> keywords;
+ HashMap<String, Color> member_keywords;
Vector<ColorRegion> color_regions;
@@ -433,6 +435,7 @@ public:
void fold_all_lines();
void unhide_all_lines();
int num_lines_from(int p_line_from, int unhidden_amount) const;
+ bool is_last_visible_line(int p_line) const;
bool can_fold(int p_line) const;
bool is_folded(int p_line) const;
void fold_line(int p_line);
@@ -489,7 +492,10 @@ public:
bool is_readonly() const;
void set_max_chars(int p_max_chars);
+ int get_max_chars() const;
+
void set_wrap(bool p_wrap);
+ bool is_wrapping() const;
void clear();
@@ -541,6 +547,9 @@ public:
void add_color_region(const String &p_begin_key = String(), const String &p_end_key = String(), const Color &p_color = Color(), bool p_line_only = false);
void clear_colors();
+ void add_member_keyword(const String &p_keyword, const Color &p_color);
+ void clear_member_keywords();
+
int get_v_scroll() const;
void set_v_scroll(int p_scroll);
diff --git a/scene/gui/texture_button.cpp b/scene/gui/texture_button.cpp
index ec77fae1fa..07c9894611 100644
--- a/scene/gui/texture_button.cpp
+++ b/scene/gui/texture_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_button.h"
Size2 TextureButton::get_minimum_size() const {
diff --git a/scene/gui/texture_button.h b/scene/gui/texture_button.h
index c6b05703ed..1cf4b66413 100644
--- a/scene/gui/texture_button.h
+++ b/scene/gui/texture_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_BUTTON_H
#define TEXTURE_BUTTON_H
diff --git a/scene/gui/texture_progress.cpp b/scene/gui/texture_progress.cpp
index 5f0c7f7385..01b00c34ea 100644
--- a/scene/gui/texture_progress.cpp
+++ b/scene/gui/texture_progress.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_progress.h"
#include "engine.h"
diff --git a/scene/gui/texture_progress.h b/scene/gui/texture_progress.h
index ab1f42fe3b..77c3980e29 100644
--- a/scene/gui/texture_progress.h
+++ b/scene/gui/texture_progress.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_PROGRESS_H
#define TEXTURE_PROGRESS_H
diff --git a/scene/gui/texture_rect.cpp b/scene/gui/texture_rect.cpp
index 5b689cfce2..f4285525f6 100644
--- a/scene/gui/texture_rect.cpp
+++ b/scene/gui/texture_rect.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture_rect.h"
#include "servers/visual_server.h"
diff --git a/scene/gui/texture_rect.h b/scene/gui/texture_rect.h
index b6ccdff217..b684ac816c 100644
--- a/scene/gui/texture_rect.h
+++ b/scene/gui/texture_rect.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_FRAME_H
#define TEXTURE_FRAME_H
diff --git a/scene/gui/tool_button.cpp b/scene/gui/tool_button.cpp
index e86776af90..4220a6b5ce 100644
--- a/scene/gui/tool_button.cpp
+++ b/scene/gui/tool_button.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tool_button.h"
ToolButton::ToolButton() {
diff --git a/scene/gui/tool_button.h b/scene/gui/tool_button.h
index 14a7cdc2fe..b8be18e560 100644
--- a/scene/gui/tool_button.h
+++ b/scene/gui/tool_button.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TOOL_BUTTON_H
#define TOOL_BUTTON_H
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 08f1bdff3d..e12044fca2 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tree.h"
#include <limits.h>
@@ -44,12 +45,12 @@
void TreeItem::move_to_top() {
- if (!parent || parent->childs == this)
+ if (!parent || parent->children == this)
return; //already on top
TreeItem *prev = get_prev();
prev->next = next;
- next = parent->childs;
- parent->childs = this;
+ next = parent->children;
+ parent->children = this;
}
void TreeItem::move_to_bottom() {
@@ -64,7 +65,7 @@ void TreeItem::move_to_bottom() {
if (prev) {
prev->next = next;
} else {
- parent->childs = next;
+ parent->children = next;
}
last->next = this;
next = NULL;
@@ -367,10 +368,10 @@ TreeItem *TreeItem::get_next() {
TreeItem *TreeItem::get_prev() {
- if (!parent || parent->childs == this)
+ if (!parent || parent->children == this)
return NULL;
- TreeItem *prev = parent->childs;
+ TreeItem *prev = parent->children;
while (prev && prev->next != this)
prev = prev->next;
@@ -384,7 +385,7 @@ TreeItem *TreeItem::get_parent() {
TreeItem *TreeItem::get_children() {
- return childs;
+ return children;
}
TreeItem *TreeItem::get_prev_visible() {
@@ -401,10 +402,10 @@ TreeItem *TreeItem::get_prev_visible() {
} else {
current = prev;
- while (!current->collapsed && current->childs) {
+ while (!current->collapsed && current->children) {
//go to the very end
- current = current->childs;
+ current = current->children;
while (current->next)
current = current->next;
}
@@ -417,9 +418,9 @@ TreeItem *TreeItem::get_next_visible() {
TreeItem *current = this;
- if (!current->collapsed && current->childs) {
+ if (!current->collapsed && current->children) {
- current = current->childs;
+ current = current->children;
} else if (current->next) {
@@ -443,7 +444,7 @@ TreeItem *TreeItem::get_next_visible() {
void TreeItem::remove_child(TreeItem *p_item) {
ERR_FAIL_NULL(p_item);
- TreeItem **c = &childs;
+ TreeItem **c = &children;
while (*c) {
@@ -783,6 +784,10 @@ void TreeItem::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_disable_folding", "disable"), &TreeItem::set_disable_folding);
ClassDB::bind_method(D_METHOD("is_folding_disabled"), &TreeItem::is_folding_disabled);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "collapsed"), "set_collapsed", "is_collapsed");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disable_folding"), "set_disable_folding", "is_folding_disabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "custom_minimum_height", PROPERTY_HINT_RANGE, "0,1000,1"), "set_custom_minimum_height", "get_custom_minimum_height");
+
BIND_ENUM_CONSTANT(CELL_MODE_STRING);
BIND_ENUM_CONSTANT(CELL_MODE_CHECK);
BIND_ENUM_CONSTANT(CELL_MODE_RANGE);
@@ -797,16 +802,16 @@ void TreeItem::_bind_methods() {
void TreeItem::clear_children() {
- TreeItem *c = childs;
+ TreeItem *c = children;
while (c) {
TreeItem *aux = c;
c = c->get_next();
- aux->parent = 0; // so it wont try to recursively autoremove from me in here
+ aux->parent = 0; // so it won't try to recursively autoremove from me in here
memdelete(aux);
}
- childs = 0;
+ children = 0;
};
TreeItem::TreeItem(Tree *p_tree) {
@@ -818,7 +823,7 @@ TreeItem::TreeItem(Tree *p_tree) {
parent = 0; // parent item
next = 0; // next in list
- childs = 0; //child items
+ children = 0; //child items
}
TreeItem::~TreeItem() {
@@ -915,6 +920,7 @@ int Tree::compute_item_height(TreeItem *p_item) const {
if (p_item == root && hide_root)
return 0;
+ ERR_FAIL_COND_V(cache.font.is_null(), 0);
int height = cache.font->get_height();
for (int i = 0; i < columns.size(); i++) {
@@ -971,9 +977,9 @@ int Tree::get_item_height(TreeItem *p_item) const {
int height = compute_item_height(p_item);
height += cache.vseparation;
- if (!p_item->collapsed) { /* if not collapsed, check the childs */
+ if (!p_item->collapsed) { /* if not collapsed, check the children */
- TreeItem *c = p_item->childs;
+ TreeItem *c = p_item->children;
while (c) {
@@ -988,6 +994,8 @@ int Tree::get_item_height(TreeItem *p_item) const {
void Tree::draw_item_rect(const TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color) {
+ ERR_FAIL_COND(cache.font.is_null());
+
Rect2i rect = p_rect;
Ref<Font> font = cache.font;
String text = p_cell.text;
@@ -1057,6 +1065,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
//draw separation.
//if (p_item->get_parent()!=root || !hide_root)
+ ERR_FAIL_COND_V(cache.font.is_null(), -1);
Ref<Font> font = cache.font;
int font_ascent = font->get_ascent();
@@ -1377,7 +1386,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
}
}
- if (!p_item->disable_folding && !hide_folding && p_item->childs) { //has childs, draw the guide box
+ if (!p_item->disable_folding && !hide_folding && p_item->children) { //has children, draw the guide box
Ref<Texture> arrow;
@@ -1404,9 +1413,9 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
children_pos.y += htotal;
}
- if (!p_item->collapsed) { /* if not collapsed, check the childs */
+ if (!p_item->collapsed) { /* if not collapsed, check the children */
- TreeItem *c = p_item->childs;
+ TreeItem *c = p_item->children;
while (c) {
@@ -1423,17 +1432,33 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
#endif
Point2i parent_pos = Point2i(parent_ofs - cache.arrow->get_width() / 2, p_pos.y + label_h / 2 + cache.arrow->get_height() / 2) - cache.offset + p_draw_ofs;
- VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x - Math::floor(line_width / 2), root_pos.y), cache.relationship_line_color, line_width);
- VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color, line_width);
+
+ if (root_pos.y + line_width >= 0) {
+ VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x - Math::floor(line_width / 2), root_pos.y), cache.relationship_line_color, line_width);
+ VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color, line_width);
+ }
+
+ if (htotal < 0) {
+ return -1;
+ }
}
- int child_h = draw_item(children_pos, p_draw_ofs, p_draw_size, c);
+ if (htotal >= 0) {
+ int child_h = draw_item(children_pos, p_draw_ofs, p_draw_size, c);
- if (child_h < 0 && cache.draw_relationship_lines == 0)
- return -1; // break, stop drawing, no need to anymore
+ if (child_h < 0) {
+ if (cache.draw_relationship_lines == 0) {
+ return -1; // break, stop drawing, no need to anymore
+ } else {
+ htotal = -1;
+ children_pos.y = cache.offset.y + p_draw_size.height;
+ }
+ } else {
+ htotal += child_h;
+ children_pos.y += child_h;
+ }
+ }
- htotal += child_h;
- children_pos.y += child_h;
c = c->next;
}
}
@@ -1544,7 +1569,7 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c
*r_in_range = false;
}
- TreeItem *c = p_current->childs;
+ TreeItem *c = p_current->children;
while (c) {
@@ -1610,7 +1635,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
if (!p_item->disable_folding && !hide_folding && (p_pos.x >= x_ofs && p_pos.x < (x_ofs + cache.item_margin))) {
- if (p_item->childs)
+ if (p_item->children)
p_item->set_collapsed(!p_item->is_collapsed());
return -1; //handled!
@@ -1917,9 +1942,9 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
new_pos.y -= item_h;
}
- if (!p_item->collapsed) { /* if not collapsed, check the childs */
+ if (!p_item->collapsed) { /* if not collapsed, check the children */
- TreeItem *c = p_item->childs;
+ TreeItem *c = p_item->children;
while (c) {
@@ -2352,8 +2377,6 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
last_keypress = 0;
}
} break;
-
- last_keypress = 0;
}
}
@@ -2779,6 +2802,7 @@ void Tree::update_scrollbars() {
int Tree::_get_title_button_height() const {
+ ERR_FAIL_COND_V(cache.font.is_null() || cache.title_button.is_null(), 0);
return show_column_titles ? cache.font->get_height() + cache.title_button->get_minimum_size().height : 0;
}
@@ -2964,7 +2988,7 @@ TreeItem *Tree::create_item(TreeItem *p_parent, int p_idx) {
ti->cells.resize(columns.size());
TreeItem *prev = NULL;
- TreeItem *c = p_parent->childs;
+ TreeItem *c = p_parent->children;
int idx = 0;
while (c) {
@@ -2979,7 +3003,7 @@ TreeItem *Tree::create_item(TreeItem *p_parent, int p_idx) {
if (prev)
prev->next = ti;
else
- p_parent->childs = ti;
+ p_parent->children = ti;
ti->parent = p_parent;
} else {
@@ -3012,8 +3036,8 @@ TreeItem *Tree::get_last_item() {
if (last->next)
last = last->next;
- else if (last->childs)
- last = last->childs;
+ else if (last->children)
+ last = last->children;
else
break;
}
@@ -3046,6 +3070,7 @@ void Tree::item_selected(int p_column, TreeItem *p_item) {
p_item->cells[p_column].selected = true;
//emit_signal("multi_selected",p_item,p_column,true); - NO this is for TreeItem::select
+ selected_col = p_column;
} else {
select_single_item(p_item, root, p_column);
@@ -3066,12 +3091,19 @@ void Tree::set_select_mode(SelectMode p_mode) {
select_mode = p_mode;
}
+Tree::SelectMode Tree::get_select_mode() const {
+
+ return select_mode;
+}
+
void Tree::deselect_all() {
TreeItem *item = get_next_selected(get_root());
while (item) {
item->deselect(selected_col);
+ TreeItem *prev_item = item;
item = get_next_selected(get_root());
+ ERR_FAIL_COND(item == prev_item);
}
selected_item = NULL;
@@ -3119,6 +3151,11 @@ void Tree::set_hide_root(bool p_enabled) {
update();
}
+bool Tree::is_root_hidden() const {
+
+ return hide_root;
+}
+
void Tree::set_column_min_width(int p_column, int p_min_width) {
ERR_FAIL_INDEX(p_column, columns.size());
@@ -3171,9 +3208,9 @@ TreeItem *Tree::get_next_selected(TreeItem *p_item) {
p_item = root;
} else {
- if (p_item->childs) {
+ if (p_item->children) {
- p_item = p_item->childs;
+ p_item = p_item->children;
} else if (p_item->next) {
@@ -3288,9 +3325,9 @@ int Tree::get_item_offset(TreeItem *p_item) const {
ofs += compute_item_height(it) + cache.vseparation;
- if (it->childs && !it->collapsed) {
+ if (it->children && !it->collapsed) {
- it = it->childs;
+ it = it->children;
} else if (it->next) {
@@ -3511,7 +3548,7 @@ TreeItem *Tree::_find_item_at_pos(TreeItem *p_item, const Point2 &p_pos, int &r_
}
if (p_item->is_collapsed())
- return NULL; // do not try childs, it's collapsed
+ return NULL; // do not try children, it's collapsed
TreeItem *n = p_item->get_children();
while (n) {
@@ -3739,11 +3776,13 @@ void Tree::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_column_width", "column"), &Tree::get_column_width);
ClassDB::bind_method(D_METHOD("set_hide_root", "enable"), &Tree::set_hide_root);
+ ClassDB::bind_method(D_METHOD("is_root_hidden"), &Tree::is_root_hidden);
ClassDB::bind_method(D_METHOD("get_next_selected", "from"), &Tree::_get_next_selected);
ClassDB::bind_method(D_METHOD("get_selected"), &Tree::get_selected);
ClassDB::bind_method(D_METHOD("get_selected_column"), &Tree::get_selected_column);
ClassDB::bind_method(D_METHOD("get_pressed_button"), &Tree::get_pressed_button);
ClassDB::bind_method(D_METHOD("set_select_mode", "mode"), &Tree::set_select_mode);
+ ClassDB::bind_method(D_METHOD("get_select_mode"), &Tree::get_select_mode);
ClassDB::bind_method(D_METHOD("set_columns", "amount"), &Tree::set_columns);
ClassDB::bind_method(D_METHOD("get_columns"), &Tree::get_columns);
@@ -3777,6 +3816,14 @@ void Tree::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_allow_reselect", "allow"), &Tree::set_allow_reselect);
ClassDB::bind_method(D_METHOD("get_allow_reselect"), &Tree::get_allow_reselect);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "columns"), "set_columns", "get_columns");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_reselect"), "set_allow_reselect", "get_allow_reselect");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_rmb_select"), "set_allow_rmb_select", "get_allow_rmb_select");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_folding"), "set_hide_folding", "is_folding_hidden");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "hide_root"), "set_hide_root", "is_root_hidden");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "drop_mode_flags", PROPERTY_HINT_FLAGS, "On Item,In between"), "set_drop_mode_flags", "get_drop_mode_flags");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "select_mode", PROPERTY_HINT_ENUM, "Single,Row,Multi"), "set_select_mode", "get_select_mode");
+
ADD_SIGNAL(MethodInfo("item_selected"));
ADD_SIGNAL(MethodInfo("cell_selected"));
ADD_SIGNAL(MethodInfo("multi_selected", PropertyInfo(Variant::OBJECT, "item"), PropertyInfo(Variant::INT, "column"), PropertyInfo(Variant::BOOL, "selected")));
diff --git a/scene/gui/tree.h b/scene/gui/tree.h
index a6ebf6c3da..2a8546a743 100644
--- a/scene/gui/tree.h
+++ b/scene/gui/tree.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TREE_H
#define TREE_H
@@ -143,13 +144,13 @@ private:
Vector<Cell> cells;
- bool collapsed; // wont show childs
+ bool collapsed; // won't show children
bool disable_folding;
int custom_min_height;
TreeItem *parent; // parent item
TreeItem *next; // next in list
- TreeItem *childs; //child items
+ TreeItem *children; //child items
Tree *tree; //tree (for reference)
TreeItem(Tree *p_tree);
@@ -541,11 +542,13 @@ public:
int get_column_width(int p_column) const;
void set_hide_root(bool p_enabled);
+ bool is_root_hidden() const;
TreeItem *get_next_selected(TreeItem *p_item);
TreeItem *get_selected() const;
int get_selected_column() const;
int get_pressed_button() const;
void set_select_mode(SelectMode p_mode);
+ SelectMode get_select_mode() const;
void deselect_all();
bool is_anything_selected();
diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp
index 06be83bf08..4eee0126d8 100644
--- a/scene/gui/video_player.cpp
+++ b/scene/gui/video_player.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "video_player.h"
#include "os/os.h"
@@ -37,11 +38,6 @@ int VideoPlayer::sp_get_channel_count() const {
return playback->get_channels();
}
-void VideoPlayer::sp_set_mix_rate(int p_rate) {
-
- server_mix_rate = p_rate;
-}
-
bool VideoPlayer::mix(AudioFrame *p_buffer, int p_frames) {
// Check the amount resampler can really handle.
@@ -240,7 +236,7 @@ void VideoPlayer::set_stream(const Ref<VideoStream> &p_stream) {
AudioServer::get_singleton()->lock();
if (channels > 0)
- resampler.setup(channels, playback->get_mix_rate(), server_mix_rate, buffering_ms, 0);
+ resampler.setup(channels, playback->get_mix_rate(), AudioServer::get_singleton()->get_mix_rate(), buffering_ms, 0);
else
resampler.clear();
AudioServer::get_singleton()->unlock();
@@ -475,9 +471,13 @@ void VideoPlayer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "stream", PROPERTY_HINT_RESOURCE_TYPE, "VideoStream"), "set_stream", "get_stream");
//ADD_PROPERTY( PropertyInfo(Variant::BOOL, "stream/loop"), "set_loop", "has_loop") ;
ADD_PROPERTY(PropertyInfo(Variant::REAL, "volume_db", PROPERTY_HINT_RANGE, "-80,24,0.01"), "set_volume_db", "get_volume_db");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "volume", PROPERTY_HINT_EXP_RANGE, "0,15,0.01", 0), "set_volume", "get_volume");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autoplay"), "set_autoplay", "has_autoplay");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused"), "set_paused", "is_paused");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand"), "set_expand", "has_expand");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "buffering_msec", PROPERTY_HINT_RANGE, "10,1000"), "set_buffering_msec", "get_buffering_msec");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "stream_position", PROPERTY_HINT_RANGE, "0,1280000,0.1", 0), "set_stream_position", "get_stream_position");
+
ADD_PROPERTY(PropertyInfo(Variant::STRING, "bus", PROPERTY_HINT_ENUM, ""), "set_bus", "get_bus");
}
@@ -493,7 +493,6 @@ VideoPlayer::VideoPlayer() {
bus_index = 0;
buffering_ms = 500;
- server_mix_rate = 44100;
// internal_stream.player=this;
// stream_rid=AudioServer::get_singleton()->audio_stream_create(&internal_stream);
diff --git a/scene/gui/video_player.h b/scene/gui/video_player.h
index e772851b0e..5c379b5620 100644
--- a/scene/gui/video_player.h
+++ b/scene/gui/video_player.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VIDEO_PLAYER_H
#define VIDEO_PLAYER_H
@@ -49,7 +50,6 @@ class VideoPlayer : public Control {
Ref<VideoStream> stream;
int sp_get_channel_count() const;
- void sp_set_mix_rate(int p_rate); //notify the stream of the mix rate
bool mix(AudioFrame *p_buffer, int p_frames);
RID stream_rid;
@@ -68,7 +68,6 @@ class VideoPlayer : public Control {
bool expand;
bool loops;
int buffering_ms;
- int server_mix_rate;
int audio_track;
int bus_index;
diff --git a/scene/gui/viewport_container.cpp b/scene/gui/viewport_container.cpp
index e949c20c36..ac5e6020eb 100644
--- a/scene/gui/viewport_container.cpp
+++ b/scene/gui/viewport_container.cpp
@@ -27,8 +27,10 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "viewport_container.h"
+#include "core/engine.h"
#include "scene/main/viewport.h"
Size2 ViewportContainer::get_minimum_size() const {
@@ -138,8 +140,34 @@ void ViewportContainer::_notification(int p_what) {
}
}
+void ViewportContainer::_input(const Ref<InputEvent> &p_event) {
+
+ if (Engine::get_singleton()->is_editor_hint())
+ return;
+
+ Transform2D xform = get_global_transform();
+
+ if (stretch) {
+ Transform2D scale_xf;
+ scale_xf.scale(Vector2(shrink, shrink));
+ xform *= scale_xf;
+ }
+
+ Ref<InputEvent> ev = p_event->xformed_by(xform.affine_inverse());
+
+ for (int i = 0; i < get_child_count(); i++) {
+
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
+ if (!c || c->is_input_disabled())
+ continue;
+
+ c->input(ev);
+ }
+}
+
void ViewportContainer::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_input", "event"), &ViewportContainer::_input);
ClassDB::bind_method(D_METHOD("set_stretch", "enable"), &ViewportContainer::set_stretch);
ClassDB::bind_method(D_METHOD("is_stretch_enabled"), &ViewportContainer::is_stretch_enabled);
@@ -154,4 +182,5 @@ ViewportContainer::ViewportContainer() {
stretch = false;
shrink = 1;
+ set_process_input(true);
}
diff --git a/scene/gui/viewport_container.h b/scene/gui/viewport_container.h
index c28b3075aa..45c4cd03a1 100644
--- a/scene/gui/viewport_container.h
+++ b/scene/gui/viewport_container.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VIEWPORTCONTAINER_H
#define VIEWPORTCONTAINER_H
@@ -47,6 +48,7 @@ public:
void set_stretch(bool p_enable);
bool is_stretch_enabled() const;
+ void _input(const Ref<InputEvent> &p_event);
void set_stretch_shrink(int p_shrink);
int get_stretch_shrink() const;
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp
index 939de346eb..31d45d8e4c 100644
--- a/scene/main/canvas_layer.cpp
+++ b/scene/main/canvas_layer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "canvas_layer.h"
#include "viewport.h"
@@ -253,8 +254,11 @@ void CanvasLayer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_RANGE, "-128,128,1"), "set_layer", "get_layer");
//ADD_PROPERTY( PropertyInfo(Variant::MATRIX32,"transform",PROPERTY_HINT_RANGE),"set_transform","get_transform") ;
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset"), "set_offset", "get_offset");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation"), "set_rotation_degrees", "get_rotation_degrees");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation_degrees", PROPERTY_HINT_RANGE, "-1440,1440,0.1", PROPERTY_USAGE_EDITOR), "set_rotation_degrees", "get_rotation_degrees");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "rotation", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_rotation", "get_rotation");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "scale"), "set_scale", "get_scale");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "custom_viewport", PROPERTY_HINT_RESOURCE_TYPE, "Viewport", 0), "set_custom_viewport", "get_custom_viewport");
}
CanvasLayer::CanvasLayer() {
diff --git a/scene/main/canvas_layer.h b/scene/main/canvas_layer.h
index 81d2616cdc..c3352a6dba 100644
--- a/scene/main/canvas_layer.h
+++ b/scene/main/canvas_layer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CANVAS_LAYER_H
#define CANVAS_LAYER_H
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index e99a21fbce..3d58aa65f8 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "http_request.h"
#include "version.h"
@@ -523,6 +524,7 @@ void HTTPRequest::_bind_methods() {
ClassDB::bind_method(D_METHOD("_redirect_request"), &HTTPRequest::_redirect_request);
ClassDB::bind_method(D_METHOD("_request_done"), &HTTPRequest::_request_done);
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "download_file", PROPERTY_HINT_FILE), "set_download_file", "get_download_file");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_threads"), "set_use_threads", "is_using_threads");
ADD_PROPERTY(PropertyInfo(Variant::INT, "body_size_limit", PROPERTY_HINT_RANGE, "-1,2000000000"), "set_body_size_limit", "get_body_size_limit");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_redirects", PROPERTY_HINT_RANGE, "-1,64"), "set_max_redirects", "get_max_redirects");
diff --git a/scene/main/http_request.h b/scene/main/http_request.h
index 1777a7f8f1..eb5d020bc5 100644
--- a/scene/main/http_request.h
+++ b/scene/main/http_request.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef HTTPREQUEST_H
#define HTTPREQUEST_H
diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp
index a2c29d8209..24b04c0c4a 100644
--- a/scene/main/instance_placeholder.cpp
+++ b/scene/main/instance_placeholder.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "instance_placeholder.h"
#include "io/resource_loader.h"
diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h
index 9b2f1e1168..d70f1318ea 100644
--- a/scene/main/instance_placeholder.h
+++ b/scene/main/instance_placeholder.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef INSTANCE_PLACEHOLDER_H
#define INSTANCE_PLACEHOLDER_H
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index d82000e3fa..ac85dd64af 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "node.h"
#include "core/core_string_names.h"
@@ -183,7 +184,7 @@ void Node::_propagate_ready() {
}
void Node::_propagate_enter_tree() {
- // this needs to happen to all childs before any enter_tree
+ // this needs to happen to all children before any enter_tree
if (data.parent) {
data.tree = data.parent->data.tree;
@@ -274,7 +275,7 @@ void Node::_propagate_exit_tree() {
get_script_instance()->call_multilevel(SceneStringNames::get_singleton()->_exit_tree, NULL, 0);
}
- emit_signal(SceneStringNames::get_singleton()->tree_exited);
+ emit_signal(SceneStringNames::get_singleton()->tree_exiting);
notification(NOTIFICATION_EXIT_TREE, true);
if (data.tree)
@@ -296,6 +297,8 @@ void Node::_propagate_exit_tree() {
data.ready_notified = false;
data.tree = NULL;
data.depth = -1;
+
+ emit_signal(SceneStringNames::get_singleton()->tree_exited);
}
void Node::move_child(Node *p_child, int p_pos) {
@@ -1199,13 +1202,13 @@ void Node::_validate_child_name(Node *p_child, bool p_force_human_readable) {
unique = false;
} else {
//check if exists
- Node **childs = data.children.ptrw();
+ Node **children = data.children.ptrw();
int cc = data.children.size();
for (int i = 0; i < cc; i++) {
- if (childs[i] == p_child)
+ if (children[i] == p_child)
continue;
- if (childs[i]->data.name == p_child->data.name) {
+ if (children[i]->data.name == p_child->data.name) {
unique = false;
break;
}
@@ -1308,7 +1311,7 @@ void Node::_add_child_nocheck(Node *p_child, const StringName &p_name) {
}
/* Notify */
- //recognize childs created in this node constructor
+ //recognize children created in this node constructor
p_child->data.parent_owned = data.in_constructor;
add_child_notify(p_child);
}
@@ -2168,7 +2171,16 @@ Node *Node::_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap) const
value = Array(value).duplicate();
}
- current_node->set(name, value);
+ if (E->get().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());
+
+ } else {
+
+ current_node->set(name, value);
+ }
}
}
@@ -2880,7 +2892,7 @@ void Node::_bind_methods() {
#ifdef TOOLS_ENABLED
ClassDB::bind_method(D_METHOD("_set_import_path", "import_path"), &Node::set_import_path);
ClassDB::bind_method(D_METHOD("_get_import_path"), &Node::get_import_path);
- ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "_import_path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_import_path", "_get_import_path");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::NODE_PATH, "_import_path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_import_path", "_get_import_path");
#endif
@@ -2942,6 +2954,7 @@ void Node::_bind_methods() {
ADD_SIGNAL(MethodInfo("renamed"));
ADD_SIGNAL(MethodInfo("tree_entered"));
+ ADD_SIGNAL(MethodInfo("tree_exiting"));
ADD_SIGNAL(MethodInfo("tree_exited"));
//ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/process" ),"set_process","is_processing") ;
@@ -2950,7 +2963,10 @@ void Node::_bind_methods() {
//ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "process/unhandled_input" ), "set_process_unhandled_input","is_processing_unhandled_input" ) ;
ADD_GROUP("Pause", "pause_");
ADD_PROPERTYNZ(PropertyInfo(Variant::INT, "pause_mode", PROPERTY_HINT_ENUM, "Inherit,Stop,Process"), "set_pause_mode", "get_pause_mode");
- ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "editor/display_folded", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_display_folded", "is_displayed_folded");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::BOOL, "editor/display_folded", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_display_folded", "is_displayed_folded");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "name", PROPERTY_HINT_NONE, "", 0), "set_name", "get_name");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "filename", PROPERTY_HINT_NONE, "", 0), "set_filename", "get_filename");
+ ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "owner", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_owner", "get_owner");
BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta")));
BIND_VMETHOD(MethodInfo("_physics_process", PropertyInfo(Variant::REAL, "delta")));
diff --git a/scene/main/node.h b/scene/main/node.h
index 2aca84324d..dc6bda4621 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef NODE_H
#define NODE_H
diff --git a/scene/main/resource_preloader.cpp b/scene/main/resource_preloader.cpp
index 76fa40cc7c..dbe7daa604 100644
--- a/scene/main/resource_preloader.cpp
+++ b/scene/main/resource_preloader.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "resource_preloader.h"
void ResourcePreloader::_set_resources(const Array &p_data) {
@@ -160,7 +161,7 @@ void ResourcePreloader::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_resource", "name"), &ResourcePreloader::get_resource);
ClassDB::bind_method(D_METHOD("get_resource_list"), &ResourcePreloader::_get_resource_list);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "resources", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_resources", "_get_resources");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "resources", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_resources", "_get_resources");
}
ResourcePreloader::ResourcePreloader() {
diff --git a/scene/main/resource_preloader.h b/scene/main/resource_preloader.h
index 479cde51ae..98c7b21f37 100644
--- a/scene/main/resource_preloader.h
+++ b/scene/main/resource_preloader.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RESOURCE_PRELOADER_H
#define RESOURCE_PRELOADER_H
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 07f93fa52b..55ae9fe1ec 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scene_tree.h"
#include "editor/editor_node.h"
@@ -54,6 +55,8 @@ void SceneTreeTimer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_time_left", "time"), &SceneTreeTimer::set_time_left);
ClassDB::bind_method(D_METHOD("get_time_left"), &SceneTreeTimer::get_time_left);
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_left"), "set_time_left", "get_time_left");
+
ADD_SIGNAL(MethodInfo("timeout"));
}
@@ -1683,6 +1686,11 @@ void SceneTree::set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_network_
}
}
+Ref<NetworkedMultiplayerPeer> SceneTree::get_network_peer() const {
+
+ return network_peer;
+}
+
bool SceneTree::is_network_server() const {
ERR_FAIL_COND_V(!network_peer.is_valid(), false);
@@ -2126,6 +2134,7 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_group", "name"), &SceneTree::has_group);
ClassDB::bind_method(D_METHOD("set_auto_accept_quit", "enabled"), &SceneTree::set_auto_accept_quit);
+ ClassDB::bind_method(D_METHOD("set_quit_on_go_back", "enabled"), &SceneTree::set_quit_on_go_back);
ClassDB::bind_method(D_METHOD("set_debug_collisions_hint", "enable"), &SceneTree::set_debug_collisions_hint);
ClassDB::bind_method(D_METHOD("is_debugging_collisions_hint"), &SceneTree::is_debugging_collisions_hint);
@@ -2186,6 +2195,7 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("_change_scene"), &SceneTree::_change_scene);
ClassDB::bind_method(D_METHOD("set_network_peer", "peer"), &SceneTree::set_network_peer);
+ ClassDB::bind_method(D_METHOD("get_network_peer"), &SceneTree::get_network_peer);
ClassDB::bind_method(D_METHOD("is_network_server"), &SceneTree::is_network_server);
ClassDB::bind_method(D_METHOD("has_network_peer"), &SceneTree::has_network_peer);
ClassDB::bind_method(D_METHOD("get_network_connected_peers"), &SceneTree::get_network_connected_peers);
@@ -2202,6 +2212,18 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_use_font_oversampling", "enable"), &SceneTree::set_use_font_oversampling);
ClassDB::bind_method(D_METHOD("is_using_font_oversampling"), &SceneTree::is_using_font_oversampling);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_collisions_hint"), "set_debug_collisions_hint", "is_debugging_collisions_hint");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "debug_navigation_hint"), "set_debug_navigation_hint", "is_debugging_navigation_hint");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused"), "set_pause", "is_paused");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_network_connections"), "set_refuse_new_network_connections", "is_refusing_new_network_connections");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_font_oversampling"), "set_use_font_oversampling", "is_using_font_oversampling");
+#ifdef TOOLS_ENABLED
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "edited_scene_root", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_edited_scene_root", "get_edited_scene_root");
+#endif
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "current_scene", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "set_current_scene", "get_current_scene");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "network_peer", PROPERTY_HINT_RESOURCE_TYPE, "NetworkedMultiplayerPeer", 0), "set_network_peer", "get_network_peer");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "root", PROPERTY_HINT_RESOURCE_TYPE, "Node", 0), "", "get_root");
+
ADD_SIGNAL(MethodInfo("tree_changed"));
ADD_SIGNAL(MethodInfo("node_added", PropertyInfo(Variant::OBJECT, "node")));
ADD_SIGNAL(MethodInfo("node_removed", PropertyInfo(Variant::OBJECT, "node")));
@@ -2349,7 +2371,7 @@ SceneTree::SceneTree() {
ProjectSettings::get_singleton()->set("rendering/environment/default_environment", "");
} else {
//file was erased, notify user.
- ERR_PRINTS(RTR("Default Environment as specified in Project Setings (Rendering -> Environment -> Default Environment) could not be loaded."));
+ ERR_PRINTS(RTR("Default Environment as specified in Project Settings (Rendering -> Environment -> Default Environment) could not be loaded."));
}
}
}
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index dab446e226..c5357762ec 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_MAIN_LOOP_H
#define SCENE_MAIN_LOOP_H
@@ -450,6 +451,7 @@ public:
//network API
void set_network_peer(const Ref<NetworkedMultiplayerPeer> &p_network_peer);
+ Ref<NetworkedMultiplayerPeer> get_network_peer() const;
bool is_network_server() const;
bool has_network_peer() const;
int get_network_unique_id() const;
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index 90cec07f56..ad2cdbfd0f 100755
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "timer.h"
#include "engine.h"
@@ -203,6 +204,8 @@ void Timer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time", PROPERTY_HINT_EXP_RANGE, "0.01,4096,0.01"), "set_wait_time", "get_wait_time");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_shot"), "set_one_shot", "is_one_shot");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autostart"), "set_autostart", "has_autostart");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "paused", PROPERTY_HINT_NONE, "", 0), "set_paused", "is_paused");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "time_left", PROPERTY_HINT_NONE, "", 0), "", "get_time_left");
BIND_ENUM_CONSTANT(TIMER_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(TIMER_PROCESS_IDLE);
diff --git a/scene/main/timer.h b/scene/main/timer.h
index 8c15e2eac7..410d985407 100755
--- a/scene/main/timer.h
+++ b/scene/main/timer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TIMER_H
#define TIMER_H
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 78706ee14a..1ff1f4b6d8 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "viewport.h"
#include "os/input.h"
@@ -195,8 +196,6 @@ void Viewport::_update_stretch_transform() {
if (size_override_stretch && size_override) {
- //print_line("sive override size "+size_override_size);
- //print_line("rect size "+size);
stretch_transform = Transform2D();
Size2 scale = size / (size_override_size + size_override_margin * 2);
stretch_transform.scale(scale);
@@ -210,114 +209,6 @@ void Viewport::_update_stretch_transform() {
_update_global_transform();
}
-void Viewport::_update_rect() {
-
- if (!is_inside_tree())
- return;
-
- /*if (!render_target && parent_control) {
-
- Control *c = parent_control;
-
- rect.pos=Point2();
- rect.size=c->get_size();
- }*/
- /*
- VisualServer::ViewportRect vr;
- vr.x=rect.pos.x;
- vr.y=rect.pos.y;
-
- if (render_target) {
- vr.x=0;
- vr.y=0;
- }
- vr.width=rect.size.width;
- vr.height=rect.size.height;
-
- VisualServer::get_singleton()->viewport_set_rect(viewport,vr);
- last_vp_rect=rect;
-
- if (canvas_item.is_valid()) {
- VisualServer::get_singleton()->canvas_item_set_custom_rect(canvas_item,true,rect);
- }
-
- emit_signal("size_changed");
- texture->emit_changed();
-*/
-}
-
-void Viewport::_parent_resized() {
-
- _update_rect();
-}
-
-void Viewport::_parent_draw() {
-}
-
-void Viewport::_parent_visibility_changed() {
-
- /*
- if (parent_control) {
-
- Control *c = parent_control;
- VisualServer::get_singleton()->canvas_item_set_visible(canvas_item,c->is_visible_in_tree());
-
- _update_listener();
- _update_listener_2d();
- }
-*/
-}
-
-void Viewport::_vp_enter_tree() {
-
- /* if (parent_control) {
-
- Control *cparent=parent_control;
- RID parent_ci = cparent->get_canvas_item();
- ERR_FAIL_COND(!parent_ci.is_valid());
- canvas_item = VisualServer::get_singleton()->canvas_item_create();
-
- VisualServer::get_singleton()->canvas_item_set_parent(canvas_item,parent_ci);
- VisualServer::get_singleton()->canvas_item_set_visible(canvas_item,false);
- //VisualServer::get_singleton()->canvas_item_attach_viewport(canvas_item,viewport);
- parent_control->connect("resized",this,"_parent_resized");
- parent_control->connect("visibility_changed",this,"_parent_visibility_changed");
- } else if (!parent){
-
- //VisualServer::get_singleton()->viewport_attach_to_screen(viewport,0);
-
- }
-*/
-}
-
-void Viewport::_vp_exit_tree() {
-
- /*
- if (parent_control) {
-
- parent_control->disconnect("resized",this,"_parent_resized");
- }
-
- if (parent_control) {
-
- parent_control->disconnect("visibility_changed",this,"_parent_visibility_changed");
- }
-
- if (canvas_item.is_valid()) {
-
- VisualServer::get_singleton()->free(canvas_item);
- canvas_item=RID();
-
- }
-
- if (!parent) {
-
- VisualServer::get_singleton()->viewport_detach(viewport);
-
- }
-*/
-}
-
void Viewport::update_worlds() {
if (!is_inside_tree())
@@ -375,7 +266,6 @@ void Viewport::_notification(int p_what) {
_update_listener();
_update_listener_2d();
- _update_rect();
find_world_2d()->_register_viewport(this, Rect2());
@@ -435,11 +325,6 @@ void Viewport::_notification(int p_what) {
if (world_2d.is_valid())
world_2d->_remove_viewport(this);
- /*
- if (!render_target)
- _vp_exit_tree();
- */
-
VisualServer::get_singleton()->viewport_set_scenario(viewport, RID());
// SpatialSoundServer::get_singleton()->listener_set_space(internal_listener, RID());
VisualServer::get_singleton()->viewport_remove_canvas(viewport, current_canvas);
@@ -678,6 +563,20 @@ void Viewport::_notification(int p_what) {
}
} break;
+ case SceneTree::NOTIFICATION_WM_FOCUS_OUT: {
+ if (gui.mouse_focus) {
+ //if mouse is being pressed, send a release event
+ Ref<InputEventMouseButton> mb;
+ mb.instance();
+ mb->set_position(gui.mouse_focus->get_local_mouse_position());
+ mb->set_global_position(gui.mouse_focus->get_local_mouse_position());
+ mb->set_button_index(gui.mouse_focus_button);
+ mb->set_pressed(false);
+ Control *c = gui.mouse_focus;
+ gui.mouse_focus = NULL;
+ c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
+ }
+ } break;
}
}
@@ -703,7 +602,6 @@ void Viewport::set_size(const Size2 &p_size) {
size = p_size.floor();
VS::get_singleton()->viewport_set_size(viewport, size.width, size.height);
- _update_rect();
_update_stretch_transform();
emit_signal("size_changed");
@@ -1152,7 +1050,7 @@ void Viewport::set_size_override(bool p_enable, const Size2 &p_size, const Vecto
size_override_size = p_size;
}
size_override_margin = p_margin;
- _update_rect();
+
_update_stretch_transform();
emit_signal("size_changed");
}
@@ -1171,9 +1069,6 @@ void Viewport::set_size_override_stretch(bool p_enable) {
return;
size_override_stretch = p_enable;
- if (size_override) {
- _update_rect();
- }
_update_stretch_transform();
}
@@ -2376,12 +2271,9 @@ List<Control *>::Element *Viewport::_gui_show_modal(Control *p_control) {
mb->set_global_position(gui.mouse_focus->get_local_mouse_position());
mb->set_button_index(gui.mouse_focus_button);
mb->set_pressed(false);
- gui.mouse_focus->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
-
- //if (gui.mouse_over == gui.mouse_focus) {
- // gui.mouse_focus->notification(Control::NOTIFICATION_MOUSE_EXIT);
- //}
+ Control *c = gui.mouse_focus;
gui.mouse_focus = NULL;
+ c->call_multilevel(SceneStringNames::get_singleton()->_gui_input, mb);
}
return gui.modal_stack.back();
@@ -2672,9 +2564,6 @@ void Viewport::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_transparent_background", "enable"), &Viewport::set_transparent_background);
ClassDB::bind_method(D_METHOD("has_transparent_background"), &Viewport::has_transparent_background);
- ClassDB::bind_method(D_METHOD("_parent_visibility_changed"), &Viewport::_parent_visibility_changed);
-
- ClassDB::bind_method(D_METHOD("_parent_resized"), &Viewport::_parent_resized);
ClassDB::bind_method(D_METHOD("_vp_input"), &Viewport::_vp_input);
ClassDB::bind_method(D_METHOD("_vp_input_text", "text"), &Viewport::_vp_input_text);
ClassDB::bind_method(D_METHOD("_vp_unhandled_input"), &Viewport::_vp_unhandled_input);
@@ -2760,7 +2649,7 @@ void Viewport::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "own_world"), "set_use_own_world", "is_using_own_world");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world", PROPERTY_HINT_RESOURCE_TYPE, "World"), "set_world", "get_world");
- //ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"world_2d",PROPERTY_HINT_RESOURCE_TYPE,"World2D"), "set_world_2d", "get_world_2d") ;
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "world_2d", PROPERTY_HINT_RESOURCE_TYPE, "World2D", 0), "set_world_2d", "get_world_2d");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "transparent_bg"), "set_transparent_background", "has_transparent_background");
ADD_GROUP("Rendering", "");
ADD_PROPERTY(PropertyInfo(Variant::INT, "msaa", PROPERTY_HINT_ENUM, "Disabled,2x,4x,8x,16x"), "set_msaa", "get_msaa");
@@ -2786,6 +2675,8 @@ void Viewport::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_1", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 1);
ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_2", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 2);
ADD_PROPERTYI(PropertyInfo(Variant::INT, "shadow_atlas_quad_3", PROPERTY_HINT_ENUM, "Disabled,1 Shadow,4 Shadows,16 Shadows,64 Shadows,256 Shadows,1024 Shadows"), "set_shadow_atlas_quadrant_subdiv", "get_shadow_atlas_quadrant_subdiv", 3);
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "canvas_transform", PROPERTY_HINT_NONE, "", 0), "set_canvas_transform", "get_canvas_transform");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "global_canvas_transform", PROPERTY_HINT_NONE, "", 0), "set_global_canvas_transform", "get_global_canvas_transform");
ADD_SIGNAL(MethodInfo("size_changed"));
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 92c53a7ab8..07bbd3f1fa 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -1,4 +1,3 @@
-
/*************************************************************************/
/* viewport.h */
/*************************************************************************/
@@ -28,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VIEWPORT_H
#define VIEWPORT_H
@@ -206,12 +206,6 @@ private:
void _test_new_mouseover(ObjectID new_collider);
Map<ObjectID, uint64_t> physics_2d_mouseover;
- void _update_rect();
-
- void _parent_resized();
- void _parent_draw();
- void _parent_visibility_changed();
-
Ref<World2D> world_2d;
Ref<World> world;
Ref<World> own_world;
@@ -294,9 +288,6 @@ private:
_FORCE_INLINE_ Transform2D _get_input_pre_xform() const;
- void _vp_enter_tree();
- void _vp_exit_tree();
-
void _vp_input(const Ref<InputEvent> &p_ev);
void _vp_input_text(const String &p_text);
void _vp_unhandled_input(const Ref<InputEvent> &p_ev);
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 4036735807..bb0cf168af 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_scene_types.h"
#include "core/class_db.h"
@@ -200,6 +201,8 @@ static ResourceFormatLoaderDynamicFont *resource_loader_dynamic_font = NULL;
static ResourceFormatLoaderStreamTexture *resource_loader_stream_texture = NULL;
+static ResourceFormatLoaderBMFont *resource_loader_bmfont = NULL;
+
static ResourceFormatSaverShader *resource_saver_shader = NULL;
static ResourceFormatLoaderShader *resource_loader_shader = NULL;
@@ -220,31 +223,20 @@ void register_scene_types() {
resource_loader_theme = memnew(ResourceFormatLoaderTheme);
ResourceLoader::add_resource_format_loader(resource_loader_theme);
- bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false);
- ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/use_hidpi", PropertyInfo(Variant::BOOL, "gui/theme/use_hidpi", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
- String theme_path = GLOBAL_DEF("gui/theme/custom", "");
- ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom", PropertyInfo(Variant::STRING, "gui/theme/custom", PROPERTY_HINT_FILE, "*.tres,*.res", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
- String font_path = GLOBAL_DEF("gui/theme/custom_font", "");
- ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom_font", PropertyInfo(Variant::STRING, "gui/theme/custom_font", PROPERTY_HINT_FILE, "*.tres,*.res,*.font", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
+ resource_saver_text = memnew(ResourceFormatSaverText);
+ ResourceSaver::add_resource_format_saver(resource_saver_text, true);
- bool has_theme = false;
- if (theme_path != String()) {
- Ref<Theme> theme = ResourceLoader::load(theme_path);
- if (theme.is_valid()) {
- Theme::set_default(theme);
- has_theme = true;
- } else {
- ERR_PRINTS("Error loading custom theme '" + theme_path + "'");
- }
- }
+ resource_loader_text = memnew(ResourceFormatLoaderText);
+ ResourceLoader::add_resource_format_loader(resource_loader_text, true);
- if (!has_theme) {
- Ref<Font> font;
- if (font_path != String()) {
- font = ResourceLoader::load(font_path);
- }
- make_default_theme(default_theme_hidpi, font);
- }
+ resource_saver_shader = memnew(ResourceFormatSaverShader);
+ ResourceSaver::add_resource_format_saver(resource_saver_shader, true);
+
+ resource_loader_shader = memnew(ResourceFormatLoaderShader);
+ ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
+
+ resource_loader_bmfont = memnew(ResourceFormatLoaderBMFont);
+ ResourceLoader::add_resource_format_loader(resource_loader_bmfont, true);
OS::get_singleton()->yield(); //may take time to init
@@ -604,24 +596,42 @@ void register_scene_types() {
OS::get_singleton()->yield(); //may take time to init
- resource_saver_text = memnew(ResourceFormatSaverText);
- ResourceSaver::add_resource_format_saver(resource_saver_text, true);
-
- resource_loader_text = memnew(ResourceFormatLoaderText);
- ResourceLoader::add_resource_format_loader(resource_loader_text, true);
-
- resource_saver_shader = memnew(ResourceFormatSaverShader);
- ResourceSaver::add_resource_format_saver(resource_saver_shader, true);
-
- resource_loader_shader = memnew(ResourceFormatLoaderShader);
- ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
-
for (int i = 0; i < 20; i++) {
GLOBAL_DEF("layer_names/2d_render/layer_" + itos(i + 1), "");
GLOBAL_DEF("layer_names/2d_physics/layer_" + itos(i + 1), "");
GLOBAL_DEF("layer_names/3d_render/layer_" + itos(i + 1), "");
GLOBAL_DEF("layer_names/3d_physics/layer_" + itos(i + 1), "");
}
+
+ bool default_theme_hidpi = GLOBAL_DEF("gui/theme/use_hidpi", false);
+ ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/use_hidpi", PropertyInfo(Variant::BOOL, "gui/theme/use_hidpi", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
+ String theme_path = GLOBAL_DEF("gui/theme/custom", "");
+ ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom", PropertyInfo(Variant::STRING, "gui/theme/custom", PROPERTY_HINT_FILE, "*.tres,*.res,*.theme", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
+ String font_path = GLOBAL_DEF("gui/theme/custom_font", "");
+ ProjectSettings::get_singleton()->set_custom_property_info("gui/theme/custom_font", PropertyInfo(Variant::STRING, "gui/theme/custom_font", PROPERTY_HINT_FILE, "*.tres,*.res,*.font", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED));
+
+ Ref<Font> font;
+ if (font_path != String()) {
+ font = ResourceLoader::load(font_path);
+ if (!font.is_valid()) {
+ ERR_PRINTS("Error loading custom font '" + font_path + "'");
+ }
+ }
+
+ // Always make the default theme to avoid invalid default font/icon/style in the given theme
+ make_default_theme(default_theme_hidpi, font);
+
+ if (theme_path != String()) {
+ Ref<Theme> theme = ResourceLoader::load(theme_path);
+ if (theme.is_valid()) {
+ Theme::set_default(theme);
+ if (font.is_valid()) {
+ Theme::set_default_font(font);
+ }
+ } else {
+ ERR_PRINTS("Error loading custom theme '" + theme_path + "'");
+ }
+ }
}
void unregister_scene_types() {
@@ -647,6 +657,9 @@ void unregister_scene_types() {
if (resource_loader_shader) {
memdelete(resource_loader_shader);
}
+ if (resource_loader_bmfont) {
+ memdelete(resource_loader_bmfont);
+ }
SpatialMaterial::finish_shaders();
ParticlesMaterial::finish_shaders();
diff --git a/scene/register_scene_types.h b/scene/register_scene_types.h
index da7e290f25..9121c015fd 100644
--- a/scene/register_scene_types.h
+++ b/scene/register_scene_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_SCENE_TYPES_H
#define REGISTER_SCENE_TYPES_H
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index 367c8235f5..6e58bc88d7 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "animation.h"
#include "geometry.h"
@@ -35,13 +36,7 @@ bool Animation::_set(const StringName &p_name, const Variant &p_value) {
String name = p_name;
- if (name == "length")
- set_length(p_value);
- else if (name == "loop")
- set_loop(p_value);
- else if (name == "step")
- set_step(p_value);
- else if (name.begins_with("tracks/")) {
+ if (name.begins_with("tracks/")) {
int track = name.get_slicec('/', 1).to_int();
String what = name.get_slicec('/', 2);
@@ -383,20 +378,15 @@ bool Animation::_get(const StringName &p_name, Variant &r_ret) const {
}
void Animation::_get_property_list(List<PropertyInfo> *p_list) const {
-
- p_list->push_back(PropertyInfo(Variant::REAL, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001"));
- p_list->push_back(PropertyInfo(Variant::BOOL, "loop"));
- p_list->push_back(PropertyInfo(Variant::REAL, "step", PROPERTY_HINT_RANGE, "0,4096,0.001"));
-
for (int i = 0; i < tracks.size(); i++) {
- p_list->push_back(PropertyInfo(Variant::STRING, "tracks/" + itos(i) + "/type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::NODE_PATH, "tracks/" + itos(i) + "/path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::INT, "tracks/" + itos(i) + "/interp", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/loop_wrap", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/imported", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, "tracks/" + itos(i) + "/keys", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::STRING, "tracks/" + itos(i) + "/type", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::NODE_PATH, "tracks/" + itos(i) + "/path", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::INT, "tracks/" + itos(i) + "/interp", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/loop_wrap", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/imported", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "tracks/" + itos(i) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, "tracks/" + itos(i) + "/keys", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
}
@@ -1689,6 +1679,10 @@ void Animation::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear"), &Animation::clear);
ClassDB::bind_method(D_METHOD("copy_track", "track", "to_animation"), &Animation::copy_track);
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001"), "set_length", "get_length");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "loop"), "set_loop", "has_loop");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "step", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_step", "get_step");
+
BIND_ENUM_CONSTANT(TYPE_VALUE);
BIND_ENUM_CONSTANT(TYPE_TRANSFORM);
BIND_ENUM_CONSTANT(TYPE_METHOD);
diff --git a/scene/resources/animation.h b/scene/resources/animation.h
index 2975c7fd9d..73691a69f2 100644
--- a/scene/resources/animation.h
+++ b/scene/resources/animation.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ANIMATION_H
#define ANIMATION_H
diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp
index e52a83d17e..b77143cd9d 100644
--- a/scene/resources/audio_stream_sample.cpp
+++ b/scene/resources/audio_stream_sample.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_stream_sample.h"
void AudioStreamPlaybackSample::start(float p_from_pos) {
@@ -76,7 +77,7 @@ void AudioStreamPlaybackSample::seek(float p_time) {
if (base->format == AudioStreamSample::FORMAT_IMA_ADPCM)
return; //no seeking in ima-adpcm
- float max = get_length();
+ float max = base->get_length();
if (p_time < 0) {
p_time = 0;
} else if (p_time >= max) {
@@ -389,22 +390,6 @@ void AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, in
}
}
-float AudioStreamPlaybackSample::get_length() const {
-
- int len = base->data_bytes;
- switch (base->format) {
- case AudioStreamSample::FORMAT_8_BITS: len /= 1; break;
- case AudioStreamSample::FORMAT_16_BITS: len /= 2; break;
- case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break;
- }
-
- if (base->stereo) {
- len /= 2;
- }
-
- return float(len) / base->mix_rate;
-}
-
AudioStreamPlaybackSample::AudioStreamPlaybackSample() {
active = false;
@@ -468,6 +453,22 @@ bool AudioStreamSample::is_stereo() const {
return stereo;
}
+float AudioStreamSample::get_length() const {
+
+ int len = data_bytes;
+ switch (format) {
+ case AudioStreamSample::FORMAT_8_BITS: len /= 1; break;
+ case AudioStreamSample::FORMAT_16_BITS: len /= 2; break;
+ case AudioStreamSample::FORMAT_IMA_ADPCM: len *= 2; break;
+ }
+
+ if (stereo) {
+ len /= 2;
+ }
+
+ return float(len) / mix_rate;
+}
+
void AudioStreamSample::set_data(const PoolVector<uint8_t> &p_data) {
AudioServer::get_singleton()->lock();
@@ -541,8 +542,8 @@ void AudioStreamSample::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stereo", "stereo"), &AudioStreamSample::set_stereo);
ClassDB::bind_method(D_METHOD("is_stereo"), &AudioStreamSample::is_stereo);
- ClassDB::bind_method(D_METHOD("set_data", "data"), &AudioStreamSample::set_data);
- ClassDB::bind_method(D_METHOD("get_data"), &AudioStreamSample::get_data);
+ ClassDB::bind_method(D_METHOD("_set_data", "data"), &AudioStreamSample::set_data);
+ ClassDB::bind_method(D_METHOD("_get_data"), &AudioStreamSample::get_data);
ADD_PROPERTY(PropertyInfo(Variant::INT, "format", PROPERTY_HINT_ENUM, "8-Bit,16-Bit,IMA-ADPCM"), "set_format", "get_format");
ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_mode", PROPERTY_HINT_ENUM, "Disabled,Forward,Ping-Pong"), "set_loop_mode", "get_loop_mode");
@@ -550,7 +551,7 @@ void AudioStreamSample::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "loop_end"), "set_loop_end", "get_loop_end");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mix_rate"), "set_mix_rate", "get_mix_rate");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stereo"), "set_stereo", "is_stereo");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_data", "get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
BIND_ENUM_CONSTANT(FORMAT_8_BITS);
BIND_ENUM_CONSTANT(FORMAT_16_BITS);
diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h
index a51483aa21..5fe65c194e 100644
--- a/scene/resources/audio_stream_sample.h
+++ b/scene/resources/audio_stream_sample.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOSTREAMSAMPLE_H
#define AUDIOSTREAMSAMPLE_H
@@ -76,8 +77,6 @@ public:
virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames);
- virtual float get_length() const; //if supported, otherwise return 0
-
AudioStreamPlaybackSample();
};
@@ -136,6 +135,8 @@ public:
void set_stereo(bool p_enable);
bool is_stereo() const;
+ virtual float get_length() const; //if supported, otherwise return 0
+
void set_data(const PoolVector<uint8_t> &p_data);
PoolVector<uint8_t> get_data() const;
diff --git a/scene/resources/bit_mask.cpp b/scene/resources/bit_mask.cpp
index 85bcfc9ecd..ea313b5a20 100644
--- a/scene/resources/bit_mask.cpp
+++ b/scene/resources/bit_mask.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "bit_mask.h"
#include "io/image_loader.h"
@@ -80,7 +81,7 @@ void BitMap::set_bit_rect(const Rect2 &p_rect, bool p_value) {
if (p_value)
b |= (1 << bbit);
else
- b &= !(1 << bbit);
+ b &= ~(1 << bbit);
data[bbyte] = b;
}
@@ -111,8 +112,8 @@ int BitMap::get_true_bit_count() const {
void BitMap::set_bit(const Point2 &p_pos, bool p_value) {
- int x = Math::fast_ftoi(p_pos.x);
- int y = Math::fast_ftoi(p_pos.y);
+ int x = p_pos.x;
+ int y = p_pos.y;
ERR_FAIL_INDEX(x, width);
ERR_FAIL_INDEX(y, height);
@@ -126,7 +127,7 @@ void BitMap::set_bit(const Point2 &p_pos, bool p_value) {
if (p_value)
b |= (1 << bbit);
else
- b &= !(1 << bbit);
+ b &= ~(1 << bbit);
bitmask[bbyte] = b;
}
@@ -183,7 +184,7 @@ void BitMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data"), &BitMap::_set_data);
ClassDB::bind_method(D_METHOD("_get_data"), &BitMap::_get_data);
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
}
BitMap::BitMap() {
diff --git a/scene/resources/bit_mask.h b/scene/resources/bit_mask.h
index 403f151004..cf126ef96b 100644
--- a/scene/resources/bit_mask.h
+++ b/scene/resources/bit_mask.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BIT_MASK_H
#define BIT_MASK_H
@@ -38,7 +39,6 @@ class BitMap : public Resource {
GDCLASS(BitMap, Resource);
OBJ_SAVE_TYPE(BitMap);
- RES_BASE_EXTENSION("pbm");
Vector<uint8_t> bitmask;
int width;
diff --git a/scene/resources/bounds.cpp b/scene/resources/bounds.cpp
index 3e4be0defa..b115d92be3 100644
--- a/scene/resources/bounds.cpp
+++ b/scene/resources/bounds.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "bounds.h"
void Bounds::_bind_methods() {
diff --git a/scene/resources/bounds.h b/scene/resources/bounds.h
index 1454064853..dfe2fe40c6 100644
--- a/scene/resources/bounds.h
+++ b/scene/resources/bounds.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BOUNDS_H
#define BOUNDS_H
diff --git a/scene/resources/box_shape.cpp b/scene/resources/box_shape.cpp
index d93791ef4f..e9e01ed98a 100644
--- a/scene/resources/box_shape.cpp
+++ b/scene/resources/box_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "box_shape.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/box_shape.h b/scene/resources/box_shape.h
index 2bbf455a46..5ef16b4766 100644
--- a/scene/resources/box_shape.h
+++ b/scene/resources/box_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BOX_SHAPE_H
#define BOX_SHAPE_H
diff --git a/scene/resources/canvas.cpp b/scene/resources/canvas.cpp
index e46b40736e..8da1da9541 100644
--- a/scene/resources/canvas.cpp
+++ b/scene/resources/canvas.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "canvas.h"
#include "servers/visual_server.h"
diff --git a/scene/resources/canvas.h b/scene/resources/canvas.h
index 1bb57987e3..dfdea82ca5 100644
--- a/scene/resources/canvas.h
+++ b/scene/resources/canvas.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CANVAS_H
#define CANVAS_H
diff --git a/scene/resources/capsule_shape.cpp b/scene/resources/capsule_shape.cpp
index bb721759c9..101970bad8 100644
--- a/scene/resources/capsule_shape.cpp
+++ b/scene/resources/capsule_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "capsule_shape.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/capsule_shape.h b/scene/resources/capsule_shape.h
index 6a0b27bb0b..f89d07c5f1 100644
--- a/scene/resources/capsule_shape.h
+++ b/scene/resources/capsule_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAPSULE_SHAPE_H
#define CAPSULE_SHAPE_H
diff --git a/scene/resources/capsule_shape_2d.cpp b/scene/resources/capsule_shape_2d.cpp
index 7b2dbf8e8c..95ab34abb2 100644
--- a/scene/resources/capsule_shape_2d.cpp
+++ b/scene/resources/capsule_shape_2d.cpp
@@ -27,11 +27,31 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "capsule_shape_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+Vector<Vector2> CapsuleShape2D::_get_points() const {
+
+ Vector<Vector2> points;
+ for (int i = 0; i < 24; i++) {
+ Vector2 ofs = Vector2(0, (i > 6 && i <= 18) ? -get_height() * 0.5 : get_height() * 0.5);
+
+ points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() + ofs);
+ if (i == 6 || i == 18)
+ points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() - ofs);
+ }
+
+ return points;
+}
+
+bool CapsuleShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return Geometry::is_point_in_polygon(p_point, _get_points());
+}
+
void CapsuleShape2D::_update_shape() {
Physics2DServer::get_singleton()->shape_set_data(get_rid(), Vector2(radius, height));
@@ -62,15 +82,7 @@ real_t CapsuleShape2D::get_height() const {
void CapsuleShape2D::draw(const RID &p_to_rid, const Color &p_color) {
- Vector<Vector2> points;
- for (int i = 0; i < 24; i++) {
- Vector2 ofs = Vector2(0, (i > 6 && i <= 18) ? -get_height() * 0.5 : get_height() * 0.5);
-
- points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() + ofs);
- if (i == 6 || i == 18)
- points.push_back(Vector2(Math::sin(i * Math_PI * 2 / 24.0), Math::cos(i * Math_PI * 2 / 24.0)) * get_radius() - ofs);
- }
-
+ Vector<Vector2> points = _get_points();
Vector<Color> col;
col.push_back(p_color);
VisualServer::get_singleton()->canvas_item_add_polygon(p_to_rid, points, col);
diff --git a/scene/resources/capsule_shape_2d.h b/scene/resources/capsule_shape_2d.h
index 7ce6a4ed63..04d663c010 100644
--- a/scene/resources/capsule_shape_2d.h
+++ b/scene/resources/capsule_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CAPSULE_SHAPE_2D_H
#define CAPSULE_SHAPE_2D_H
@@ -39,11 +40,14 @@ class CapsuleShape2D : public Shape2D {
real_t radius;
void _update_shape();
+ Vector<Vector2> _get_points() const;
protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_height(real_t p_height);
real_t get_height() const;
diff --git a/scene/resources/circle_shape_2d.cpp b/scene/resources/circle_shape_2d.cpp
index d9d0ddbe8f..1c7bb76b26 100644
--- a/scene/resources/circle_shape_2d.cpp
+++ b/scene/resources/circle_shape_2d.cpp
@@ -27,10 +27,17 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "circle_shape_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+
+bool CircleShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return p_point.length() < get_radius() + p_tolerance;
+}
+
void CircleShape2D::_update_shape() {
Physics2DServer::get_singleton()->shape_set_data(get_rid(), radius);
diff --git a/scene/resources/circle_shape_2d.h b/scene/resources/circle_shape_2d.h
index f14f8f6776..06bb433170 100644
--- a/scene/resources/circle_shape_2d.h
+++ b/scene/resources/circle_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CIRCLE_SHAPE_2D_H
#define CIRCLE_SHAPE_2D_H
@@ -42,6 +43,8 @@ protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_radius(real_t p_radius);
real_t get_radius() const;
diff --git a/scene/resources/color_ramp.cpp b/scene/resources/color_ramp.cpp
index 22d52ef1ec..8c09130873 100644
--- a/scene/resources/color_ramp.cpp
+++ b/scene/resources/color_ramp.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "color_ramp.h"
#include "core_string_names.h"
diff --git a/scene/resources/color_ramp.h b/scene/resources/color_ramp.h
index 4e041355b2..c042a0d3d0 100644
--- a/scene/resources/color_ramp.h
+++ b/scene/resources/color_ramp.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_RESOURCES_COLOR_RAMP_H_
#define SCENE_RESOURCES_COLOR_RAMP_H_
diff --git a/scene/resources/concave_polygon_shape.cpp b/scene/resources/concave_polygon_shape.cpp
index 718aaeb27a..935f041837 100644
--- a/scene/resources/concave_polygon_shape.cpp
+++ b/scene/resources/concave_polygon_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "concave_polygon_shape.h"
#include "servers/physics_server.h"
@@ -63,29 +64,6 @@ Vector<Vector3> ConcavePolygonShape::_gen_debug_mesh_lines() {
return points;
}
-bool ConcavePolygonShape::_set(const StringName &p_name, const Variant &p_value) {
-
- if (p_name == "data")
- PhysicsServer::get_singleton()->shape_set_data(get_shape(), p_value);
- else
- return false;
-
- return true;
-}
-
-bool ConcavePolygonShape::_get(const StringName &p_name, Variant &r_ret) const {
-
- if (p_name == "data")
- r_ret = PhysicsServer::get_singleton()->shape_get_data(get_shape());
- else
- return false;
- return true;
-}
-void ConcavePolygonShape::_get_property_list(List<PropertyInfo> *p_list) const {
-
- p_list->push_back(PropertyInfo(Variant::ARRAY, "data"));
-}
-
void ConcavePolygonShape::_update_shape() {
}
@@ -104,6 +82,7 @@ void ConcavePolygonShape::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_faces", "faces"), &ConcavePolygonShape::set_faces);
ClassDB::bind_method(D_METHOD("get_faces"), &ConcavePolygonShape::get_faces);
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "set_faces", "get_faces");
}
ConcavePolygonShape::ConcavePolygonShape() :
diff --git a/scene/resources/concave_polygon_shape.h b/scene/resources/concave_polygon_shape.h
index b94e3eca9c..2cc9095abf 100644
--- a/scene/resources/concave_polygon_shape.h
+++ b/scene/resources/concave_polygon_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONCAVE_POLYGON_SHAPE_H
#define CONCAVE_POLYGON_SHAPE_H
@@ -57,9 +58,6 @@ class ConcavePolygonShape : public Shape {
};
protected:
- 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;
static void _bind_methods();
virtual void _update_shape();
diff --git a/scene/resources/concave_polygon_shape_2d.cpp b/scene/resources/concave_polygon_shape_2d.cpp
index 19985d4acf..d4343680ef 100644
--- a/scene/resources/concave_polygon_shape_2d.cpp
+++ b/scene/resources/concave_polygon_shape_2d.cpp
@@ -27,11 +27,29 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "concave_polygon_shape_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+bool ConcavePolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ PoolVector<Vector2> s = get_segments();
+ int len = s.size();
+ if (len == 0 || (len % 2) == 1)
+ return false;
+
+ PoolVector<Vector2>::Read r = s.read();
+ for (int i = 0; i < len; i += 2) {
+ Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, &r[i]);
+ if (p_point.distance_to(closest) < p_tolerance)
+ return true;
+ }
+
+ return false;
+}
+
void ConcavePolygonShape2D::set_segments(const PoolVector<Vector2> &p_segments) {
Physics2DServer::get_singleton()->shape_set_data(get_rid(), p_segments);
diff --git a/scene/resources/concave_polygon_shape_2d.h b/scene/resources/concave_polygon_shape_2d.h
index 4a5defe72c..e8fa7369ac 100644
--- a/scene/resources/concave_polygon_shape_2d.h
+++ b/scene/resources/concave_polygon_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONCAVE_POLYGON_SHAPE_2D_H
#define CONCAVE_POLYGON_SHAPE_2D_H
@@ -39,6 +40,8 @@ protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_segments(const PoolVector<Vector2> &p_segments);
PoolVector<Vector2> get_segments() const;
diff --git a/scene/resources/convex_polygon_shape.cpp b/scene/resources/convex_polygon_shape.cpp
index e022b76907..a2e0996996 100644
--- a/scene/resources/convex_polygon_shape.cpp
+++ b/scene/resources/convex_polygon_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "convex_polygon_shape.h"
#include "quick_hull.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/convex_polygon_shape.h b/scene/resources/convex_polygon_shape.h
index 0a840f0bc5..62567fc031 100644
--- a/scene/resources/convex_polygon_shape.h
+++ b/scene/resources/convex_polygon_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONVEX_POLYGON_SHAPE_H
#define CONVEX_POLYGON_SHAPE_H
diff --git a/scene/resources/convex_polygon_shape_2d.cpp b/scene/resources/convex_polygon_shape_2d.cpp
index 98ef2ca7c6..d061c4ea1e 100644
--- a/scene/resources/convex_polygon_shape_2d.cpp
+++ b/scene/resources/convex_polygon_shape_2d.cpp
@@ -27,12 +27,18 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "convex_polygon_shape_2d.h"
#include "geometry.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+bool ConvexPolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ return Geometry::is_point_in_polygon(p_point, points);
+}
+
void ConvexPolygonShape2D::_update_shape() {
Physics2DServer::get_singleton()->shape_set_data(get_rid(), points);
diff --git a/scene/resources/convex_polygon_shape_2d.h b/scene/resources/convex_polygon_shape_2d.h
index f492b7651b..69c237a0e6 100644
--- a/scene/resources/convex_polygon_shape_2d.h
+++ b/scene/resources/convex_polygon_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONVEX_POLYGON_SHAPE_2D_H
#define CONVEX_POLYGON_SHAPE_2D_H
@@ -42,6 +43,8 @@ protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_point_cloud(const Vector<Vector2> &p_points);
void set_points(const Vector<Vector2> &p_points);
Vector<Vector2> get_points() const;
diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp
index 95cb336740..5fd6f6c74d 100644
--- a/scene/resources/curve.cpp
+++ b/scene/resources/curve.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "curve.h"
#include "core_string_names.h"
@@ -510,7 +511,7 @@ void Curve::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "min_value", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_min_value", "get_min_value");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "max_value", PROPERTY_HINT_RANGE, "-1024,1024,0.01"), "set_max_value", "get_max_value");
ADD_PROPERTY(PropertyInfo(Variant::INT, "bake_resolution", PROPERTY_HINT_RANGE, "1,1000,1"), "set_bake_resolution", "get_bake_resolution");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
ADD_SIGNAL(MethodInfo(SIGNAL_RANGE_CHANGED));
@@ -914,7 +915,7 @@ void Curve2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data"), &Curve2D::_set_data);
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bake_interval", PROPERTY_HINT_RANGE, "0.01,512,0.01"), "set_bake_interval", "get_bake_interval");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
}
Curve2D::Curve2D() {
@@ -1409,7 +1410,7 @@ void Curve3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data"), &Curve3D::_set_data);
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bake_interval", PROPERTY_HINT_RANGE, "0.01,512,0.01"), "set_bake_interval", "get_bake_interval");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
}
Curve3D::Curve3D() {
diff --git a/scene/resources/curve.h b/scene/resources/curve.h
index 4d421246bf..4f55e4055c 100644
--- a/scene/resources/curve.h
+++ b/scene/resources/curve.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CURVE_H
#define CURVE_H
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index b18583dfb1..a4049e4461 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -880,7 +880,7 @@ void make_default_theme(bool p_hidpi, Ref<Font> p_font) {
Ref<StyleBox> default_style;
Ref<Texture> default_icon;
- Ref<BitmapFont> default_font;
+ Ref<Font> default_font;
if (p_font.is_valid()) {
default_font = p_font;
} else if (p_hidpi) {
@@ -888,7 +888,7 @@ void make_default_theme(bool p_hidpi, Ref<Font> p_font) {
} else {
default_font = make_font2(_lodpi_font_height, _lodpi_font_ascent, _lodpi_font_charcount, &_lodpi_font_charrects[0][0], _lodpi_font_kerning_pair_count, &_lodpi_font_kerning_pairs[0][0], _lodpi_font_img_width, _lodpi_font_img_height, _lodpi_font_img_data);
}
- Ref<BitmapFont> large_font = default_font;
+ Ref<Font> large_font = default_font;
fill_default_theme(t, default_font, large_font, default_icon, default_style, p_hidpi ? 2.0 : 1.0);
Theme::set_default(t);
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index d52002ad5c..e9d5ca969e 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifdef FREETYPE_ENABLED
#include "dynamic_font.h"
#include "os/file_access.h"
@@ -34,13 +35,7 @@
bool DynamicFontData::CacheID::operator<(CacheID right) const {
- if (size < right.size)
- return true;
- if (mipmaps != right.mipmaps)
- return right.mipmaps;
- if (filter != right.filter)
- return right.filter;
- return false;
+ return key < right.key;
}
Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(CacheID p_cache_id) {
@@ -630,6 +625,7 @@ bool DynamicFontAtSize::update_oversampling() {
textures.clear();
char_map.clear();
oversampling = font_oversampling;
+ valid = false;
_load();
return true;
@@ -650,8 +646,9 @@ DynamicFontAtSize::~DynamicFontAtSize() {
if (valid) {
FT_Done_FreeType(library);
- font->size_cache.erase(id);
}
+ font->size_cache.erase(id);
+ font.unref();
}
/////////////////////////
@@ -972,14 +969,26 @@ void DynamicFont::finish_dynamic_fonts() {
void DynamicFont::update_oversampling() {
+ Vector<Ref<DynamicFont> > changed;
+
+ if (dynamic_font_mutex)
+ dynamic_font_mutex->lock();
+
SelfList<DynamicFont> *E = dynamic_fonts.first();
while (E) {
if (E->self()->data_at_size.is_valid() && E->self()->data_at_size->update_oversampling()) {
- E->self()->emit_changed();
+ changed.push_back(Ref<DynamicFont>(E->self()));
}
E = E->next();
}
+
+ if (dynamic_font_mutex)
+ dynamic_font_mutex->unlock();
+
+ for (int i = 0; i < changed.size(); i++) {
+ changed[i]->emit_changed();
+ }
}
/////////////////////////
diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h
index 1a890dd65d..92bb77bed3 100644
--- a/scene/resources/dynamic_font.h
+++ b/scene/resources/dynamic_font.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DYNAMIC_FONT_H
#define DYNAMIC_FONT_H
@@ -49,15 +50,17 @@ class DynamicFontData : public Resource {
public:
struct CacheID {
- int size;
- bool mipmaps;
- bool filter;
-
+ union {
+ struct {
+ uint32_t size : 16;
+ bool mipmaps : 1;
+ bool filter : 1;
+ };
+ uint32_t key;
+ };
bool operator<(CacheID right) const;
CacheID() {
- size = 16;
- mipmaps = false;
- filter = false;
+ key = 0;
}
};
diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp
index 70495e9bbf..098b794a95 100644
--- a/scene/resources/dynamic_font_stb.cpp
+++ b/scene/resources/dynamic_font_stb.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "dynamic_font_stb.h"
#ifndef FREETYPE_ENABLED
diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h
index 3d4ad4389c..4c1097d28b 100644
--- a/scene/resources/dynamic_font_stb.h
+++ b/scene/resources/dynamic_font_stb.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef DYNAMICFONT_STB_H
#define DYNAMICFONT_STB_H
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 6216893667..3fab4d3cfc 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "environment.h"
#include "project_settings.h"
#include "servers/visual_server.h"
@@ -269,19 +270,19 @@ void Environment::_validate_property(PropertyInfo &property) const {
if (property.name == "background_sky" || property.name == "background_sky_custom_fov" || property.name == "ambient_light/sky_contribution") {
if (bg_mode != BG_SKY && bg_mode != BG_COLOR_SKY) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
if (property.name == "background_color") {
if (bg_mode != BG_COLOR && bg_mode != BG_COLOR_SKY) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
if (property.name == "background_canvas_max_layer") {
if (bg_mode != BG_CANVAS) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
}
}
@@ -304,7 +305,7 @@ void Environment::_validate_property(PropertyInfo &property) const {
String enabled = prefix + "enabled";
if (property.name.begins_with(prefix) && property.name != enabled && !bool(get(enabled))) {
- property.usage = PROPERTY_USAGE_NOEDITOR;
+ property.usage = PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL;
return;
}
@@ -1218,7 +1219,7 @@ Environment::Environment() {
ssao_radius2 = 0;
ssao_intensity2 = 1;
ssao_bias = 0.01;
- ssao_direct_light_affect = false;
+ ssao_direct_light_affect = 0.0;
ssao_blur = SSAO_BLUR_3x3;
set_ssao_edge_sharpness(4);
set_ssao_quality(SSAO_QUALITY_LOW);
diff --git a/scene/resources/environment.h b/scene/resources/environment.h
index 9e2461a2ce..27fd57aa09 100644
--- a/scene/resources/environment.h
+++ b/scene/resources/environment.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ENVIRONMENT_H
#define ENVIRONMENT_H
diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp
index 7b4bd273bd..6fc5778dd8 100644
--- a/scene/resources/font.cpp
+++ b/scene/resources/font.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "font.h"
#include "core/io/resource_loader.h"
@@ -576,9 +577,9 @@ void BitmapFont::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_fallback", "fallback"), &BitmapFont::set_fallback);
ClassDB::bind_method(D_METHOD("get_fallback"), &BitmapFont::get_fallback);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "textures", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_textures", "_get_textures");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "chars", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_chars", "_get_chars");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "kernings", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_kernings", "_get_kernings");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "textures", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_textures", "_get_textures");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "chars", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_chars", "_get_chars");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_INT_ARRAY, "kernings", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_kernings", "_get_kernings");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "height", PROPERTY_HINT_RANGE, "-1024,1024,1"), "set_height", "get_height");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "ascent", PROPERTY_HINT_RANGE, "-1024,1024,1"), "set_ascent", "get_ascent");
@@ -595,3 +596,42 @@ BitmapFont::~BitmapFont() {
clear();
}
+
+////////////
+
+RES ResourceFormatLoaderBMFont::load(const String &p_path, const String &p_original_path, Error *r_error) {
+
+ if (r_error)
+ *r_error = ERR_FILE_CANT_OPEN;
+
+ Ref<BitmapFont> font;
+ font.instance();
+
+ Error err = font->create_from_fnt(p_path);
+
+ if (err) {
+ if (r_error)
+ *r_error = err;
+ return RES();
+ }
+
+ return font;
+}
+
+void ResourceFormatLoaderBMFont::get_recognized_extensions(List<String> *p_extensions) const {
+
+ p_extensions->push_back("fnt");
+}
+
+bool ResourceFormatLoaderBMFont::handles_type(const String &p_type) const {
+
+ return (p_type == "BitmapFont");
+}
+
+String ResourceFormatLoaderBMFont::get_resource_type(const String &p_path) const {
+
+ String el = p_path.get_extension().to_lower();
+ if (el == "fnt")
+ return "BitmapFont";
+ return "";
+}
diff --git a/scene/resources/font.h b/scene/resources/font.h
index 5eaf82d6bc..ae08890be3 100644
--- a/scene/resources/font.h
+++ b/scene/resources/font.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef FONT_H
#define FONT_H
@@ -158,4 +159,12 @@ public:
~BitmapFont();
};
+class ResourceFormatLoaderBMFont : public ResourceFormatLoader {
+public:
+ virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
+ 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;
+};
+
#endif
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index 4e3991b573..8a1978cf85 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "material.h"
#include "scene/scene_string_names.h"
@@ -102,25 +103,19 @@ Material::~Material() {
bool ShaderMaterial::_set(const StringName &p_name, const Variant &p_value) {
- if (p_name == SceneStringNames::get_singleton()->shader) {
- set_shader(p_value);
- return true;
- } else {
-
- if (shader.is_valid()) {
+ if (shader.is_valid()) {
- StringName pr = shader->remap_param(p_name);
- if (!pr) {
- String n = p_name;
- if (n.find("param/") == 0) { //backwards compatibility
- pr = n.substr(6, n.length());
- }
- }
- if (pr) {
- VisualServer::get_singleton()->material_set_param(_get_material(), pr, p_value);
- return true;
+ StringName pr = shader->remap_param(p_name);
+ if (!pr) {
+ String n = p_name;
+ if (n.find("param/") == 0) { //backwards compatibility
+ pr = n.substr(6, n.length());
}
}
+ if (pr) {
+ VisualServer::get_singleton()->material_set_param(_get_material(), pr, p_value);
+ return true;
+ }
}
return false;
@@ -128,20 +123,12 @@ bool ShaderMaterial::_set(const StringName &p_name, const Variant &p_value) {
bool ShaderMaterial::_get(const StringName &p_name, Variant &r_ret) const {
- if (p_name == SceneStringNames::get_singleton()->shader) {
-
- r_ret = get_shader();
- return true;
+ if (shader.is_valid()) {
- } else {
-
- if (shader.is_valid()) {
-
- StringName pr = shader->remap_param(p_name);
- if (pr) {
- r_ret = VisualServer::get_singleton()->material_get_param(_get_material(), pr);
- return true;
- }
+ StringName pr = shader->remap_param(p_name);
+ if (pr) {
+ r_ret = VisualServer::get_singleton()->material_get_param(_get_material(), pr);
+ return true;
}
}
@@ -150,8 +137,6 @@ bool ShaderMaterial::_get(const StringName &p_name, Variant &r_ret) const {
void ShaderMaterial::_get_property_list(List<PropertyInfo> *p_list) const {
- p_list->push_back(PropertyInfo(Variant::OBJECT, "shader", PROPERTY_HINT_RESOURCE_TYPE, "Shader,ShaderGraph"));
-
if (!shader.is_null()) {
shader->get_param_list(p_list);
@@ -192,6 +177,8 @@ void ShaderMaterial::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_shader"), &ShaderMaterial::get_shader);
ClassDB::bind_method(D_METHOD("set_shader_param", "param", "value"), &ShaderMaterial::set_shader_param);
ClassDB::bind_method(D_METHOD("get_shader_param", "param"), &ShaderMaterial::get_shader_param);
+
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shader", PROPERTY_HINT_RESOURCE_TYPE, "Shader"), "set_shader", "get_shader");
}
void ShaderMaterial::get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const {
@@ -2140,7 +2127,7 @@ SpatialMaterial::SpatialMaterial() :
for (int i = 0; i < FLAG_MAX; i++) {
flags[i] = 0;
}
- diffuse_mode = DIFFUSE_LAMBERT;
+ diffuse_mode = DIFFUSE_BURLEY;
specular_mode = SPECULAR_SCHLICK_GGX;
for (int i = 0; i < FEATURE_MAX; i++) {
diff --git a/scene/resources/material.h b/scene/resources/material.h
index 9ce1765e62..10bbcfd642 100644
--- a/scene/resources/material.h
+++ b/scene/resources/material.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MATERIAL_H
#define MATERIAL_H
diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp
index dc726adf86..d59390e1b8 100644
--- a/scene/resources/mesh.cpp
+++ b/scene/resources/mesh.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh.h"
#include "pair.h"
@@ -558,12 +559,6 @@ bool ArrayMesh::_set(const StringName &p_name, const Variant &p_value) {
return true;
}
- if (sname == "custom_aabb/custom_aabb") {
-
- set_custom_aabb(p_value);
- return true;
- }
-
if (!sname.begins_with("surfaces"))
return false;
@@ -672,11 +667,6 @@ bool ArrayMesh::_get(const StringName &p_name, Variant &r_ret) const {
else if (what == "name")
r_ret = surface_get_name(idx);
return true;
- } else if (sname == "custom_aabb/custom_aabb") {
-
- r_ret = custom_aabb;
- return true;
-
} else if (!sname.begins_with("surfaces"))
return false;
@@ -727,13 +717,13 @@ void ArrayMesh::_get_property_list(List<PropertyInfo> *p_list) const {
return;
if (blend_shapes.size()) {
- p_list->push_back(PropertyInfo(Variant::POOL_STRING_ARRAY, "blend_shape/names", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::POOL_STRING_ARRAY, "blend_shape/names", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
p_list->push_back(PropertyInfo(Variant::INT, "blend_shape/mode", PROPERTY_HINT_ENUM, "Normalized,Relative"));
}
for (int i = 0; i < surfaces.size(); i++) {
- p_list->push_back(PropertyInfo(Variant::DICTIONARY, "surfaces/" + itos(i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::DICTIONARY, "surfaces/" + itos(i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
p_list->push_back(PropertyInfo(Variant::STRING, "surface_" + itos(i + 1) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR));
if (surfaces[i].is_2d) {
p_list->push_back(PropertyInfo(Variant::OBJECT, "surface_" + itos(i + 1) + "/material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,CanvasItemMaterial", PROPERTY_USAGE_EDITOR));
@@ -741,8 +731,6 @@ void ArrayMesh::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::OBJECT, "surface_" + itos(i + 1) + "/material", PROPERTY_HINT_RESOURCE_TYPE, "ShaderMaterial,SpatialMaterial", PROPERTY_USAGE_EDITOR));
}
}
-
- p_list->push_back(PropertyInfo(Variant::AABB, "custom_aabb/custom_aabb"));
}
void ArrayMesh::_recompute_aabb() {
@@ -1285,6 +1273,9 @@ void ArrayMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_custom_aabb", "aabb"), &ArrayMesh::set_custom_aabb);
ClassDB::bind_method(D_METHOD("get_custom_aabb"), &ArrayMesh::get_custom_aabb);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "blend_shape_mode", PROPERTY_HINT_ENUM, "Normalized,Relative", PROPERTY_USAGE_NOEDITOR), "set_blend_shape_mode", "get_blend_shape_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, ""), "set_custom_aabb", "get_custom_aabb");
+
BIND_CONSTANT(NO_INDEX_ARRAY);
BIND_CONSTANT(ARRAY_WEIGHTS_SIZE);
diff --git a/scene/resources/mesh.h b/scene/resources/mesh.h
index 98d9edd48b..e8b7ecaf9a 100644
--- a/scene/resources/mesh.h
+++ b/scene/resources/mesh.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESH_H
#define MESH_H
diff --git a/scene/resources/mesh_data_tool.cpp b/scene/resources/mesh_data_tool.cpp
index 2854d45b52..8639b325c3 100644
--- a/scene/resources/mesh_data_tool.cpp
+++ b/scene/resources/mesh_data_tool.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh_data_tool.h"
void MeshDataTool::clear() {
diff --git a/scene/resources/mesh_data_tool.h b/scene/resources/mesh_data_tool.h
index fde6e5a46e..f614b80c3b 100644
--- a/scene/resources/mesh_data_tool.h
+++ b/scene/resources/mesh_data_tool.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MESH_DATA_TOOL_H
#define MESH_DATA_TOOL_H
diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp
index adf646f2d9..e1d3540fd1 100644
--- a/scene/resources/mesh_library.cpp
+++ b/scene/resources/mesh_library.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "mesh_library.h"
bool MeshLibrary::_set(const StringName &p_name, const Variant &p_value) {
diff --git a/scene/resources/mesh_library.h b/scene/resources/mesh_library.h
index a0bcfec2b6..69719960e2 100644
--- a/scene/resources/mesh_library.h
+++ b/scene/resources/mesh_library.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GRID_THEME_H
#define GRID_THEME_H
diff --git a/scene/resources/multimesh.cpp b/scene/resources/multimesh.cpp
index a89b1c7342..4d0a14e3aa 100644
--- a/scene/resources/multimesh.cpp
+++ b/scene/resources/multimesh.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "multimesh.h"
#include "servers/visual_server.h"
@@ -210,8 +211,8 @@ void MultiMesh::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "transform_format", PROPERTY_HINT_ENUM, "2D,3D"), "set_transform_format", "get_transform_format");
ADD_PROPERTY(PropertyInfo(Variant::INT, "instance_count", PROPERTY_HINT_RANGE, "0,16384,1"), "set_instance_count", "get_instance_count");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh"), "set_mesh", "get_mesh");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "transform_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_transform_array", "_get_transform_array");
- ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "color_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_color_array", "_get_color_array");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_VECTOR3_ARRAY, "transform_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_transform_array", "_get_transform_array");
+ ADD_PROPERTY(PropertyInfo(Variant::POOL_COLOR_ARRAY, "color_array", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_color_array", "_get_color_array");
BIND_ENUM_CONSTANT(TRANSFORM_2D);
BIND_ENUM_CONSTANT(TRANSFORM_3D);
diff --git a/scene/resources/multimesh.h b/scene/resources/multimesh.h
index f84d0c77c6..0875d6d06d 100644
--- a/scene/resources/multimesh.h
+++ b/scene/resources/multimesh.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef MULTIMESH_H
#define MULTIMESH_H
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index 9dc29151d5..3df9285bb6 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "packed_scene.h"
#include "core/core_string_names.h"
@@ -234,6 +235,7 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
if (p_edit_state == GEN_EDIT_STATE_MAIN) {
//for the main scene, use the resource as is
res->configure_for_local_scene(base, resources_local_to_scene);
+ resources_local_to_scene[res] = res;
} else {
//for instances, a copy must be made
@@ -243,9 +245,6 @@ Node *SceneState::instance(GenEditState p_edit_state) const {
res = local_dupe;
value = local_dupe;
}
-
- //this here may reference nodes not iniialized so this line is commented and used after loading all nodes
- //res->setup_local_to_scene();
}
//must make a copy, because this res is local to scene
}
@@ -1120,7 +1119,7 @@ void SceneState::set_bundled_scene(const Dictionary &p_dictionary) {
uint32_t name_index = r[idx++];
nd.name = name_index & ((1 << NAME_INDEX_BITS) - 1);
nd.index = (name_index >> NAME_INDEX_BITS);
- nd.index--; //0 is invaild, stored as 1
+ nd.index--; //0 is invalid, stored as 1
nd.instance = r[idx++];
nd.properties.resize(r[idx++]);
for (int j = 0; j < nd.properties.size(); j++) {
@@ -1213,7 +1212,7 @@ Dictionary SceneState::get_bundled_scene() const {
rnodes.push_back(nd.owner);
rnodes.push_back(nd.type);
uint32_t name_index = nd.name;
- if (nd.index < (1 << (32 - NAME_INDEX_BITS)) - 1) { //save if less than 16k childs
+ if (nd.index < (1 << (32 - NAME_INDEX_BITS)) - 1) { //save if less than 16k children
name_index |= uint32_t(nd.index + 1) << NAME_INDEX_BITS; //for backwards compatibility, index 0 is no index
}
rnodes.push_back(name_index);
diff --git a/scene/resources/packed_scene.h b/scene/resources/packed_scene.h
index 01035863d9..278986eb62 100644
--- a/scene/resources/packed_scene.h
+++ b/scene/resources/packed_scene.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PACKED_SCENE_H
#define PACKED_SCENE_H
diff --git a/scene/resources/plane_shape.cpp b/scene/resources/plane_shape.cpp
index 881ecc616e..4d38ebe090 100644
--- a/scene/resources/plane_shape.cpp
+++ b/scene/resources/plane_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "plane_shape.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/plane_shape.h b/scene/resources/plane_shape.h
index 3225a614e5..c24c9474fb 100644
--- a/scene/resources/plane_shape.h
+++ b/scene/resources/plane_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PLANE_SHAPE_H
#define PLANE_SHAPE_H
diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp
index f26ec5e0a8..6fea2e1a8e 100644
--- a/scene/resources/polygon_path_finder.cpp
+++ b/scene/resources/polygon_path_finder.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "polygon_path_finder.h"
#include "geometry.h"
@@ -588,7 +589,7 @@ void PolygonPathFinder::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data"), &PolygonPathFinder::_set_data);
ClassDB::bind_method(D_METHOD("_get_data"), &PolygonPathFinder::_get_data);
- ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
}
PolygonPathFinder::PolygonPathFinder() {
diff --git a/scene/resources/polygon_path_finder.h b/scene/resources/polygon_path_finder.h
index 960e6739d6..19761c274c 100644
--- a/scene/resources/polygon_path_finder.h
+++ b/scene/resources/polygon_path_finder.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef POLYGON_PATH_FINDER_H
#define POLYGON_PATH_FINDER_H
diff --git a/scene/resources/primitive_meshes.h b/scene/resources/primitive_meshes.h
index 2b7294141a..1eaa007bd7 100644
--- a/scene/resources/primitive_meshes.h
+++ b/scene/resources/primitive_meshes.h
@@ -39,7 +39,7 @@
@author Bastiaan Olij <mux213@gmail.com>
Base class for all the classes in this file, handles a number of code functions that are shared among all meshes.
- This class is set appart that it assumes a single surface is always generated for our mesh.
+ This class is set apart that it assumes a single surface is always generated for our mesh.
*/
class PrimitiveMesh : public Mesh {
diff --git a/scene/resources/ray_shape.cpp b/scene/resources/ray_shape.cpp
index dfd7aee23a..78a19050f1 100644
--- a/scene/resources/ray_shape.cpp
+++ b/scene/resources/ray_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "ray_shape.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/ray_shape.h b/scene/resources/ray_shape.h
index 45fd8ea603..4bd96116fe 100644
--- a/scene/resources/ray_shape.h
+++ b/scene/resources/ray_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RAY_SHAPE_H
#define RAY_SHAPE_H
#include "scene/resources/shape.h"
diff --git a/scene/resources/rectangle_shape_2d.cpp b/scene/resources/rectangle_shape_2d.cpp
index 5c4c838e29..aeb22f6d0a 100644
--- a/scene/resources/rectangle_shape_2d.cpp
+++ b/scene/resources/rectangle_shape_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rectangle_shape_2d.h"
#include "servers/physics_2d_server.h"
diff --git a/scene/resources/rectangle_shape_2d.h b/scene/resources/rectangle_shape_2d.h
index 1e2a40d695..2d66d328fd 100644
--- a/scene/resources/rectangle_shape_2d.h
+++ b/scene/resources/rectangle_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RECTANGLE_SHAPE_2D_H
#define RECTANGLE_SHAPE_2D_H
diff --git a/scene/resources/room.cpp b/scene/resources/room.cpp
index f46b074225..9493f8fbe6 100644
--- a/scene/resources/room.cpp
+++ b/scene/resources/room.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "room.h"
#include "servers/visual_server.h"
diff --git a/scene/resources/room.h b/scene/resources/room.h
index 367757fdb9..359d918665 100644
--- a/scene/resources/room.h
+++ b/scene/resources/room.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ROOM_BOUNDS_H
#define ROOM_BOUNDS_H
diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp
index 9910fe8dfc..91c801c016 100644
--- a/scene/resources/scene_format_text.cpp
+++ b/scene/resources/scene_format_text.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scene_format_text.h"
#include "core/io/resource_format_binary.h"
#include "os/dir_access.h"
@@ -1311,6 +1312,8 @@ Error ResourceFormatLoaderText::rename_dependencies(const String &p_path, const
return ria->rename_dependencies(f, p_path, p_map);
}
+ResourceFormatLoaderText *ResourceFormatLoaderText::singleton = NULL;
+
Error ResourceFormatLoaderText::convert_file_to_binary(const String &p_src_path, const String &p_dst_path) {
Error err;
@@ -1410,7 +1413,7 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant,
I = I->next();
}
- resource_set.insert(res); //saved after, so the childs it needs are available when loaded
+ resource_set.insert(res); //saved after, so the children it needs are available when loaded
saved_resources.push_back(res);
} break;
diff --git a/scene/resources/scene_format_text.h b/scene/resources/scene_format_text.h
index 6782aff6fd..c28ded3d77 100644
--- a/scene/resources/scene_format_text.h
+++ b/scene/resources/scene_format_text.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_FORMAT_TEXT_H
#define SCENE_FORMAT_TEXT_H
@@ -127,7 +128,9 @@ public:
};
class ResourceFormatLoaderText : public ResourceFormatLoader {
+
public:
+ static ResourceFormatLoaderText *singleton;
virtual Ref<ResourceInteractiveLoader> load_interactive(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
virtual void get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const;
virtual void get_recognized_extensions(List<String> *p_extensions) const;
@@ -137,6 +140,8 @@ public:
virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
static Error convert_file_to_binary(const String &p_src_path, const String &p_dst_path);
+
+ ResourceFormatLoaderText() { singleton = this; }
};
class ResourceFormatSaverTextInstance {
diff --git a/scene/resources/segment_shape_2d.cpp b/scene/resources/segment_shape_2d.cpp
index 4682ef5cb3..81110015b5 100644
--- a/scene/resources/segment_shape_2d.cpp
+++ b/scene/resources/segment_shape_2d.cpp
@@ -27,11 +27,19 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "segment_shape_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+bool SegmentShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ Vector2 l[2] = { a, b };
+ Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, l);
+ return p_point.distance_to(closest) < p_tolerance;
+}
+
void SegmentShape2D::_update_shape() {
Rect2 r;
diff --git a/scene/resources/segment_shape_2d.h b/scene/resources/segment_shape_2d.h
index 1285ae4f82..4ed30c0443 100644
--- a/scene/resources/segment_shape_2d.h
+++ b/scene/resources/segment_shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SEGMENT_SHAPE_2D_H
#define SEGMENT_SHAPE_2D_H
@@ -44,6 +45,8 @@ protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_a(const Vector2 &p_a);
void set_b(const Vector2 &p_b);
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp
index c33267d023..36740a307b 100644
--- a/scene/resources/shader.cpp
+++ b/scene/resources/shader.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader.h"
#include "os/file_access.h"
#include "scene/scene_string_names.h"
diff --git a/scene/resources/shader.h b/scene/resources/shader.h
index e9f5873588..248a6f0125 100644
--- a/scene/resources/shader.h
+++ b/scene/resources/shader.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_H
#define SHADER_H
diff --git a/scene/resources/shader_graph.cpp b/scene/resources/shader_graph.cpp
index 431150d1dd..070cc84863 100644
--- a/scene/resources/shader_graph.cpp
+++ b/scene/resources/shader_graph.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_graph.h"
#include "scene/scene_string_names.h"
@@ -269,7 +270,7 @@ void ShaderGraph::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data"),&ShaderGraph::_set_data);
ClassDB::bind_method(D_METHOD("_get_data"),&ShaderGraph::_get_data);
- ADD_PROPERTY( PropertyInfo(Variant::DICTIONARY,"_data",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR), "_set_data","_get_data");
+ ADD_PROPERTY( PropertyInfo(Variant::DICTIONARY,"_data",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data","_get_data");
//void get_connections(ShaderType p_which,List<Connection> *p_connections) const;
diff --git a/scene/resources/shader_graph.h b/scene/resources/shader_graph.h
index f9856158b9..e3a68f8572 100644
--- a/scene/resources/shader_graph.h
+++ b/scene/resources/shader_graph.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_GRAPH_H
#define SHADER_GRAPH_H
diff --git a/scene/resources/shape.cpp b/scene/resources/shape.cpp
index edec89641f..418d8ce819 100644
--- a/scene/resources/shape.cpp
+++ b/scene/resources/shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shape.h"
#include "os/os.h"
diff --git a/scene/resources/shape.h b/scene/resources/shape.h
index bdbc9ba1e4..ad87a69679 100644
--- a/scene/resources/shape.h
+++ b/scene/resources/shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHAPE_H
#define SHAPE_H
diff --git a/scene/resources/shape_2d.cpp b/scene/resources/shape_2d.cpp
index 15c8b6b748..0ca518e5bb 100644
--- a/scene/resources/shape_2d.cpp
+++ b/scene/resources/shape_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shape_2d.h"
#include "servers/physics_2d_server.h"
RID Shape2D::get_rid() const {
diff --git a/scene/resources/shape_2d.h b/scene/resources/shape_2d.h
index 5c2c24ed74..ed655b8a93 100644
--- a/scene/resources/shape_2d.h
+++ b/scene/resources/shape_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHAPE_2D_H
#define SHAPE_2D_H
@@ -44,6 +45,8 @@ protected:
Shape2D(const RID &p_rid);
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { return true; }
+
void set_custom_solver_bias(real_t p_bias);
real_t get_custom_solver_bias() const;
diff --git a/scene/resources/shape_line_2d.cpp b/scene/resources/shape_line_2d.cpp
index c6cc3659f6..1a81eea6e5 100644
--- a/scene/resources/shape_line_2d.cpp
+++ b/scene/resources/shape_line_2d.cpp
@@ -27,9 +27,25 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shape_line_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
+
+bool LineShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
+
+ Vector2 point = get_d() * get_normal();
+ Vector2 l[2][2] = { { point - get_normal().tangent() * 100, point + get_normal().tangent() * 100 }, { point, point + get_normal() * 30 } };
+
+ for (int i = 0; i < 2; i++) {
+ Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, l[i]);
+ if (p_point.distance_to(closest) < p_tolerance)
+ return true;
+ }
+
+ return false;
+}
+
void LineShape2D::_update_shape() {
Array arr;
diff --git a/scene/resources/shape_line_2d.h b/scene/resources/shape_line_2d.h
index 747500b0ac..7d31941558 100644
--- a/scene/resources/shape_line_2d.h
+++ b/scene/resources/shape_line_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHAPE_LINE_2D_H
#define SHAPE_LINE_2D_H
@@ -44,6 +45,8 @@ protected:
static void _bind_methods();
public:
+ virtual bool _edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const;
+
void set_normal(const Vector2 &p_normal);
void set_d(real_t p_d);
diff --git a/scene/resources/sky_box.cpp b/scene/resources/sky_box.cpp
index 42ed6f72fa..f2d5cb3516 100644
--- a/scene/resources/sky_box.cpp
+++ b/scene/resources/sky_box.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sky_box.h"
#include "io/image_loader.h"
diff --git a/scene/resources/sky_box.h b/scene/resources/sky_box.h
index b62f9064c5..e561653a9e 100644
--- a/scene/resources/sky_box.h
+++ b/scene/resources/sky_box.h
@@ -27,8 +27,9 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef Sky_H
-#define Sky_H
+
+#ifndef SKY_BOX_H
+#define SKY_BOX_H
#include "os/thread.h"
#include "scene/resources/texture.h"
@@ -195,4 +196,4 @@ public:
VARIANT_ENUM_CAST(ProceduralSky::TextureSize)
-#endif // Sky_H
+#endif // SKY_BOX_H
diff --git a/scene/resources/space_2d.cpp b/scene/resources/space_2d.cpp
index e2661e83f5..062f4099db 100644
--- a/scene/resources/space_2d.cpp
+++ b/scene/resources/space_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "space_2d.h"
RID Space2D::get_rid() const {
diff --git a/scene/resources/space_2d.h b/scene/resources/space_2d.h
index 3ed1e4199a..148285ac6d 100644
--- a/scene/resources/space_2d.h
+++ b/scene/resources/space_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPACE_2D_H
#define SPACE_2D_H
diff --git a/scene/resources/sphere_shape.cpp b/scene/resources/sphere_shape.cpp
index c61749a598..d8ca1cf3f1 100644
--- a/scene/resources/sphere_shape.cpp
+++ b/scene/resources/sphere_shape.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "sphere_shape.h"
#include "servers/physics_server.h"
diff --git a/scene/resources/sphere_shape.h b/scene/resources/sphere_shape.h
index c1e0069941..5dd7daabc5 100644
--- a/scene/resources/sphere_shape.h
+++ b/scene/resources/sphere_shape.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPHERE_SHAPE_H
#define SPHERE_SHAPE_H
diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp
index 7c8007ff9c..6811517ead 100644
--- a/scene/resources/style_box.cpp
+++ b/scene/resources/style_box.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "style_box.h"
#include <limits.h>
@@ -911,6 +912,7 @@ void StyleBoxLine::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_vertical"), &StyleBoxLine::is_vertical);
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "color"), "set_color", "get_color");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "grow", PROPERTY_HINT_RANGE, "-300,300,1"), "set_grow", "get_grow");
ADD_PROPERTY(PropertyInfo(Variant::INT, "thickness", PROPERTY_HINT_RANGE, "0,10"), "set_thickness", "get_thickness");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "vertical"), "set_vertical", "is_vertical");
}
diff --git a/scene/resources/style_box.h b/scene/resources/style_box.h
index bdaa04e492..fb79aa360e 100644
--- a/scene/resources/style_box.h
+++ b/scene/resources/style_box.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STYLE_BOX_H
#define STYLE_BOX_H
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index a2535d0ddb..07c1036a10 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "surface_tool.h"
#include "method_bind_ext.gen.inc"
diff --git a/scene/resources/surface_tool.h b/scene/resources/surface_tool.h
index d18c1fc263..7a9aa349bb 100644
--- a/scene/resources/surface_tool.h
+++ b/scene/resources/surface_tool.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SURFACE_TOOL_H
#define SURFACE_TOOL_H
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index ea51a5ba8d..067d123b83 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "texture.h"
#include "core/method_bind_ext.gen.inc"
#include "core/os/os.h"
@@ -75,10 +76,12 @@ void Texture::_bind_methods() {
ClassDB::bind_method(D_METHOD("draw_rect_region", "canvas_item", "rect", "src_rect", "modulate", "transpose", "normal_map", "clip_uv"), &Texture::draw_rect_region, DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(Variant()), DEFVAL(true));
ClassDB::bind_method(D_METHOD("get_data"), &Texture::get_data);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter,Ansiotropic Linear,Convert to Linear,Mirrored Repeat,Video Surface"), "set_flags", "get_flags");
+
+ BIND_ENUM_CONSTANT(FLAGS_DEFAULT);
BIND_ENUM_CONSTANT(FLAG_MIPMAPS);
BIND_ENUM_CONSTANT(FLAG_REPEAT);
BIND_ENUM_CONSTANT(FLAG_FILTER);
- BIND_ENUM_CONSTANT(FLAGS_DEFAULT);
BIND_ENUM_CONSTANT(FLAG_ANISOTROPIC_FILTER);
BIND_ENUM_CONSTANT(FLAG_CONVERT_TO_LINEAR);
BIND_ENUM_CONSTANT(FLAG_MIRRORED_REPEAT);
@@ -120,10 +123,6 @@ bool ImageTexture::_set(const StringName &p_name, const Variant &p_value) {
w = s.width;
h = s.height;
VisualServer::get_singleton()->texture_set_size_override(texture, w, h);
- } else if (p_name == "storage") {
- storage = Storage(p_value.operator int());
- } else if (p_name == "lossy_quality") {
- lossy_storage_quality = p_value;
} else if (p_name == "_data") {
_set_data(p_value);
} else
@@ -142,10 +141,6 @@ bool ImageTexture::_get(const StringName &p_name, Variant &r_ret) const {
r_ret = flags;
else if (p_name == "size")
r_ret = Size2(w, h);
- else if (p_name == "storage")
- r_ret = storage;
- else if (p_name == "lossy_quality")
- r_ret = lossy_storage_quality;
else
return false;
@@ -164,8 +159,6 @@ void ImageTexture::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter,Anisotropic,sRGB,Mirrored Repeat"));
p_list->push_back(PropertyInfo(Variant::OBJECT, "image", PROPERTY_HINT_RESOURCE_TYPE, "Image"));
p_list->push_back(PropertyInfo(Variant::VECTOR2, "size", PROPERTY_HINT_NONE, ""));
- p_list->push_back(PropertyInfo(Variant::INT, "storage", PROPERTY_HINT_ENUM, "Uncompressed,Compress Lossy,Compress Lossless"));
- p_list->push_back(PropertyInfo(Variant::REAL, "lossy_quality", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"));
}
void ImageTexture::_reload_hook(const RID &p_hook) {
@@ -362,6 +355,9 @@ void ImageTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_size_override", "size"), &ImageTexture::set_size_override);
ClassDB::bind_method(D_METHOD("_reload_hook", "rid"), &ImageTexture::_reload_hook);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "storage", PROPERTY_HINT_ENUM, "Uncompressed,Compress Lossy,Compress Lossless"), "set_storage", "get_storage");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "lossy_quality", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_lossy_storage_quality", "get_lossy_storage_quality");
+
BIND_ENUM_CONSTANT(STORAGE_RAW);
BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSY);
BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
@@ -1132,7 +1128,7 @@ void LargeTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_data", "data"), &LargeTexture::_set_data);
ClassDB::bind_method(D_METHOD("_get_data"), &LargeTexture::_get_data);
- ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data");
}
void LargeTexture::draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate, bool p_transpose, const Ref<Texture> &p_normal_map) const {
@@ -1283,8 +1279,6 @@ bool CubeMap::_set(const StringName &p_name, const Variant &p_value) {
set_side(SIDE_FRONT, p_value);
} else if (p_name == "side/back") {
set_side(SIDE_BACK, p_value);
- } else if (p_name == "flags") {
- set_flags(p_value);
} else if (p_name == "storage") {
storage = Storage(p_value.operator int());
} else if (p_name == "lossy_quality") {
@@ -1309,8 +1303,6 @@ bool CubeMap::_get(const StringName &p_name, Variant &r_ret) const {
r_ret = get_side(SIDE_FRONT);
} else if (p_name == "side/back") {
r_ret = get_side(SIDE_BACK);
- } else if (p_name == "flags") {
- r_ret = flags;
} else if (p_name == "storage") {
r_ret = storage;
} else if (p_name == "lossy_quality") {
@@ -1330,7 +1322,6 @@ void CubeMap::_get_property_list(List<PropertyInfo> *p_list) const {
img_hint = PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS;
}
- p_list->push_back(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter"));
p_list->push_back(PropertyInfo(Variant::OBJECT, "side/left", PROPERTY_HINT_RESOURCE_TYPE, "Image"));
p_list->push_back(PropertyInfo(Variant::OBJECT, "side/right", PROPERTY_HINT_RESOURCE_TYPE, "Image"));
p_list->push_back(PropertyInfo(Variant::OBJECT, "side/bottom", PROPERTY_HINT_RESOURCE_TYPE, "Image"));
@@ -1352,6 +1343,7 @@ void CubeMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_lossy_storage_quality", "quality"), &CubeMap::set_lossy_storage_quality);
ClassDB::bind_method(D_METHOD("get_lossy_storage_quality"), &CubeMap::get_lossy_storage_quality);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "flags", PROPERTY_HINT_FLAGS, "Mipmaps,Repeat,Filter"), "set_flags", "get_flags");
ADD_PROPERTY(PropertyInfo(Variant::INT, "storage_mode", PROPERTY_HINT_ENUM, "Raw,Lossy Compressed,Lossless Compressed"), "set_storage", "get_storage");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "lossy_storage_quality"), "set_lossy_storage_quality", "get_lossy_storage_quality");
diff --git a/scene/resources/texture.h b/scene/resources/texture.h
index 1b0754ad3b..93d7ec4ef9 100644
--- a/scene/resources/texture.h
+++ b/scene/resources/texture.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TEXTURE_H
#define TEXTURE_H
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 7337c5ec4d..f903669fc7 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "theme.h"
#include "os/file_access.h"
#include "print_string.h"
diff --git a/scene/resources/theme.h b/scene/resources/theme.h
index 0d15a9a11e..c23f237c75 100644
--- a/scene/resources/theme.h
+++ b/scene/resources/theme.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef THEME_H
#define THEME_H
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index 89de2de279..3138d73caf 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "tile_set.h"
#include "array.h"
@@ -211,7 +212,7 @@ bool TileSet::_get(const StringName &p_name, Variant &r_ret) const {
Vector3 v;
for (Map<Vector2, int>::Element *E = tile_map[id].autotile_data.priority_map.front(); E; E = E->next()) {
if (E->value() > 1) {
- //Dont save default value
+ //Don't save default value
v.x = E->key().x;
v.y = E->key().y;
v.z = E->value();
@@ -259,14 +260,14 @@ void TileSet::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::RECT2, pre + "region"));
p_list->push_back(PropertyInfo(Variant::BOOL, pre + "is_autotile", PROPERTY_HINT_NONE, ""));
if (tile_get_is_autotile(id)) {
- p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/bitmask_mode", PROPERTY_HINT_ENUM, "2X2,3X3", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/icon_coordinate", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/tile_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/spacing", PROPERTY_HINT_RANGE, "0,256,1", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/bitmask_flags", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/occluder_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/navpoly_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/priority_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/bitmask_mode", PROPERTY_HINT_ENUM, "2X2,3X3", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/icon_coordinate", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "autotile/tile_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::INT, pre + "autotile/spacing", PROPERTY_HINT_RANGE, "0,256,1", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/bitmask_flags", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/occluder_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/navpoly_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::ARRAY, pre + "autotile/priority_map", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
p_list->push_back(PropertyInfo(Variant::VECTOR2, pre + "occluder_offset"));
p_list->push_back(PropertyInfo(Variant::OBJECT, pre + "occluder", PROPERTY_HINT_RESOURCE_TYPE, "OccluderPolygon2D"));
@@ -308,6 +309,7 @@ void TileSet::tile_set_texture(int p_id, const Ref<Texture> &p_texture) {
ERR_FAIL_COND(!tile_map.has(p_id));
tile_map[p_id].texture = p_texture;
emit_changed();
+ _change_notify("texture");
}
Ref<Texture> TileSet::tile_get_texture(int p_id) const {
@@ -385,8 +387,8 @@ void TileSet::tile_set_is_autotile(int p_id, bool p_is_autotile) {
ERR_FAIL_COND(!tile_map.has(p_id));
tile_map[p_id].is_autotile = p_is_autotile;
- _change_notify("");
emit_changed();
+ _change_notify("is_autotile");
}
bool TileSet::tile_get_is_autotile(int p_id) const {
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index e7e5c06d34..1306e2878c 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef TILE_SET_H
#define TILE_SET_H
diff --git a/scene/resources/video_stream.cpp b/scene/resources/video_stream.cpp
index ddedc1a37e..3cd8cbae77 100644
--- a/scene/resources/video_stream.cpp
+++ b/scene/resources/video_stream.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "video_stream.h"
void VideoStreamPlayback::_bind_methods(){
diff --git a/scene/resources/video_stream.h b/scene/resources/video_stream.h
index bd5bf54d0a..0d25d9d687 100644
--- a/scene/resources/video_stream.h
+++ b/scene/resources/video_stream.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VIDEO_STREAM_H
#define VIDEO_STREAM_H
diff --git a/scene/resources/world.cpp b/scene/resources/world.cpp
index 57f567bc3c..82183d24e7 100644
--- a/scene/resources/world.cpp
+++ b/scene/resources/world.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "world.h"
#include "camera_matrix.h"
@@ -317,6 +318,9 @@ void World::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_direct_space_state"), &World::get_direct_space_state);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "environment", PROPERTY_HINT_RESOURCE_TYPE, "Environment"), "set_environment", "get_environment");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "fallback_environment", PROPERTY_HINT_RESOURCE_TYPE, "Environment"), "set_fallback_environment", "get_fallback_environment");
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "space", PROPERTY_HINT_NONE, "", 0), "", "get_space");
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "scenario", PROPERTY_HINT_NONE, "", 0), "", "get_scenario");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "direct_space_state", PROPERTY_HINT_RESOURCE_TYPE, "PhysicsDirectSpaceState", 0), "", "get_direct_space_state");
}
World::World() {
diff --git a/scene/resources/world.h b/scene/resources/world.h
index 19b8bd03a6..54bdf25784 100644
--- a/scene/resources/world.h
+++ b/scene/resources/world.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef WORLD_H
#define WORLD_H
diff --git a/scene/resources/world_2d.cpp b/scene/resources/world_2d.cpp
index 1f75c43d75..bed6ffd1bd 100644
--- a/scene/resources/world_2d.cpp
+++ b/scene/resources/world_2d.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "world_2d.h"
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
@@ -372,6 +373,10 @@ void World2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_space"), &World2D::get_space);
ClassDB::bind_method(D_METHOD("get_direct_space_state"), &World2D::get_direct_space_state);
+
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "canvas", PROPERTY_HINT_NONE, "", 0), "", "get_canvas");
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "space", PROPERTY_HINT_NONE, "", 0), "", "get_space");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "direct_space_state", PROPERTY_HINT_RESOURCE_TYPE, "Physics2DDirectSpaceState", 0), "", "get_direct_space_state");
}
Physics2DDirectSpaceState *World2D::get_direct_space_state() {
diff --git a/scene/resources/world_2d.h b/scene/resources/world_2d.h
index 84fa00e6cd..59f34e32f2 100644
--- a/scene/resources/world_2d.h
+++ b/scene/resources/world_2d.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef WORLD_2D_H
#define WORLD_2D_H
diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp
index e72bc63c53..fdce0eb2b6 100644
--- a/scene/scene_string_names.cpp
+++ b/scene/scene_string_names.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "scene_string_names.h"
SceneStringNames *SceneStringNames::singleton = NULL;
@@ -48,6 +49,7 @@ SceneStringNames::SceneStringNames() {
shader_unshaded = StaticCString::create("shader/unshaded");
shading_mode = StaticCString::create("shader/shading_mode");
tree_entered = StaticCString::create("tree_entered");
+ tree_exiting = StaticCString::create("tree_exiting");
tree_exited = StaticCString::create("tree_exited");
item_rect_changed = StaticCString::create("item_rect_changed");
size_flags_changed = StaticCString::create("size_flags_changed");
diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h
index 8e7a0c0075..63a9a5db4d 100644
--- a/scene/scene_string_names.h
+++ b/scene/scene_string_names.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SCENE_STRING_NAMES_H
#define SCENE_STRING_NAMES_H
@@ -68,6 +69,7 @@ public:
StringName shader_unshaded;
StringName shading_mode;
StringName tree_entered;
+ StringName tree_exiting;
StringName tree_exited;
StringName size_flags_changed;
StringName minimum_size_changed;
diff --git a/servers/arvr/arvr_interface.cpp b/servers/arvr/arvr_interface.cpp
index b599e1c5cc..29478ee994 100644
--- a/servers/arvr/arvr_interface.cpp
+++ b/servers/arvr/arvr_interface.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "arvr_interface.h"
void ARVRInterface::_bind_methods() {
diff --git a/servers/arvr/arvr_interface.h b/servers/arvr/arvr_interface.h
index a70c7cec0e..0b922c5892 100644
--- a/servers/arvr/arvr_interface.h
+++ b/servers/arvr/arvr_interface.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ARVR_INTERFACE_H
#define ARVR_INTERFACE_H
diff --git a/servers/arvr/arvr_positional_tracker.cpp b/servers/arvr/arvr_positional_tracker.cpp
index 08b5bab641..c12d0bbc15 100644
--- a/servers/arvr/arvr_positional_tracker.cpp
+++ b/servers/arvr/arvr_positional_tracker.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* arvr_postional_tracker.cpp */
+/* arvr_positional_tracker.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "arvr_positional_tracker.h"
#include "core/os/input.h"
diff --git a/servers/arvr/arvr_positional_tracker.h b/servers/arvr/arvr_positional_tracker.h
index 884aae3076..525e47a681 100644
--- a/servers/arvr/arvr_positional_tracker.h
+++ b/servers/arvr/arvr_positional_tracker.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef ARVR_POSITIONAL_TRACKER_H
#define ARVR_POSITIONAL_TRACKER_H
diff --git a/servers/arvr_server.cpp b/servers/arvr_server.cpp
index 441a7581d1..d373a7d6f5 100644
--- a/servers/arvr_server.cpp
+++ b/servers/arvr_server.cpp
@@ -67,11 +67,11 @@ void ARVRServer::_bind_methods() {
BIND_ENUM_CONSTANT(RESET_BUT_KEEP_TILT);
BIND_ENUM_CONSTANT(DONT_RESET_ROTATION);
- ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "name")));
- ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING, "name")));
+ ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "interface_name")));
+ ADD_SIGNAL(MethodInfo("interface_removed", PropertyInfo(Variant::STRING, "interface_name")));
- ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
- ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING, "name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
+ ADD_SIGNAL(MethodInfo("tracker_added", PropertyInfo(Variant::STRING, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
+ ADD_SIGNAL(MethodInfo("tracker_removed", PropertyInfo(Variant::STRING, "tracker_name"), PropertyInfo(Variant::INT, "type"), PropertyInfo(Variant::INT, "id")));
};
real_t ARVRServer::get_world_scale() const {
@@ -212,7 +212,7 @@ Array ARVRServer::get_interfaces() const {
};
/*
- A little extra info on the tracker ids, these are unique per tracker type so we get soem consistency in recognising our trackers, specifically controllers.
+ A little extra info on the tracker ids, these are unique per tracker type so we get some consistency in recognising our trackers, specifically controllers.
The first controller that is turned of will get ID 1, the second will get ID 2, etc.
The magic happens when one of the controllers is turned off, say controller 1 turns off, controller 2 will remain controller 2, controller 3 will remain controller 3.
diff --git a/servers/arvr_server.h b/servers/arvr_server.h
index cb0e3949d4..34f143c0e0 100644
--- a/servers/arvr_server.h
+++ b/servers/arvr_server.h
@@ -95,7 +95,7 @@ public:
/*
World scale allows you to specify a scale factor that is applied to all positioning vectors in our VR world in essence scaling up, or scaling down the world.
For stereoscopic rendering specifically this is very important to give an accurate sense of scale.
- Add controllers into the mix and an accurate mapping of real world movement to percieved virtual movement becomes very important.
+ Add controllers into the mix and an accurate mapping of real world movement to perceived virtual movement becomes very important.
Most VR platforms, and our assumption, is that 1 unit in our virtual world equates to 1 meter in the real mode.
This scale basically effects the unit size relationship to real world size.
@@ -112,7 +112,7 @@ public:
in relation to this point.
Note that the ARVROrigin spatial node in your scene automatically updates this property and it should be used instead of
- direct access to this property and it therefor is not available in GDScript
+ direct access to this property and it therefore is not available in GDScript
Note: this should not be used in AR and should be ignored by an AR based interface as it would throw what you're looking at in the real world
and in the virtual world out of sync
diff --git a/servers/audio/audio_driver_dummy.cpp b/servers/audio/audio_driver_dummy.cpp
index 244eaf1340..1ca2334392 100644
--- a/servers/audio/audio_driver_dummy.cpp
+++ b/servers/audio/audio_driver_dummy.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_driver_dummy.h"
#include "os/os.h"
diff --git a/servers/audio/audio_driver_dummy.h b/servers/audio/audio_driver_dummy.h
index 329941bc09..ba4f69edf4 100644
--- a/servers/audio/audio_driver_dummy.h
+++ b/servers/audio/audio_driver_dummy.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_DRIVER_DUMMY_H
#define AUDIO_DRIVER_DUMMY_H
diff --git a/servers/audio/audio_effect.cpp b/servers/audio/audio_effect.cpp
index 21ffbcf0e1..b061dad259 100644
--- a/servers/audio/audio_effect.cpp
+++ b/servers/audio/audio_effect.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect.h"
AudioEffect::AudioEffect() {
diff --git a/servers/audio/audio_effect.h b/servers/audio/audio_effect.h
index 3f80fb00e2..cf732d4bdd 100644
--- a/servers/audio/audio_effect.h
+++ b/servers/audio/audio_effect.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECT_H
#define AUDIOEFFECT_H
diff --git a/servers/audio/audio_filter_sw.cpp b/servers/audio/audio_filter_sw.cpp
index e3f6b7f359..70cb7beacb 100644
--- a/servers/audio/audio_filter_sw.cpp
+++ b/servers/audio/audio_filter_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_filter_sw.h"
void AudioFilterSW::set_mode(Mode p_mode) {
diff --git a/servers/audio/audio_filter_sw.h b/servers/audio/audio_filter_sw.h
index 4d00462876..4174f9bd51 100644
--- a/servers/audio/audio_filter_sw.h
+++ b/servers/audio/audio_filter_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_FILTER_SW_H
#define AUDIO_FILTER_SW_H
diff --git a/servers/audio/audio_rb_resampler.cpp b/servers/audio/audio_rb_resampler.cpp
index 6c671d5b88..9faa4056c3 100644
--- a/servers/audio/audio_rb_resampler.cpp
+++ b/servers/audio/audio_rb_resampler.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_rb_resampler.h"
#include "core/math/math_funcs.h"
#include "os/os.h"
@@ -40,7 +41,7 @@ int AudioRBResampler::get_channel_count() const {
return channels;
}
-// Linear interpolation based sample rate convertion (low quality)
+// Linear interpolation based sample rate conversion (low quality)
// Note that AudioStreamPlaybackResampled::mix has better algorithm,
// but it wasn't obvious to integrate that with VideoPlayer
template <int C>
diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h
index 0359093e30..6ef79c93fa 100644
--- a/servers/audio/audio_rb_resampler.h
+++ b/servers/audio/audio_rb_resampler.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_RB_RESAMPLER_H
#define AUDIO_RB_RESAMPLER_H
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index 739ebb7cd9..0ad30987e7 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_stream.h"
//////////////////////////////
@@ -90,6 +91,13 @@ void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale,
}
////////////////////////////////
+void AudioStream::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("get_length"), &AudioStream::get_length);
+}
+
+////////////////////////////////
+
void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
audio_stream = p_audio_stream;
@@ -135,6 +143,14 @@ String AudioStreamRandomPitch::get_stream_name() const {
return "RandomPitch";
}
+float AudioStreamRandomPitch::get_length() const {
+ if (audio_stream.is_valid()) {
+ return audio_stream->get_length();
+ }
+
+ return 0;
+}
+
void AudioStreamRandomPitch::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_audio_stream", "stream"), &AudioStreamRandomPitch::set_audio_stream);
@@ -208,14 +224,6 @@ void AudioStreamPlaybackRandomPitch::mix(AudioFrame *p_buffer, float p_rate_scal
}
}
-float AudioStreamPlaybackRandomPitch::get_length() const {
- if (playing.is_valid()) {
- return playing->get_length();
- }
-
- return 0;
-}
-
AudioStreamPlaybackRandomPitch::~AudioStreamPlaybackRandomPitch() {
random_pitch->playbacks.erase(this);
}
diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h
index f3db58ada3..fda4fc2ccc 100644
--- a/servers/audio/audio_stream.h
+++ b/servers/audio/audio_stream.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_STREAM_H
#define AUDIO_STREAM_H
@@ -49,8 +50,6 @@ public:
virtual void seek(float p_time) = 0;
virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) = 0;
-
- virtual float get_length() const = 0; //if supported, otherwise return 0
};
class AudioStreamPlaybackResampled : public AudioStreamPlayback {
@@ -84,9 +83,14 @@ class AudioStream : public Resource {
GDCLASS(AudioStream, Resource)
OBJ_SAVE_TYPE(AudioStream) //children are all saved as AudioStream, so they can be exchanged
+protected:
+ static void _bind_methods();
+
public:
virtual Ref<AudioStreamPlayback> instance_playback() = 0;
virtual String get_stream_name() const = 0;
+
+ virtual float get_length() const = 0; //if supported, otherwise return 0
};
class AudioStreamPlaybackRandomPitch;
@@ -113,6 +117,8 @@ public:
virtual Ref<AudioStreamPlayback> instance_playback();
virtual String get_stream_name() const;
+ virtual float get_length() const; //if supported, otherwise return 0
+
AudioStreamRandomPitch();
};
@@ -138,8 +144,6 @@ public:
virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames);
- virtual float get_length() const; //if supported, otherwise return 0
-
~AudioStreamPlaybackRandomPitch();
};
diff --git a/servers/audio/effects/audio_effect_amplify.cpp b/servers/audio/effects/audio_effect_amplify.cpp
index 542019d32c..9c8dfa8cb9 100644
--- a/servers/audio/effects/audio_effect_amplify.cpp
+++ b/servers/audio/effects/audio_effect_amplify.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_amplify.h"
void AudioEffectAmplifyInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
diff --git a/servers/audio/effects/audio_effect_amplify.h b/servers/audio/effects/audio_effect_amplify.h
index 88c7d8f73f..1096dc04df 100644
--- a/servers/audio/effects/audio_effect_amplify.h
+++ b/servers/audio/effects/audio_effect_amplify.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTAMPLIFY_H
#define AUDIOEFFECTAMPLIFY_H
diff --git a/servers/audio/effects/audio_effect_chorus.cpp b/servers/audio/effects/audio_effect_chorus.cpp
index 7945fc6c08..f2f554a09b 100644
--- a/servers/audio/effects/audio_effect_chorus.cpp
+++ b/servers/audio/effects/audio_effect_chorus.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_chorus.h"
#include "math_funcs.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_chorus.h b/servers/audio/effects/audio_effect_chorus.h
index f1e0e16f3d..a4646df7d7 100644
--- a/servers/audio/effects/audio_effect_chorus.h
+++ b/servers/audio/effects/audio_effect_chorus.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTCHORUS_H
#define AUDIOEFFECTCHORUS_H
diff --git a/servers/audio/effects/audio_effect_compressor.cpp b/servers/audio/effects/audio_effect_compressor.cpp
index 27c59ce356..0252b2f341 100644
--- a/servers/audio/effects/audio_effect_compressor.cpp
+++ b/servers/audio/effects/audio_effect_compressor.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_compressor.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_compressor.h b/servers/audio/effects/audio_effect_compressor.h
index ca87659a34..ef11249415 100644
--- a/servers/audio/effects/audio_effect_compressor.h
+++ b/servers/audio/effects/audio_effect_compressor.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTCOMPRESSOR_H
#define AUDIOEFFECTCOMPRESSOR_H
diff --git a/servers/audio/effects/audio_effect_delay.cpp b/servers/audio/effects/audio_effect_delay.cpp
index 98283d6453..e3af898afa 100644
--- a/servers/audio/effects/audio_effect_delay.cpp
+++ b/servers/audio/effects/audio_effect_delay.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_delay.h"
#include "math_funcs.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_delay.h b/servers/audio/effects/audio_effect_delay.h
index cd45d0e9e7..f173bd6dfc 100644
--- a/servers/audio/effects/audio_effect_delay.h
+++ b/servers/audio/effects/audio_effect_delay.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTDELAY_H
#define AUDIOEFFECTDELAY_H
diff --git a/servers/audio/effects/audio_effect_distortion.cpp b/servers/audio/effects/audio_effect_distortion.cpp
index 2105fd42d7..c9ac0db644 100644
--- a/servers/audio/effects/audio_effect_distortion.cpp
+++ b/servers/audio/effects/audio_effect_distortion.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_distortion.h"
#include "math_funcs.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_distortion.h b/servers/audio/effects/audio_effect_distortion.h
index d4f7076864..8d9ff1c03f 100644
--- a/servers/audio/effects/audio_effect_distortion.h
+++ b/servers/audio/effects/audio_effect_distortion.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTDISTORTION_H
#define AUDIOEFFECTDISTORTION_H
diff --git a/servers/audio/effects/audio_effect_eq.cpp b/servers/audio/effects/audio_effect_eq.cpp
index 49a2b17c54..a30fca4e8d 100644
--- a/servers/audio/effects/audio_effect_eq.cpp
+++ b/servers/audio/effects/audio_effect_eq.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_eq.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_eq.h b/servers/audio/effects/audio_effect_eq.h
index 70c2cf57b9..c45fb753ea 100644
--- a/servers/audio/effects/audio_effect_eq.h
+++ b/servers/audio/effects/audio_effect_eq.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTEQ_H
#define AUDIOEFFECTEQ_H
diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp
index e4a6aa23b2..75a43d2d41 100644
--- a/servers/audio/effects/audio_effect_filter.cpp
+++ b/servers/audio/effects/audio_effect_filter.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_filter.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_filter.h b/servers/audio/effects/audio_effect_filter.h
index 39506d50ec..11978882bc 100644
--- a/servers/audio/effects/audio_effect_filter.h
+++ b/servers/audio/effects/audio_effect_filter.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTFILTER_H
#define AUDIOEFFECTFILTER_H
diff --git a/servers/audio/effects/audio_effect_limiter.cpp b/servers/audio/effects/audio_effect_limiter.cpp
index f746f0b94a..77454dc57b 100644
--- a/servers/audio/effects/audio_effect_limiter.cpp
+++ b/servers/audio/effects/audio_effect_limiter.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_limiter.h"
void AudioEffectLimiterInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
diff --git a/servers/audio/effects/audio_effect_limiter.h b/servers/audio/effects/audio_effect_limiter.h
index 841a6c7e4e..8077d2da23 100644
--- a/servers/audio/effects/audio_effect_limiter.h
+++ b/servers/audio/effects/audio_effect_limiter.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_EFFECT_LIMITER_H
#define AUDIO_EFFECT_LIMITER_H
diff --git a/servers/audio/effects/audio_effect_panner.cpp b/servers/audio/effects/audio_effect_panner.cpp
index a55f476f40..6b6ca405e0 100644
--- a/servers/audio/effects/audio_effect_panner.cpp
+++ b/servers/audio/effects/audio_effect_panner.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_panner.h"
void AudioEffectPannerInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
diff --git a/servers/audio/effects/audio_effect_panner.h b/servers/audio/effects/audio_effect_panner.h
index db78959b0a..cdab11c445 100644
--- a/servers/audio/effects/audio_effect_panner.h
+++ b/servers/audio/effects/audio_effect_panner.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTPANNER_H
#define AUDIOEFFECTPANNER_H
diff --git a/servers/audio/effects/audio_effect_phaser.cpp b/servers/audio/effects/audio_effect_phaser.cpp
index 4a824acf58..c0a9bd773d 100644
--- a/servers/audio/effects/audio_effect_phaser.cpp
+++ b/servers/audio/effects/audio_effect_phaser.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_phaser.h"
#include "math_funcs.h"
#include "servers/audio_server.h"
diff --git a/servers/audio/effects/audio_effect_phaser.h b/servers/audio/effects/audio_effect_phaser.h
index 6755a0718c..96ba2b0abf 100644
--- a/servers/audio/effects/audio_effect_phaser.h
+++ b/servers/audio/effects/audio_effect_phaser.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_EFFECT_PHASER_H
#define AUDIO_EFFECT_PHASER_H
diff --git a/servers/audio/effects/audio_effect_pitch_shift.cpp b/servers/audio/effects/audio_effect_pitch_shift.cpp
index 6db31f259e..ddd0a0db6b 100644
--- a/servers/audio/effects/audio_effect_pitch_shift.cpp
+++ b/servers/audio/effects/audio_effect_pitch_shift.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_pitch_shift.h"
#include "math_funcs.h"
diff --git a/servers/audio/effects/audio_effect_pitch_shift.h b/servers/audio/effects/audio_effect_pitch_shift.h
index 3b9c35f6c4..f1c78d752f 100644
--- a/servers/audio/effects/audio_effect_pitch_shift.h
+++ b/servers/audio/effects/audio_effect_pitch_shift.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_EFFECT_PITCH_SHIFT_H
#define AUDIO_EFFECT_PITCH_SHIFT_H
diff --git a/servers/audio/effects/audio_effect_reverb.cpp b/servers/audio/effects/audio_effect_reverb.cpp
index f8750144b1..162c0a1445 100644
--- a/servers/audio/effects/audio_effect_reverb.cpp
+++ b/servers/audio/effects/audio_effect_reverb.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_reverb.h"
#include "servers/audio_server.h"
void AudioEffectReverbInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
@@ -95,7 +96,7 @@ void AudioEffectReverb::set_predelay_msec(float p_msec) {
void AudioEffectReverb::set_predelay_feedback(float p_feedback) {
- predelay_fb = p_feedback;
+ predelay_fb = CLAMP(p_feedback, 0, 0.98);
}
void AudioEffectReverb::set_room_size(float p_size) {
@@ -184,7 +185,7 @@ void AudioEffectReverb::_bind_methods() {
ADD_GROUP("Predelay", "predelay_");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_msec", PROPERTY_HINT_RANGE, "20,500,1"), "set_predelay_msec", "get_predelay_msec");
- ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_feedback", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_predelay_msec", "get_predelay_msec");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "predelay_feedback", PROPERTY_HINT_RANGE, "0,0.98,0.01"), "set_predelay_feedback", "get_predelay_feedback");
ADD_GROUP("", "");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "room_size", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_room_size", "get_room_size");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "damping", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_damping", "get_damping");
diff --git a/servers/audio/effects/audio_effect_reverb.h b/servers/audio/effects/audio_effect_reverb.h
index 47c9c9f112..5646fd2238 100644
--- a/servers/audio/effects/audio_effect_reverb.h
+++ b/servers/audio/effects/audio_effect_reverb.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTREVERB_H
#define AUDIOEFFECTREVERB_H
diff --git a/servers/audio/effects/audio_effect_stereo_enhance.cpp b/servers/audio/effects/audio_effect_stereo_enhance.cpp
index ea2ecba4f4..cf5228f8b6 100644
--- a/servers/audio/effects/audio_effect_stereo_enhance.cpp
+++ b/servers/audio/effects/audio_effect_stereo_enhance.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_effect_stereo_enhance.h"
#include "servers/audio_server.h"
void AudioEffectStereoEnhanceInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
diff --git a/servers/audio/effects/audio_effect_stereo_enhance.h b/servers/audio/effects/audio_effect_stereo_enhance.h
index aa7cd3c6af..13dd4ac042 100644
--- a/servers/audio/effects/audio_effect_stereo_enhance.h
+++ b/servers/audio/effects/audio_effect_stereo_enhance.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIOEFFECTSTEREOENHANCE_H
#define AUDIOEFFECTSTEREOENHANCE_H
diff --git a/servers/audio/reverb_sw.cpp b/servers/audio/reverb_sw.cpp
index 765bbf6996..52e7699deb 100644
--- a/servers/audio/reverb_sw.cpp
+++ b/servers/audio/reverb_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "reverb_sw.h"
#include "print_string.h"
#include "stdlib.h"
diff --git a/servers/audio/reverb_sw.h b/servers/audio/reverb_sw.h
index 29ce47aaa5..15f9a43183 100644
--- a/servers/audio/reverb_sw.h
+++ b/servers/audio/reverb_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REVERB_SW_H
#define REVERB_SW_H
diff --git a/servers/audio/voice_rb_sw.h b/servers/audio/voice_rb_sw.h
index 5e48f948cf..42045428a8 100644
--- a/servers/audio/voice_rb_sw.h
+++ b/servers/audio/voice_rb_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VOICE_RB_SW_H
#define VOICE_RB_SW_H
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 0317fe45ae..5c453a3113 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "audio_server.h"
#include "io/resource_loader.h"
#include "os/file_access.h"
@@ -122,7 +123,6 @@ int AudioDriverManager::get_driver_count() {
}
void AudioDriverManager::initialize(int p_driver) {
- AudioDriver *driver;
int failed_driver = -1;
// Check if there is a selected driver
@@ -1267,16 +1267,16 @@ bool AudioBusLayout::_get(const StringName &p_name, Variant &r_ret) const {
void AudioBusLayout::_get_property_list(List<PropertyInfo> *p_list) const {
for (int i = 0; i < buses.size(); i++) {
- p_list->push_back(PropertyInfo(Variant::STRING, "bus/" + itos(i) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/solo", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/mute", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/bypass_fx", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/volume_db", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/send", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::STRING, "bus/" + itos(i) + "/name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/solo", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/mute", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/bypass_fx", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/volume_db", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::REAL, "bus/" + itos(i) + "/send", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
for (int j = 0; j < buses[i].effects.size(); j++) {
- p_list->push_back(PropertyInfo(Variant::OBJECT, "bus/" + itos(i) + "/effect/" + itos(j) + "/effect", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
- p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/effect/" + itos(j) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, "bus/" + itos(i) + "/effect/" + itos(j) + "/effect", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::BOOL, "bus/" + itos(i) + "/effect/" + itos(j) + "/enabled", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
}
}
}
diff --git a/servers/audio_server.h b/servers/audio_server.h
index 263bcd9818..188d38db94 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AUDIO_SERVER_H
#define AUDIO_SERVER_H
diff --git a/servers/physics/area_pair_sw.cpp b/servers/physics/area_pair_sw.cpp
index 7b4a520eba..d2fef0ab77 100644
--- a/servers/physics/area_pair_sw.cpp
+++ b/servers/physics/area_pair_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area_pair_sw.h"
#include "collision_solver_sw.h"
diff --git a/servers/physics/area_pair_sw.h b/servers/physics/area_pair_sw.h
index 3095fea583..b66599dd11 100644
--- a/servers/physics/area_pair_sw.h
+++ b/servers/physics/area_pair_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_PAIR_SW_H
#define AREA_PAIR_SW_H
diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp
index 373e5788d7..8f9d4075b8 100644
--- a/servers/physics/area_sw.cpp
+++ b/servers/physics/area_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area_sw.h"
#include "body_sw.h"
#include "space_sw.h"
diff --git a/servers/physics/area_sw.h b/servers/physics/area_sw.h
index 0295f6ab3a..ae19b0e04e 100644
--- a/servers/physics/area_sw.h
+++ b/servers/physics/area_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_SW_H
#define AREA_SW_H
diff --git a/servers/physics/body_pair_sw.cpp b/servers/physics/body_pair_sw.cpp
index 2d8ab44ddb..882d201f61 100644
--- a/servers/physics/body_pair_sw.cpp
+++ b/servers/physics/body_pair_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "body_pair_sw.h"
#include "collision_solver_sw.h"
diff --git a/servers/physics/body_pair_sw.h b/servers/physics/body_pair_sw.h
index b65711340b..fd85d77718 100644
--- a/servers/physics/body_pair_sw.h
+++ b/servers/physics/body_pair_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BODY_PAIR_SW_H
#define BODY_PAIR_SW_H
diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp
index 95101d6f8e..cc9681193c 100644
--- a/servers/physics/body_sw.cpp
+++ b/servers/physics/body_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "body_sw.h"
#include "area_sw.h"
#include "space_sw.h"
diff --git a/servers/physics/body_sw.h b/servers/physics/body_sw.h
index 85c40bc527..e8ea5531e5 100644
--- a/servers/physics/body_sw.h
+++ b/servers/physics/body_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BODY_SW_H
#define BODY_SW_H
diff --git a/servers/physics/broad_phase_basic.cpp b/servers/physics/broad_phase_basic.cpp
index d06279c45a..52483a8b14 100644
--- a/servers/physics/broad_phase_basic.cpp
+++ b/servers/physics/broad_phase_basic.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_basic.h"
#include "list.h"
#include "print_string.h"
diff --git a/servers/physics/broad_phase_basic.h b/servers/physics/broad_phase_basic.h
index b291e988a3..47fcdb3060 100644
--- a/servers/physics/broad_phase_basic.h
+++ b/servers/physics/broad_phase_basic.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_BASIC_H
#define BROAD_PHASE_BASIC_H
diff --git a/servers/physics/broad_phase_octree.cpp b/servers/physics/broad_phase_octree.cpp
index b71489c575..7f43fbdb6a 100644
--- a/servers/physics/broad_phase_octree.cpp
+++ b/servers/physics/broad_phase_octree.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_octree.h"
#include "collision_object_sw.h"
diff --git a/servers/physics/broad_phase_octree.h b/servers/physics/broad_phase_octree.h
index 5c37f51cbe..e7028eba98 100644
--- a/servers/physics/broad_phase_octree.h
+++ b/servers/physics/broad_phase_octree.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_OCTREE_H
#define BROAD_PHASE_OCTREE_H
diff --git a/servers/physics/broad_phase_sw.cpp b/servers/physics/broad_phase_sw.cpp
index 619aab7e46..2a490c3e80 100644
--- a/servers/physics/broad_phase_sw.cpp
+++ b/servers/physics/broad_phase_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_sw.h"
BroadPhaseSW::CreateFunction BroadPhaseSW::create_func = NULL;
diff --git a/servers/physics/broad_phase_sw.h b/servers/physics/broad_phase_sw.h
index ef55f881d5..7559942cd4 100644
--- a/servers/physics/broad_phase_sw.h
+++ b/servers/physics/broad_phase_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_SW_H
#define BROAD_PHASE_SW_H
diff --git a/servers/physics/collision_object_sw.cpp b/servers/physics/collision_object_sw.cpp
index 7b5d960357..f7a58a9cf2 100644
--- a/servers/physics/collision_object_sw.cpp
+++ b/servers/physics/collision_object_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_object_sw.h"
#include "servers/physics/physics_server_sw.h"
#include "space_sw.h"
diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h
index 6683cabd5b..f5d32e56a0 100644
--- a/servers/physics/collision_object_sw.h
+++ b/servers/physics/collision_object_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_OBJECT_SW_H
#define COLLISION_OBJECT_SW_H
diff --git a/servers/physics/collision_solver_sat.cpp b/servers/physics/collision_solver_sat.cpp
index 30a0f5ce94..eefb0f0396 100644
--- a/servers/physics/collision_solver_sat.cpp
+++ b/servers/physics/collision_solver_sat.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_solver_sat.h"
#include "geometry.h"
diff --git a/servers/physics/collision_solver_sat.h b/servers/physics/collision_solver_sat.h
index 3ebfa88256..1d83d9889d 100644
--- a/servers/physics/collision_solver_sat.h
+++ b/servers/physics/collision_solver_sat.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SOLVER_SAT_H
#define COLLISION_SOLVER_SAT_H
diff --git a/servers/physics/collision_solver_sw.cpp b/servers/physics/collision_solver_sw.cpp
index ce56b004f6..e26a7a4d89 100644
--- a/servers/physics/collision_solver_sw.cpp
+++ b/servers/physics/collision_solver_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_solver_sw.h"
#include "collision_solver_sat.h"
diff --git a/servers/physics/collision_solver_sw.h b/servers/physics/collision_solver_sw.h
index 0c3418a4ec..cbcb6b850a 100644
--- a/servers/physics/collision_solver_sw.h
+++ b/servers/physics/collision_solver_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SOLVER_SW_H
#define COLLISION_SOLVER_SW_H
diff --git a/servers/physics/constraint_sw.h b/servers/physics/constraint_sw.h
index a11ac04ffd..a641f06f0c 100644
--- a/servers/physics/constraint_sw.h
+++ b/servers/physics/constraint_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONSTRAINT_SW_H
#define CONSTRAINT_SW_H
diff --git a/servers/physics/gjk_epa.cpp b/servers/physics/gjk_epa.cpp
index 7a2eb9b0ad..a42b7ed82b 100644
--- a/servers/physics/gjk_epa.cpp
+++ b/servers/physics/gjk_epa.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "gjk_epa.h"
/* Disabling formatting for thirdparty code snippet */
diff --git a/servers/physics/gjk_epa.h b/servers/physics/gjk_epa.h
index bc00de0f6c..f6d052608e 100644
--- a/servers/physics/gjk_epa.h
+++ b/servers/physics/gjk_epa.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef GJK_EPA_H
#define GJK_EPA_H
diff --git a/servers/physics/joints_sw.h b/servers/physics/joints_sw.h
index 1a49e84392..af27b1c25b 100644
--- a/servers/physics/joints_sw.h
+++ b/servers/physics/joints_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOINTS_SW_H
#define JOINTS_SW_H
diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp
index fc6ba534e6..5681ca838a 100644
--- a/servers/physics/physics_server_sw.cpp
+++ b/servers/physics/physics_server_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_server_sw.h"
#include "broad_phase_basic.h"
diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h
index a64ebf76b6..132ac78968 100644
--- a/servers/physics/physics_server_sw.h
+++ b/servers/physics/physics_server_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_SERVER_SW
#define PHYSICS_SERVER_SW
diff --git a/servers/physics/shape_sw.cpp b/servers/physics/shape_sw.cpp
index 5ac1ba46d7..5a58742958 100644
--- a/servers/physics/shape_sw.cpp
+++ b/servers/physics/shape_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shape_sw.h"
#include "geometry.h"
diff --git a/servers/physics/shape_sw.h b/servers/physics/shape_sw.h
index 1bcbb91f90..4a9a6289ff 100644
--- a/servers/physics/shape_sw.h
+++ b/servers/physics/shape_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHAPE_SW_H
#define SHAPE_SW_H
diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp
index d66886ad91..fe6c42a531 100644
--- a/servers/physics/space_sw.cpp
+++ b/servers/physics/space_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "space_sw.h"
#include "collision_solver_sw.h"
diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h
index c080d82785..0d519ea50b 100644
--- a/servers/physics/space_sw.h
+++ b/servers/physics/space_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPACE_SW_H
#define SPACE_SW_H
diff --git a/servers/physics/step_sw.cpp b/servers/physics/step_sw.cpp
index 662d54b6de..ad08cb6353 100644
--- a/servers/physics/step_sw.cpp
+++ b/servers/physics/step_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "step_sw.h"
#include "joints_sw.h"
diff --git a/servers/physics/step_sw.h b/servers/physics/step_sw.h
index 3286d8085e..25e9fedf79 100644
--- a/servers/physics/step_sw.h
+++ b/servers/physics/step_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STEP_SW_H
#define STEP_SW_H
diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp
index db43ca840f..037c92bac6 100644
--- a/servers/physics_2d/area_2d_sw.cpp
+++ b/servers/physics_2d/area_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area_2d_sw.h"
#include "body_2d_sw.h"
#include "space_2d_sw.h"
diff --git a/servers/physics_2d/area_2d_sw.h b/servers/physics_2d/area_2d_sw.h
index a2925a4d2d..d2058ad5af 100644
--- a/servers/physics_2d/area_2d_sw.h
+++ b/servers/physics_2d/area_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_2D_SW_H
#define AREA_2D_SW_H
diff --git a/servers/physics_2d/area_pair_2d_sw.cpp b/servers/physics_2d/area_pair_2d_sw.cpp
index c2c1f71149..9d515d2183 100644
--- a/servers/physics_2d/area_pair_2d_sw.cpp
+++ b/servers/physics_2d/area_pair_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "area_pair_2d_sw.h"
#include "collision_solver_2d_sw.h"
diff --git a/servers/physics_2d/area_pair_2d_sw.h b/servers/physics_2d/area_pair_2d_sw.h
index 496023904c..243b99a79c 100644
--- a/servers/physics_2d/area_pair_2d_sw.h
+++ b/servers/physics_2d/area_pair_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef AREA_PAIR_2D_SW_H
#define AREA_PAIR_2D_SW_H
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp
index 38344ec20b..aa063d6c1e 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/body_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "body_2d_sw.h"
#include "area_2d_sw.h"
#include "physics_2d_server_sw.h"
diff --git a/servers/physics_2d/body_2d_sw.h b/servers/physics_2d/body_2d_sw.h
index 497b20b7ad..782adf3416 100644
--- a/servers/physics_2d/body_2d_sw.h
+++ b/servers/physics_2d/body_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BODY_2D_SW_H
#define BODY_2D_SW_H
diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp
index ca98e78b55..f51882b5ee 100644
--- a/servers/physics_2d/body_pair_2d_sw.cpp
+++ b/servers/physics_2d/body_pair_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "body_pair_2d_sw.h"
#include "collision_solver_2d_sw.h"
#include "space_2d_sw.h"
diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/body_pair_2d_sw.h
index b85136b5b4..e54a32fb46 100644
--- a/servers/physics_2d/body_pair_2d_sw.h
+++ b/servers/physics_2d/body_pair_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BODY_PAIR_2D_SW_H
#define BODY_PAIR_2D_SW_H
diff --git a/servers/physics_2d/broad_phase_2d_basic.cpp b/servers/physics_2d/broad_phase_2d_basic.cpp
index fbb32fbbf8..067d86f474 100644
--- a/servers/physics_2d/broad_phase_2d_basic.cpp
+++ b/servers/physics_2d/broad_phase_2d_basic.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_2d_basic.h"
BroadPhase2DBasic::ID BroadPhase2DBasic::create(CollisionObject2DSW *p_object_, int p_subindex) {
diff --git a/servers/physics_2d/broad_phase_2d_basic.h b/servers/physics_2d/broad_phase_2d_basic.h
index 2e08f8990f..f0f0b3df88 100644
--- a/servers/physics_2d/broad_phase_2d_basic.h
+++ b/servers/physics_2d/broad_phase_2d_basic.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_2D_BASIC_H
#define BROAD_PHASE_2D_BASIC_H
diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp
index 0351f10764..1a5b2d5e3a 100644
--- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp
+++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_2d_hash_grid.h"
#include "project_settings.h"
diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.h b/servers/physics_2d/broad_phase_2d_hash_grid.h
index b7de3ef621..5188abc837 100644
--- a/servers/physics_2d/broad_phase_2d_hash_grid.h
+++ b/servers/physics_2d/broad_phase_2d_hash_grid.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_2D_HASH_GRID_H
#define BROAD_PHASE_2D_HASH_GRID_H
diff --git a/servers/physics_2d/broad_phase_2d_sw.cpp b/servers/physics_2d/broad_phase_2d_sw.cpp
index b8fc84b8ce..6e3dce000f 100644
--- a/servers/physics_2d/broad_phase_2d_sw.cpp
+++ b/servers/physics_2d/broad_phase_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "broad_phase_2d_sw.h"
BroadPhase2DSW::CreateFunction BroadPhase2DSW::create_func = NULL;
diff --git a/servers/physics_2d/broad_phase_2d_sw.h b/servers/physics_2d/broad_phase_2d_sw.h
index 0e39c2766f..80ae970624 100644
--- a/servers/physics_2d/broad_phase_2d_sw.h
+++ b/servers/physics_2d/broad_phase_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef BROAD_PHASE_2D_SW_H
#define BROAD_PHASE_2D_SW_H
diff --git a/servers/physics_2d/collision_object_2d_sw.cpp b/servers/physics_2d/collision_object_2d_sw.cpp
index 4d33a72a69..80cdd58aeb 100644
--- a/servers/physics_2d/collision_object_2d_sw.cpp
+++ b/servers/physics_2d/collision_object_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_object_2d_sw.h"
#include "space_2d_sw.h"
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h
index 0ffdca21d3..5f25c27158 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/collision_object_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_OBJECT_2D_SW_H
#define COLLISION_OBJECT_2D_SW_H
diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp
index fc7d9f7760..0d1ffca50d 100644
--- a/servers/physics_2d/collision_solver_2d_sat.cpp
+++ b/servers/physics_2d/collision_solver_2d_sat.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_solver_2d_sat.h"
#include "geometry.h"
diff --git a/servers/physics_2d/collision_solver_2d_sat.h b/servers/physics_2d/collision_solver_2d_sat.h
index 939e3942f7..ba35c63fbc 100644
--- a/servers/physics_2d/collision_solver_2d_sat.h
+++ b/servers/physics_2d/collision_solver_2d_sat.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SOLVER_2D_SAT_H
#define COLLISION_SOLVER_2D_SAT_H
diff --git a/servers/physics_2d/collision_solver_2d_sw.cpp b/servers/physics_2d/collision_solver_2d_sw.cpp
index 1853c02288..a6ef110149 100644
--- a/servers/physics_2d/collision_solver_2d_sw.cpp
+++ b/servers/physics_2d/collision_solver_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "collision_solver_2d_sw.h"
#include "collision_solver_2d_sat.h"
diff --git a/servers/physics_2d/collision_solver_2d_sw.h b/servers/physics_2d/collision_solver_2d_sw.h
index 866443cd7f..e39c41fb75 100644
--- a/servers/physics_2d/collision_solver_2d_sw.h
+++ b/servers/physics_2d/collision_solver_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef COLLISION_SOLVER_2D_SW_H
#define COLLISION_SOLVER_2D_SW_H
diff --git a/servers/physics_2d/constraint_2d_sw.h b/servers/physics_2d/constraint_2d_sw.h
index 1ddf0386be..a08037bb37 100644
--- a/servers/physics_2d/constraint_2d_sw.h
+++ b/servers/physics_2d/constraint_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef CONSTRAINT_2D_SW_H
#define CONSTRAINT_2D_SW_H
diff --git a/servers/physics_2d/joints_2d_sw.cpp b/servers/physics_2d/joints_2d_sw.cpp
index 9865d375f0..7fba8acebd 100644
--- a/servers/physics_2d/joints_2d_sw.cpp
+++ b/servers/physics_2d/joints_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "joints_2d_sw.h"
#include "space_2d_sw.h"
diff --git a/servers/physics_2d/joints_2d_sw.h b/servers/physics_2d/joints_2d_sw.h
index af66f408a7..e2002eef0d 100644
--- a/servers/physics_2d/joints_2d_sw.h
+++ b/servers/physics_2d/joints_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef JOINTS_2D_SW_H
#define JOINTS_2D_SW_H
diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp
index 42b1cb8dda..7d7bbbebac 100644
--- a/servers/physics_2d/physics_2d_server_sw.cpp
+++ b/servers/physics_2d/physics_2d_server_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_2d_server_sw.h"
#include "broad_phase_2d_basic.h"
#include "broad_phase_2d_hash_grid.h"
diff --git a/servers/physics_2d/physics_2d_server_sw.h b/servers/physics_2d/physics_2d_server_sw.h
index a4a4b2e582..97edb85582 100644
--- a/servers/physics_2d/physics_2d_server_sw.h
+++ b/servers/physics_2d/physics_2d_server_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_2D_SERVER_SW
#define PHYSICS_2D_SERVER_SW
diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
index 97e35e6d21..804b93ecd8 100644
--- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp
+++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_2d_server_wrap_mt.h"
#include "os/os.h"
diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h
index 3b63871058..276c37c577 100644
--- a/servers/physics_2d/physics_2d_server_wrap_mt.h
+++ b/servers/physics_2d/physics_2d_server_wrap_mt.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS2DSERVERWRAPMT_H
#define PHYSICS2DSERVERWRAPMT_H
diff --git a/servers/physics_2d/shape_2d_sw.cpp b/servers/physics_2d/shape_2d_sw.cpp
index 7f9ca11846..4605516fe0 100644
--- a/servers/physics_2d/shape_2d_sw.cpp
+++ b/servers/physics_2d/shape_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shape_2d_sw.h"
#include "geometry.h"
diff --git a/servers/physics_2d/shape_2d_sw.h b/servers/physics_2d/shape_2d_sw.h
index 82179e0124..c4c267b368 100644
--- a/servers/physics_2d/shape_2d_sw.h
+++ b/servers/physics_2d/shape_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHAPE_2D_2DSW_H
#define SHAPE_2D_2DSW_H
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index 687bb9e435..d3b81c627a 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "space_2d_sw.h"
#include "collision_solver_2d_sw.h"
diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h
index 9e1babf5f3..a18bb2be2d 100644
--- a/servers/physics_2d/space_2d_sw.h
+++ b/servers/physics_2d/space_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SPACE_2D_SW_H
#define SPACE_2D_SW_H
diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/step_2d_sw.cpp
index 0ab57647b4..6108b885f0 100644
--- a/servers/physics_2d/step_2d_sw.cpp
+++ b/servers/physics_2d/step_2d_sw.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "step_2d_sw.h"
#include "os/os.h"
diff --git a/servers/physics_2d/step_2d_sw.h b/servers/physics_2d/step_2d_sw.h
index bac654fc00..4aa669d3a7 100644
--- a/servers/physics_2d/step_2d_sw.h
+++ b/servers/physics_2d/step_2d_sw.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef STEP_2D_SW_H
#define STEP_2D_SW_H
diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp
index 0762dc5a8d..180abc406c 100644
--- a/servers/physics_2d_server.cpp
+++ b/servers/physics_2d_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_2d_server.h"
#include "core/project_settings.h"
#include "print_string.h"
@@ -107,6 +108,17 @@ void Physics2DDirectBodyState::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_step"), &Physics2DDirectBodyState::get_step);
ClassDB::bind_method(D_METHOD("integrate_forces"), &Physics2DDirectBodyState::integrate_forces);
ClassDB::bind_method(D_METHOD("get_space_state"), &Physics2DDirectBodyState::get_space_state);
+
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "", "get_step");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_mass"), "", "get_inverse_mass");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_inertia"), "", "get_inverse_inertia");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_angular_damp"), "", "get_total_angular_damp");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_linear_damp"), "", "get_total_linear_damp");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "total_gravity"), "", "get_total_gravity");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleep_state", "is_sleeping");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform");
}
Physics2DDirectBodyState::Physics2DDirectBodyState() {}
@@ -203,6 +215,14 @@ void Physics2DShapeQueryParameters::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &Physics2DShapeQueryParameters::set_exclude);
ClassDB::bind_method(D_METHOD("get_exclude"), &Physics2DShapeQueryParameters::get_exclude);
+
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_layer", "get_collision_layer");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::_RID) + ":"), "set_exclude", "get_exclude");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "set_motion", "get_motion");
+ //ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", ""); // FIXME: Lacks a getter
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "shape_rid"), "set_shape_rid", "get_shape_rid");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform");
}
Physics2DShapeQueryParameters::Physics2DShapeQueryParameters() {
@@ -435,6 +455,16 @@ void Physics2DTestMotionResult::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_collider_rid"), &Physics2DTestMotionResult::get_collider_rid);
ClassDB::bind_method(D_METHOD("get_collider"), &Physics2DTestMotionResult::get_collider);
ClassDB::bind_method(D_METHOD("get_collider_shape"), &Physics2DTestMotionResult::get_collider_shape);
+
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion"), "", "get_motion");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "motion_remainder"), "", "get_motion_remainder");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collision_point"), "", "get_collision_point");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collision_normal"), "", "get_collision_normal");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "collider_velocity"), "", "get_collider_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_id", PROPERTY_HINT_OBJECT_ID), "", "get_collider_id");
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "collider_rid"), "", "get_collider_rid");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "collider"), "", "get_collider");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_shape"), "", "get_collider_shape");
}
Physics2DTestMotionResult::Physics2DTestMotionResult() {
diff --git a/servers/physics_2d_server.h b/servers/physics_2d_server.h
index 017866ffe1..be447ed137 100644
--- a/servers/physics_2d_server.h
+++ b/servers/physics_2d_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_2D_SERVER_H
#define PHYSICS_2D_SERVER_H
diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp
index db315e4324..9d4807fcf0 100644
--- a/servers/physics_server.cpp
+++ b/servers/physics_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "physics_server.h"
#include "core/project_settings.h"
#include "print_string.h"
@@ -112,6 +113,19 @@ void PhysicsDirectBodyState::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_step"), &PhysicsDirectBodyState::get_step);
ClassDB::bind_method(D_METHOD("integrate_forces"), &PhysicsDirectBodyState::integrate_forces);
ClassDB::bind_method(D_METHOD("get_space_state"), &PhysicsDirectBodyState::get_space_state);
+
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "step"), "", "get_step");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "inverse_mass"), "", "get_inverse_mass");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_angular_damp"), "", "get_total_angular_damp");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "total_linear_damp"), "", "get_total_linear_damp");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "inverse_inertia"), "", "get_inverse_inertia");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "total_gravity"), "", "get_total_gravity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "center_of_mass"), "", "get_center_of_mass");
+ ADD_PROPERTY(PropertyInfo(Variant::BASIS, "principal_inertia_axes"), "", "get_principal_inertia_axes");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "angular_velocity"), "set_angular_velocity", "get_angular_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sleeping"), "set_sleep_state", "is_sleeping");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "transform"), "set_transform", "get_transform");
}
PhysicsDirectBodyState::PhysicsDirectBodyState() {}
@@ -197,6 +211,13 @@ void PhysicsShapeQueryParameters::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_exclude", "exclude"), &PhysicsShapeQueryParameters::set_exclude);
ClassDB::bind_method(D_METHOD("get_exclude"), &PhysicsShapeQueryParameters::get_exclude);
+
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask");
+ ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "exclude", PROPERTY_HINT_NONE, itos(Variant::_RID) + ":"), "set_exclude", "get_exclude");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "margin", PROPERTY_HINT_RANGE, "0,100,0.01"), "set_margin", "get_margin");
+ //ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", ""); // FIXME: Lacks a getter
+ ADD_PROPERTY(PropertyInfo(Variant::_RID, "shape_rid"), "set_shape_rid", "get_shape_rid");
+ ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "transform"), "set_transform", "get_transform");
}
PhysicsShapeQueryParameters::PhysicsShapeQueryParameters() {
diff --git a/servers/physics_server.h b/servers/physics_server.h
index 15e7c78be2..8b8b8f856d 100644
--- a/servers/physics_server.h
+++ b/servers/physics_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef PHYSICS_SERVER_H
#define PHYSICS_SERVER_H
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index a318b76919..aaac32a4f2 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "register_server_types.h"
#include "engine.h"
#include "project_settings.h"
diff --git a/servers/register_server_types.h b/servers/register_server_types.h
index 5fe97885d0..0af41ae424 100644
--- a/servers/register_server_types.h
+++ b/servers/register_server_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef REGISTER_SERVER_TYPES_H
#define REGISTER_SERVER_TYPES_H
diff --git a/servers/visual/rasterizer.cpp b/servers/visual/rasterizer.cpp
index ea2b3cafb8..be46690e55 100644
--- a/servers/visual/rasterizer.cpp
+++ b/servers/visual/rasterizer.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "rasterizer.h"
#include "os/os.h"
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index ba7c6f6a02..f2bb853a3b 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef RASTERIZER_H
#define RASTERIZER_H
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index 1828cf8a4b..29c27eee85 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_language.h"
#include "os/os.h"
#include "print_string.h"
@@ -3209,8 +3210,6 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui
var.precision = precision;
var.line = tk_line;
- p_block->variables[name] = var;
-
VariableDeclarationNode::Declaration decl;
decl.name = name;
@@ -3219,7 +3218,7 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui
tk = _get_token();
if (tk.type == TK_OP_ASSIGN) {
- //variable creted with assignment! must parse an expression
+ //variable created with assignment! must parse an expression
Node *n = _parse_and_reduce_expression(p_block, p_builtin_types);
if (!n)
return ERR_PARSE_ERROR;
@@ -3233,6 +3232,8 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const Map<StringName, Bui
tk = _get_token();
}
+ p_block->variables[name] = var;
+
vardecl->declarations.push_back(decl);
if (tk.type == TK_COMMA) {
diff --git a/servers/visual/shader_language.h b/servers/visual/shader_language.h
index dfadfaa30a..e8cdf1f897 100644
--- a/servers/visual/shader_language.h
+++ b/servers/visual/shader_language.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADER_LANGUAGE_H
#define SHADER_LANGUAGE_H
diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp
index 429282c10c..9042649337 100644
--- a/servers/visual/shader_types.cpp
+++ b/servers/visual/shader_types.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "shader_types.h"
const Map<StringName, ShaderLanguage::FunctionInfo> &ShaderTypes::get_functions(VS::ShaderMode p_mode) {
diff --git a/servers/visual/shader_types.h b/servers/visual/shader_types.h
index 9f0fb8b572..1f43ff9c92 100644
--- a/servers/visual/shader_types.h
+++ b/servers/visual/shader_types.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef SHADERTYPES_H
#define SHADERTYPES_H
diff --git a/servers/visual/visual_server_canvas.cpp b/servers/visual/visual_server_canvas.cpp
index 60530e48e2..d82d93a59d 100644
--- a/servers/visual/visual_server_canvas.cpp
+++ b/servers/visual/visual_server_canvas.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_canvas.h"
#include "visual_server_global.h"
#include "visual_server_viewport.h"
@@ -102,9 +103,9 @@ void VisualServerCanvas::_render_canvas_item(Item *p_canvas_item, const Transfor
}
if (ci->z_relative)
- p_z = CLAMP(p_z + ci->z, VS::CANVAS_ITEM_Z_MIN, VS::CANVAS_ITEM_Z_MAX);
+ p_z = CLAMP(p_z + ci->z_index, VS::CANVAS_ITEM_Z_MIN, VS::CANVAS_ITEM_Z_MAX);
else
- p_z = ci->z;
+ p_z = ci->z_index;
for (int i = 0; i < child_item_count; i++) {
@@ -805,14 +806,14 @@ void VisualServerCanvas::canvas_item_set_sort_children_by_y(RID p_item, bool p_e
canvas_item->sort_y = p_enable;
}
-void VisualServerCanvas::canvas_item_set_z(RID p_item, int p_z) {
+void VisualServerCanvas::canvas_item_set_z_index(RID p_item, int p_z) {
ERR_FAIL_COND(p_z < VS::CANVAS_ITEM_Z_MIN || p_z > VS::CANVAS_ITEM_Z_MAX);
Item *canvas_item = canvas_item_owner.getornull(p_item);
ERR_FAIL_COND(!canvas_item);
- canvas_item->z = p_z;
+ canvas_item->z_index = p_z;
}
void VisualServerCanvas::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) {
diff --git a/servers/visual/visual_server_canvas.h b/servers/visual/visual_server_canvas.h
index b86dd0316c..f4331ad291 100644
--- a/servers/visual/visual_server_canvas.h
+++ b/servers/visual/visual_server_canvas.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSERVERCANVAS_H
#define VISUALSERVERCANVAS_H
@@ -39,7 +40,7 @@ public:
RID parent; // canvas it belongs to
List<Item *>::Element *E;
- int z;
+ int z_index;
bool z_relative;
bool sort_y;
Color modulate;
@@ -53,7 +54,7 @@ public:
Item() {
children_order_dirty = true;
E = NULL;
- z = 0;
+ z_index = 0;
modulate = Color(1, 1, 1, 1);
self_modulate = Color(1, 1, 1, 1);
sort_y = false;
@@ -187,7 +188,7 @@ public:
void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform);
void canvas_item_add_clip_ignore(RID p_item, bool p_ignore);
void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable);
- void canvas_item_set_z(RID p_item, int p_z);
+ void canvas_item_set_z_index(RID p_item, int p_z);
void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable);
void canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect);
diff --git a/servers/visual/visual_server_global.cpp b/servers/visual/visual_server_global.cpp
index a4b2b5bae9..61a8951f75 100644
--- a/servers/visual/visual_server_global.cpp
+++ b/servers/visual/visual_server_global.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_global.h"
RasterizerStorage *VisualServerGlobals::storage = NULL;
diff --git a/servers/visual/visual_server_global.h b/servers/visual/visual_server_global.h
index 7260cc6cd1..b4888dfd50 100644
--- a/servers/visual/visual_server_global.h
+++ b/servers/visual/visual_server_global.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSERVERGLOBAL_H
#define VISUALSERVERGLOBAL_H
diff --git a/servers/visual/visual_server_light_baker.cpp b/servers/visual/visual_server_light_baker.cpp
index 73353c8141..ed87e84a03 100644
--- a/servers/visual/visual_server_light_baker.cpp
+++ b/servers/visual/visual_server_light_baker.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_light_baker.h"
VisualServerLightBaker::VisualServerLightBaker() {
diff --git a/servers/visual/visual_server_light_baker.h b/servers/visual/visual_server_light_baker.h
index d22e50fc14..77472d0994 100644
--- a/servers/visual/visual_server_light_baker.h
+++ b/servers/visual/visual_server_light_baker.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSERVERLIGHTBAKER_H
#define VISUALSERVERLIGHTBAKER_H
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index ee5b26a8a4..64a3502e40 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_raster.h"
#include "default_mouse_cursor.xpm"
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 95d7269d7a..106b84a6ff 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SERVER_RASTER_H
#define VISUAL_SERVER_RASTER_H
@@ -586,7 +587,7 @@ public:
BIND2(canvas_item_add_set_transform, RID, const Transform2D &)
BIND2(canvas_item_add_clip_ignore, RID, bool)
BIND2(canvas_item_set_sort_children_by_y, RID, bool)
- BIND2(canvas_item_set_z, RID, int)
+ BIND2(canvas_item_set_z_index, RID, int)
BIND2(canvas_item_set_z_as_relative_to_parent, RID, bool)
BIND3(canvas_item_set_copy_to_backbuffer, RID, bool, const Rect2 &)
diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp
index 9866496083..0920fa748b 100644
--- a/servers/visual/visual_server_scene.cpp
+++ b/servers/visual/visual_server_scene.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_scene.h"
#include "os/os.h"
#include "visual_server_global.h"
@@ -658,7 +659,6 @@ void VisualServerScene::instance_set_use_lightmap(RID p_instance, RID p_lightmap
Instance *instance = instance_owner.get(p_instance);
ERR_FAIL_COND(!instance);
- ERR_FAIL_COND(!is_geometry_instance(instance->base_type));
if (instance->lightmap_capture) {
InstanceLightmapCaptureData *lightmap_capture = static_cast<InstanceLightmapCaptureData *>(((Instance *)instance->lightmap_capture)->base_data);
@@ -2091,7 +2091,7 @@ bool VisualServerScene::_render_reflection_probe_step(Instance *p_instance, int
_render_scene(xform, cm, false, RID(), VSG::storage->reflection_probe_get_cull_mask(p_instance->base), p_instance->scenario->self, shadow_atlas, reflection_probe->instance, p_step);
} else {
- //do roughness postprocess step until it belives it's done
+ //do roughness postprocess step until it believes it's done
return VSG::scene_render->reflection_probe_instance_postprocess_step(reflection_probe->instance);
}
@@ -3297,6 +3297,7 @@ bool VisualServerScene::free(RID p_rid) {
Instance *instance = instance_owner.get(p_rid);
+ instance_set_use_lightmap(p_rid, RID(), RID());
instance_set_scenario(p_rid, RID());
instance_set_base(p_rid, RID());
instance_geometry_set_material_override(p_rid, RID());
diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h
index fc57225f88..206503e643 100644
--- a/servers/visual/visual_server_scene.h
+++ b/servers/visual/visual_server_scene.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSERVERSCENE_H
#define VISUALSERVERSCENE_H
diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp
index c1ee9e7847..3eb8953c1f 100644
--- a/servers/visual/visual_server_viewport.cpp
+++ b/servers/visual/visual_server_viewport.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_viewport.h"
#include "project_settings.h"
@@ -504,7 +505,7 @@ void VisualServerViewport::viewport_set_transparent_background(RID p_viewport, b
ERR_FAIL_COND(!viewport);
VSG::storage->render_target_set_flag(viewport->render_target, RasterizerStorage::RENDER_TARGET_TRANSPARENT, p_enabled);
- viewport->transparent_bg = true;
+ viewport->transparent_bg = p_enabled;
}
void VisualServerViewport::viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) {
diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h
index 24904d37e9..1d28cf22a3 100644
--- a/servers/visual/visual_server_viewport.h
+++ b/servers/visual/visual_server_viewport.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUALSERVERVIEWPORT_H
#define VISUALSERVERVIEWPORT_H
diff --git a/servers/visual/visual_server_wrap_mt.cpp b/servers/visual/visual_server_wrap_mt.cpp
index a8422b805e..094e2794ed 100644
--- a/servers/visual/visual_server_wrap_mt.cpp
+++ b/servers/visual/visual_server_wrap_mt.cpp
@@ -6,6 +6,7 @@
/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 */
@@ -26,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server_wrap_mt.h"
#include "os/os.h"
#include "project_settings.h"
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index 4062f91438..c86a8164ce 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -6,6 +6,7 @@
/* https://godotengine.org */
/*************************************************************************/
/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2018 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 */
@@ -26,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SERVER_WRAP_MT_H
#define VISUAL_SERVER_WRAP_MT_H
@@ -392,7 +394,7 @@ public:
FUNC2(viewport_set_hdr, RID, bool)
FUNC2(viewport_set_usage, RID, ViewportUsage)
- //this passes directly to avoid stalling, but it's pretty dangerous, so dont call after freeing a viewport
+ //this passes directly to avoid stalling, but it's pretty dangerous, so don't call after freeing a viewport
virtual int viewport_get_render_info(RID p_viewport, ViewportRenderInfo p_info) {
return visual_server->viewport_get_render_info(p_viewport, p_info);
}
@@ -503,7 +505,7 @@ public:
FUNC2(canvas_item_add_set_transform, RID, const Transform2D &)
FUNC2(canvas_item_add_clip_ignore, RID, bool)
FUNC2(canvas_item_set_sort_children_by_y, RID, bool)
- FUNC2(canvas_item_set_z, RID, int)
+ FUNC2(canvas_item_set_z_index, RID, int)
FUNC2(canvas_item_set_z_as_relative_to_parent, RID, bool)
FUNC3(canvas_item_set_copy_to_backbuffer, RID, bool, const Rect2 &)
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index b4949b6093..663fce85e9 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#include "visual_server.h"
#include "method_bind_ext.gen.inc"
@@ -440,9 +441,9 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
for (int i = 0; i < p_vertex_array_len; i++) {
int8_t vector[4] = {
- CLAMP(src[i].x * 127, -128, 127),
- CLAMP(src[i].y * 127, -128, 127),
- CLAMP(src[i].z * 127, -128, 127),
+ (int8_t)CLAMP(src[i].x * 127, -128, 127),
+ (int8_t)CLAMP(src[i].y * 127, -128, 127),
+ (int8_t)CLAMP(src[i].z * 127, -128, 127),
0,
};
@@ -475,10 +476,10 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
for (int i = 0; i < p_vertex_array_len; i++) {
uint8_t xyzw[4] = {
- CLAMP(src[i * 4 + 0] * 127, -128, 127),
- CLAMP(src[i * 4 + 1] * 127, -128, 127),
- CLAMP(src[i * 4 + 2] * 127, -128, 127),
- CLAMP(src[i * 4 + 3] * 127, -128, 127)
+ (uint8_t)CLAMP(src[i * 4 + 0] * 127, -128, 127),
+ (uint8_t)CLAMP(src[i * 4 + 1] * 127, -128, 127),
+ (uint8_t)CLAMP(src[i * 4 + 2] * 127, -128, 127),
+ (uint8_t)CLAMP(src[i * 4 + 3] * 127, -128, 127)
};
copymem(&vw[p_offsets[ai] + i * p_stride], xyzw, 4);
@@ -677,7 +678,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
ERR_FAIL_COND_V(indices.size() == 0, ERR_INVALID_PARAMETER);
ERR_FAIL_COND_V(indices.size() != p_index_array_len, ERR_INVALID_PARAMETER);
- /* determine wether using 16 or 32 bits indices */
+ /* determine whether using 16 or 32 bits indices */
PoolVector<int>::Read read = indices.read();
const int *src = read.ptr();
@@ -711,7 +712,7 @@ Error VisualServer::_surface_set_data(Array p_arrays, uint32_t p_format, uint32_
if (first) {
for (int i = 0; i < total_bones; i++) {
- r_bone_aabb[i].size == Vector3(-1, -1, -1); //negative means unused
+ r_bone_aabb[i].size = Vector3(-1, -1, -1); //negative means unused
}
}
@@ -942,7 +943,7 @@ void VisualServer::mesh_add_surface_from_arrays(RID p_mesh, PrimitiveType p_prim
ERR_PRINT("index_array_len==NO_INDEX_ARRAY");
break;
}
- /* determine wether using 16 or 32 bits indices */
+ /* determine whether using 16 or 32 bits indices */
if (array_len >= (1 << 16)) {
elem_size = 4;
@@ -1110,7 +1111,7 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_
ERR_PRINT("index_array_len==NO_INDEX_ARRAY");
break;
}
- /* determine wether using 16 or 32 bits indices */
+ /* determine whether using 16 or 32 bits indices */
if (p_vertex_len >= (1 << 16)) {
elem_size = 4;
@@ -1396,7 +1397,7 @@ Array VisualServer::_get_array_from_surface(uint32_t p_format, PoolVector<uint8_
} break;
case VS::ARRAY_INDEX: {
- /* determine wether using 16 or 32 bits indices */
+ /* determine whether using 16 or 32 bits indices */
PoolVector<uint8_t>::Read ir = p_index_data.read();
@@ -1611,7 +1612,7 @@ void VisualServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("canvas_item_add_set_transform", "item", "transform"), &VisualServer::canvas_item_add_set_transform);
ClassDB::bind_method(D_METHOD("canvas_item_add_clip_ignore", "item", "ignore"), &VisualServer::canvas_item_add_clip_ignore);
ClassDB::bind_method(D_METHOD("canvas_item_set_sort_children_by_y", "item", "enabled"), &VisualServer::canvas_item_set_sort_children_by_y);
- ClassDB::bind_method(D_METHOD("canvas_item_set_z", "item", "z"), &VisualServer::canvas_item_set_z);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_z_index", "item", "z_index"), &VisualServer::canvas_item_set_z_index);
ClassDB::bind_method(D_METHOD("canvas_item_set_z_as_relative_to_parent", "item", "enabled"), &VisualServer::canvas_item_set_z_as_relative_to_parent);
ClassDB::bind_method(D_METHOD("canvas_item_set_copy_to_backbuffer", "item", "enabled", "rect"), &VisualServer::canvas_item_set_copy_to_backbuffer);
ClassDB::bind_method(D_METHOD("canvas_item_clear", "item"), &VisualServer::canvas_item_clear);
@@ -1655,7 +1656,7 @@ void VisualServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("black_bars_set_margins", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_margins);
ClassDB::bind_method(D_METHOD("black_bars_set_images", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_images);
- ClassDB::bind_method(D_METHOD("free", "rid"), &VisualServer::free);
+ ClassDB::bind_method(D_METHOD("free_rid", "rid"), &VisualServer::free); // shouldn't conflict with Object::free()
ClassDB::bind_method(D_METHOD("request_frame_drawn_callback", "where", "method", "userdata"), &VisualServer::request_frame_drawn_callback);
ClassDB::bind_method(D_METHOD("draw", "swap_buffers"), &VisualServer::draw, DEFVAL(true));
diff --git a/servers/visual_server.h b/servers/visual_server.h
index e1def0b713..16ba135c30 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -27,6 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
+
#ifndef VISUAL_SERVER_H
#define VISUAL_SERVER_H
@@ -847,7 +848,7 @@ public:
virtual void canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform) = 0;
virtual void canvas_item_add_clip_ignore(RID p_item, bool p_ignore) = 0;
virtual void canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) = 0;
- virtual void canvas_item_set_z(RID p_item, int p_z) = 0;
+ virtual void canvas_item_set_z_index(RID p_item, int p_z) = 0;
virtual void canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) = 0;
virtual void canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect) = 0;
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 62690e21c7..92f24446d4 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -3,16 +3,32 @@
## b2d_convexdecomp
-- Upstream: https://github.com/erincatto/Box2D (Contributions/Utilities/ConvexDecomposition)
-- Version: TBD
+- Upstream: https://github.com/erincatto/Box2D/tree/master/Contributions/Utilities/ConvexDecomposition
+- Version: git (25615e0, 2015) with modifications
- License: zlib
+The files were adapted to Godot by removing the dependency on b2Math (replacing
+it by b2Glue.h) and commenting out some verbose printf calls.
+Upstream code has not changed in 10 years, no need to keep track of changes.
-## certs
-- Upstream: ?
+## bullet
-TODO.
+- Upstream: https://github.com/bulletphysics/bullet3
+- Version: git (d05ad4b, 2017)
+- License: zlib
+
+Files extracted from upstream source:
+
+- src/* apart from CMakeLists.txt and premake4.lua files
+- LICENSE.txt
+
+
+## certs
+
+- Upstream: Mozilla, via https://packages.ubuntu.com/xenial-updates/ca-certificates
+- Version: 2016-ish
+- License: MPL 2.0
## enet
@@ -40,8 +56,8 @@ tarball before the next update.
## etc2comp
- Upstream: https://github.com/google/etc2comp
-- Version: 9cd0f9c (git)
-- License: Apache
+- Version: git (9cd0f9c, 2017)
+- License: Apache 2.0
Files extracted from upstream source:
@@ -57,7 +73,7 @@ Files extracted from upstream source:
- Version: 1.06
- License: OFL-1.1
-Use UI font if exists, because it has tight vertical metrics and good for UI.
+Use UI font variant if available, because it has tight vertical metrics and good for UI.
### Hack Regular
@@ -67,7 +83,9 @@ Use UI font if exists, because it has tight vertical metrics and good for UI.
### DroidSans*.ttf
-- Upstream: ?
+- Upstream: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/
+- Version: ? (pre-2014 commit when DroidSansJapanese.ttf was obsoleted)
+- License: Apache 2.0
## freetype
@@ -108,7 +126,7 @@ Files extracted from upstream source:
## libogg
- Upstream: https://www.xiph.org/ogg
-- Version: 1.3.2
+- Version: 1.3.3
- License: BSD-3-Clause
Files extracted from upstream source:
@@ -135,7 +153,7 @@ Files extracted from upstream source:
## libsimplewebm
- Upstream: https://github.com/zaps166/libsimplewebm
-- Version: 05cfdc2 (git)
+- Version: git (05cfdc2, 2016)
- License: MIT, BSD-3-Clause
Files extracted from upstream source:
@@ -171,7 +189,7 @@ Files extracted from upstream source:
## libvpx
-- Upstream: http://www.webmproject.org/code/
+- Upstream: https://chromium.googlesource.com/webm/libvpx/
- Version: 1.6.0
- License: BSD-3-Clause
@@ -229,8 +247,8 @@ Collection of single-file libraries used in Godot components.
* Version: latest, as of April 2017
* License: Public Domain
- `fastlz.{c,h}`
- * Upstream: https://code.google.com/archive/p/fastlz
- * Version: svn (r12)
+ * Upstream: https://github.com/ariya/FastLZ
+ * Version: git (f121734, 2007)
* License: MIT
- `hq2x.{cpp,h}`
* Upstream: https://github.com/brunexgeek/hqx
@@ -251,7 +269,7 @@ Collection of single-file libraries used in Godot components.
- `smaz.{c,h}`
* Upstream: https://github.com/antirez/smaz
* Version: git (150e125, 2009)
- * License: BSD 3-clause
+ * License: BSD-3-Clause
* Modifications: use `const char*` instead of `char*` for input string
- `triangulator.{cpp,h}`
* Upstream: https://github.com/ivanfratric/polypartition (`src/polypartition.cpp`)
@@ -269,19 +287,6 @@ Collection of single-file libraries used in Godot components.
* Version: ?
* License: BSD
-### poshlib
-
-- Upstream: http://poshlib.hookatooka.com/poshlib/trac.cgi (username guest, password guest123)
-- Version: 1.3.002
-- License: MIT
-
-Files extracted from the upstream source:
-
-- posh.c
-- posh.h
-
-(no license file was included with the upstream distribution)
-
### scene
- `mikktspace.{c,h}`
@@ -297,20 +302,6 @@ Files extracted from the upstream source:
* Version: 1.11
* License: Public Domain (Unlicense) or MIT
-## thekla_atlas
-
-- Upstream: https://github.com/Thekla/thekla_atlas
-- Version: 80a1430 (git)
-- License: zlib
-
-Files extracted from the upstream source:
-
-- Relevant sources from src/
-- License.txt
-
-Important: Some files have Godot-made changes, those
-changes are marked with `// -- GODOT --` comments.
-
## nanosvg
@@ -327,7 +318,7 @@ Files extracted from the upstream source:
## openssl
- Upstream: https://www.openssl.org
-- Version: 1.0.2l
+- Version: 1.0.2n
- License: OpenSSL license / BSD-like
Files extracted from the upstream source:
@@ -344,11 +335,14 @@ Files extracted from the upstream source:
-o -name "*.gcc" -o -name "*.in" -o -name "*.lnx" -o -name "*.m4" \
-o -name "*.pl" -o -name "*.pod" -o -name "*.s" -o -name "*.sh" \
-o -name "*.sol" -o -name "*test*" \) -delete
- cd openssl; for file in *.h; do find ../{crypto,ssl} -name "$file" -delete; done
+ cd openssl; for file in *.h; do find ../{crypto,ssl} -name "$file" -delete; done; cd ..
```
For the rest check the `git status` and decide.
- e_os.h
-- Apply the Godot-specific patches in the `patches/` folder.
+- MacOS/buildinf.h
+- LICENSE
+- Apply the Godot-specific patches in the `patches/` folder
+ (make sure not to commit .orig/.rej files generated by `patch`).
## opus
@@ -383,7 +377,7 @@ Files extracted from upstream source:
## pvrtccompressor
- Upstream: https://bitbucket.org/jthlim/pvrtccompressor
-- Version: hg commit cf71777 - 2015-01-08
+- Version: hg (cf71777, 2015)
- License: BSD-3-Clause
Files extracted from upstream source:
@@ -395,9 +389,14 @@ Files extracted from upstream source:
## recastnavigation
- Upstream: https://github.com/recastnavigation/recastnavigation
-- version: git commit ef3ea40f - 2016-02-06
+- version: git (ef3ea40f, 2017)
- License: zlib
+Files extracted from upstream source:
+
+- `Recast/` folder
+- License.txt
+
## rtaudio
@@ -425,10 +424,25 @@ They are marked with `// -- GODOT start --` and `// -- GODOT end --`
comments and a patch is provided in the squish/ folder.
+## thekla_atlas
+
+- Upstream: https://github.com/Thekla/thekla_atlas
+- Version: git (80a1430, 2017)
+- License: MIT
+
+Files extracted from the upstream source:
+
+- Relevant sources from src/
+- License.txt
+
+Important: Some files have Godot-made changes, those
+changes are marked with `// -- GODOT --` comments.
+
+
## tinyexr
- Upstream: https://github.com/syoyo/tinyexr
-- Version: 0.9.5+ (git 9f784ca - 24 October 2017)
+- Version: git (e385dad, 2018)
- License: BSD-3-Clause
Files extracted from upstream source:
@@ -438,7 +452,7 @@ Files extracted from upstream source:
## zlib
-- Upstream: http://www.zlib.net/
+- Upstream: http://www.zlib.net
- Version: 1.2.11
- License: zlib
@@ -450,10 +464,10 @@ Files extracted from upstream source:
## zstd
- Upstream: https://github.com/facebook/zstd
-- Version: 1.3.2
+- Version: 1.3.3
- License: BSD-3-Clause
Files extracted from upstream source:
- lib/{common/,compress/,decompress/,zstd.h}
-- README.md, LICENSE
+- LICENSE
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h
index 1bc56cf80a..1bc56cf80a 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp
index 0f04efe331..0f04efe331 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.cpp
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h
index c004b9130f..c004b9130f 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvh.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
index bc150955b8..bc150955b8 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h
index 7ac085d90c..7ac085d90c 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3DynamicBvhBroadphase.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h
index 39bf27de3e..39bf27de3e 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPair.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp
index e4bda61624..e4bda61624 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.cpp
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h
index f67eb676f1..f67eb676f1 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/b3OverlappingPairCache.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h
index 7f9bf990bf..7f9bf990bf 100644
--- a/thirdparty/bullet/src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h
+++ b/thirdparty/bullet/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Config.h
index 65d4a21613..65d4a21613 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Config.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Config.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h
index fb25165673..fb25165673 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3Contact4.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp
index 55706fa631..55706fa631 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.cpp
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h
index 86c4151f8c..86c4151f8c 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3ConvexUtility.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp
index c3134b2c65..c3134b2c65 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.cpp
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h
index 528be3346d..528be3346d 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3CpuNarrowPhase.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h
index fba8bd07a4..fba8bd07a4 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RaycastInfo.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h
index d58f71802f..d58f71802f 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/b3RigidBodyCL.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
index 8788ccbb47..8788ccbb47 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h
index 2618da24bc..2618da24bc 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3BvhTraversal.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h
index 8009e7d6e0..8009e7d6e0 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ClipFaces.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h
index 77cdc7b7a9..77cdc7b7a9 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h
index dfd45cc566..dfd45cc566 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
index f295f01a6c..f295f01a6c 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h
index a3fa82287b..a3fa82287b 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ContactSphereSphere.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
index 5c5f4e297f..5c5f4e297f 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
index 89993f3565..89993f3565 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
index 332dbc278c..332dbc278c 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h
index 6c3ad7c9dd..6c3ad7c9dd 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3MprPenetration.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h
index 718222ebca..718222ebca 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3NewContactReduction.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
index 3661e43cf1..3661e43cf1 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h
index 35b5197006..35b5197006 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3ReduceContacts.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h
index 50632c871f..50632c871f 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3RigidBodyData.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h
index 8d40d19a03..8d40d19a03 100644
--- a/thirdparty/bullet/src/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h
+++ b/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3UpdateAabbs.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.cpp b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.cpp
index b98e2b4d33..b98e2b4d33 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.cpp
+++ b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.cpp
diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.h b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.h
index be418bd55f..be418bd55f 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3AlignedAllocator.h
+++ b/thirdparty/bullet/Bullet3Common/b3AlignedAllocator.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3AlignedObjectArray.h b/thirdparty/bullet/Bullet3Common/b3AlignedObjectArray.h
index 947362d08e..947362d08e 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3AlignedObjectArray.h
+++ b/thirdparty/bullet/Bullet3Common/b3AlignedObjectArray.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3CommandLineArgs.h b/thirdparty/bullet/Bullet3Common/b3CommandLineArgs.h
index 38df8e2600..38df8e2600 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3CommandLineArgs.h
+++ b/thirdparty/bullet/Bullet3Common/b3CommandLineArgs.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3FileUtils.h b/thirdparty/bullet/Bullet3Common/b3FileUtils.h
index 1a331029ea..1a331029ea 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3FileUtils.h
+++ b/thirdparty/bullet/Bullet3Common/b3FileUtils.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3HashMap.h b/thirdparty/bullet/Bullet3Common/b3HashMap.h
index 24a59d9baa..24a59d9baa 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3HashMap.h
+++ b/thirdparty/bullet/Bullet3Common/b3HashMap.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Logging.cpp b/thirdparty/bullet/Bullet3Common/b3Logging.cpp
index a8e9507155..a8e9507155 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Logging.cpp
+++ b/thirdparty/bullet/Bullet3Common/b3Logging.cpp
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Logging.h b/thirdparty/bullet/Bullet3Common/b3Logging.h
index b302effe43..b302effe43 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Logging.h
+++ b/thirdparty/bullet/Bullet3Common/b3Logging.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Matrix3x3.h b/thirdparty/bullet/Bullet3Common/b3Matrix3x3.h
index 89b57cf59a..89b57cf59a 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Matrix3x3.h
+++ b/thirdparty/bullet/Bullet3Common/b3Matrix3x3.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3MinMax.h b/thirdparty/bullet/Bullet3Common/b3MinMax.h
index 73af23a4f9..73af23a4f9 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3MinMax.h
+++ b/thirdparty/bullet/Bullet3Common/b3MinMax.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3PoolAllocator.h b/thirdparty/bullet/Bullet3Common/b3PoolAllocator.h
index 2fcdcf5b24..2fcdcf5b24 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3PoolAllocator.h
+++ b/thirdparty/bullet/Bullet3Common/b3PoolAllocator.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3QuadWord.h b/thirdparty/bullet/Bullet3Common/b3QuadWord.h
index 65c9581977..65c9581977 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3QuadWord.h
+++ b/thirdparty/bullet/Bullet3Common/b3QuadWord.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Quaternion.h b/thirdparty/bullet/Bullet3Common/b3Quaternion.h
index ad20543348..ad20543348 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Quaternion.h
+++ b/thirdparty/bullet/Bullet3Common/b3Quaternion.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Random.h b/thirdparty/bullet/Bullet3Common/b3Random.h
index dc040f1562..dc040f1562 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Random.h
+++ b/thirdparty/bullet/Bullet3Common/b3Random.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3ResizablePool.h b/thirdparty/bullet/Bullet3Common/b3ResizablePool.h
index 06ad8a778d..06ad8a778d 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3ResizablePool.h
+++ b/thirdparty/bullet/Bullet3Common/b3ResizablePool.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Scalar.h b/thirdparty/bullet/Bullet3Common/b3Scalar.h
index dbc7fea397..dbc7fea397 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Scalar.h
+++ b/thirdparty/bullet/Bullet3Common/b3Scalar.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3StackAlloc.h b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h
index de7de056b5..de7de056b5 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3StackAlloc.h
+++ b/thirdparty/bullet/Bullet3Common/b3StackAlloc.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Transform.h b/thirdparty/bullet/Bullet3Common/b3Transform.h
index fa480759be..fa480759be 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Transform.h
+++ b/thirdparty/bullet/Bullet3Common/b3Transform.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3TransformUtil.h b/thirdparty/bullet/Bullet3Common/b3TransformUtil.h
index 6ce580c132..6ce580c132 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3TransformUtil.h
+++ b/thirdparty/bullet/Bullet3Common/b3TransformUtil.h
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Vector3.cpp b/thirdparty/bullet/Bullet3Common/b3Vector3.cpp
index 5f5ac4ac04..5f5ac4ac04 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Vector3.cpp
+++ b/thirdparty/bullet/Bullet3Common/b3Vector3.cpp
diff --git a/thirdparty/bullet/src/Bullet3Common/b3Vector3.h b/thirdparty/bullet/Bullet3Common/b3Vector3.h
index 16ec02b0ed..16ec02b0ed 100644
--- a/thirdparty/bullet/src/Bullet3Common/b3Vector3.h
+++ b/thirdparty/bullet/Bullet3Common/b3Vector3.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Float4.h b/thirdparty/bullet/Bullet3Common/shared/b3Float4.h
index 5e4b95bcee..5e4b95bcee 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3Float4.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3Float4.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Int2.h b/thirdparty/bullet/Bullet3Common/shared/b3Int2.h
index f1d01f81a5..f1d01f81a5 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3Int2.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3Int2.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Int4.h b/thirdparty/bullet/Bullet3Common/shared/b3Int4.h
index aa02d6beef..aa02d6beef 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3Int4.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3Int4.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Mat3x3.h b/thirdparty/bullet/Bullet3Common/shared/b3Mat3x3.h
index 7b1fef32f8..7b1fef32f8 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3Mat3x3.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3Mat3x3.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3PlatformDefinitions.h b/thirdparty/bullet/Bullet3Common/shared/b3PlatformDefinitions.h
index 1c133fb088..1c133fb088 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3PlatformDefinitions.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3PlatformDefinitions.h
diff --git a/thirdparty/bullet/src/Bullet3Common/shared/b3Quat.h b/thirdparty/bullet/Bullet3Common/shared/b3Quat.h
index f262d5e08f..f262d5e08f 100644
--- a/thirdparty/bullet/src/Bullet3Common/shared/b3Quat.h
+++ b/thirdparty/bullet/Bullet3Common/shared/b3Quat.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
index 7a12257b33..7a12257b33 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3ContactSolverInfo.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp
index 5e11e74935..5e11e74935 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h
index e884a82912..e884a82912 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3FixedConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
index 168a773d56..168a773d56 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
index 084d36055c..084d36055c 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Generic6DofConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
index a55168eb38..a55168eb38 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3JacobianEntry.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp
index de729d4556..de729d4556 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h
index d2ca307fab..d2ca307fab 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3PgsJacobiSolver.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
index 02c11db320..02c11db320 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
index 681b487334..681b487334 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3Point2PointConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
index 0049317d98..0049317d98 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverBody.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
index bce83d4608..bce83d4608 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3SolverConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
index 699c481d64..699c481d64 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
index cf9cec0d5e..cf9cec0d5e 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
+++ b/thirdparty/bullet/Bullet3Dynamics/ConstraintSolver/b3TypedConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp
index fbc84cc28d..fbc84cc28d 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp
+++ b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.h
index 2f3c2ae77e..2f3c2ae77e 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h
+++ b/thirdparty/bullet/Bullet3Dynamics/b3CpuRigidBodyPipeline.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ContactConstraint4.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3ContactConstraint4.h
index 68cf65e312..68cf65e312 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ContactConstraint4.h
+++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3ContactConstraint4.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3ConvertConstraint4.h
index 805a2bd3ea..805a2bd3ea 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3ConvertConstraint4.h
+++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3ConvertConstraint4.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3Inertia.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3Inertia.h
index 96fe9f8b39..96fe9f8b39 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3Inertia.h
+++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3Inertia.h
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h b/thirdparty/bullet/Bullet3Dynamics/shared/b3IntegrateTransforms.h
index e96f90d3f3..e96f90d3f3 100644
--- a/thirdparty/bullet/src/Bullet3Dynamics/shared/b3IntegrateTransforms.h
+++ b/thirdparty/bullet/Bullet3Dynamics/shared/b3IntegrateTransforms.h
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3AabbUtil.h b/thirdparty/bullet/Bullet3Geometry/b3AabbUtil.h
index 4c72d5bbfc..4c72d5bbfc 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3AabbUtil.h
+++ b/thirdparty/bullet/Bullet3Geometry/b3AabbUtil.h
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.cpp
index 18835c38d5..18835c38d5 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp
+++ b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.cpp
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.h b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.h
index 6dcc931a78..6dcc931a78 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3ConvexHullComputer.h
+++ b/thirdparty/bullet/Bullet3Geometry/b3ConvexHullComputer.h
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.cpp b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.cpp
index dd80fed6bd..dd80fed6bd 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.cpp
+++ b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.cpp
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.h b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.h
index 8b5fd7ad62..8b5fd7ad62 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3GeometryUtil.h
+++ b/thirdparty/bullet/Bullet3Geometry/b3GeometryUtil.h
diff --git a/thirdparty/bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h b/thirdparty/bullet/Bullet3Geometry/b3GrahamScan2dConvexHull.h
index 1b933c5264..1b933c5264 100644
--- a/thirdparty/bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h
+++ b/thirdparty/bullet/Bullet3Geometry/b3GrahamScan2dConvexHull.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h
index 0ed8aa8232..0ed8aa8232 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuBroadphaseInterface.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp
index 74d0c8056c..74d0c8056c 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h
index ec18c9f716..ec18c9f716 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuGridBroadphase.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp
index 641df9eb12..641df9eb12 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h
index effe617b7b..effe617b7b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvh.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp
index d2618024ac..d2618024ac 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h
index e518500637..e518500637 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp
index c45fbbdcaa..c45fbbdcaa 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h
index 8d36ac78f2..8d36ac78f2 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3GpuSapBroadphase.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h
index ea6550fede..ea6550fede 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/b3SapAabb.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl
index ded4796d33..ded4796d33 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphase.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h
index dad42477c3..dad42477c3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/gridBroadphaseKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl
index c375b9bf37..c375b9bf37 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvh.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h
index 5eb8f45b16..5eb8f45b16 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/parallelLinearBvhKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl
index 93f77a6433..93f77a6433 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sap.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h
index 04d40fcf26..04d40fcf26 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/BroadphaseCollision/kernels/sapKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLInclude.h
index e79182d7cb..e79182d7cb 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h
+++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLInclude.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp
index dd194fc7ba..dd194fc7ba 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.h
index db6466e76b..db6466e76b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h
+++ b/thirdparty/bullet/Bullet3OpenCL/Initialize/b3OpenCLUtils.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h
index 872f039506..872f039506 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3BvhInfo.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
index cb30ee939b..cb30ee939b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h
index d6c9b0a07e..d6c9b0a07e 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ContactCache.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp
index fb435aa7fd..fb435aa7fd 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h
index e24c1579c6..e24c1579c6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexHullContact.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h
index 337100fb1a..337100fb1a 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3ConvexPolyhedronCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
index d636f983c6..d636f983c6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
index 976238a04c..976238a04c 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3GjkEpa.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp
index e9e51d5a36..e9e51d5a36 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h
index 0272ef83bf..0272ef83bf 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3OptimizedBvh.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
index 52027e1118..52027e1118 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
index 63c523c758..63c523c758 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3QuantizedBvh.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp
index 4d97f7f62b..4d97f7f62b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h
index 9513f68f77..9513f68f77 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3StridingMeshInterface.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h
index d073ee57c3..d073ee57c3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3SupportMappings.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp
index 9066451884..9066451884 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h
index 3059fa4f21..3059fa4f21 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleCallback.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp
index a0f59babbe..a0f59babbe 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h
index d26b2893bc..d26b2893bc 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3TriangleIndexVertexArray.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h
index f6f65f7719..f6f65f7719 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VectorFloat4.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
index cf3d5ef49d..cf3d5ef49d 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
index a6e27667d8..a6e27667d8 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/b3VoronoiSimplexSolver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl
index faa413441c..faa413441c 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h
index 4b3b49eae8..4b3b49eae8 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/bvhTraversal.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl
index e754f4e1da..e754f4e1da 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mpr.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h
index 7ed4b382c3..7ed4b382c3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/mprKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl
index 9c9e920f13..9c9e920f13 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h
index b0103fe674..b0103fe674 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/primitiveContacts.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl
index a6565fd6fa..a6565fd6fa 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/sat.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl
index f433971741..f433971741 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h
index f0ecfc7851..f0ecfc7851 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satClipHullContacts.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl
index 31ca43b8cd..31ca43b8cd 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcave.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h
index 611569cacf..611569cacf 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satConcaveKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h
index 6f8b0a90db..6f8b0a90db 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/NarrowphaseCollision/kernels/satKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp
index a4980f71e1..a4980f71e1 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h
index 7e2940965c..7e2940965c 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BoundSearchCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h
index 52f219ae3f..52f219ae3f 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3BufferInfoCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp
index f05c2648f1..f05c2648f1 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h
index 1609676b9d..1609676b9d 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp
index 94590d11ca..94590d11ca 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h
index 1b267b31ef..1b267b31ef 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3LauncherCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h
index d70c30f53f..d70c30f53f 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3OpenCLArray.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp
index 42cd197740..42cd197740 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h
index a9a2e61b9e..a9a2e61b9e 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp
index 80560d793d..80560d793d 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h
index 2c8003c1bb..2c8003c1bb 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3PrefixScanFloat4CL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp
index f11ae4bcdb..f11ae4bcdb 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h
index 975bd80e53..975bd80e53 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/b3RadixSort32CL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl
index f3b4a1e8a7..f3b4a1e8a7 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h
index 9c9e847138..9c9e847138 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/BoundSearchKernelsCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl
index 2eee5752ec..2eee5752ec 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h
index e5670e3cd3..e5670e3cd3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/CopyKernelsCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl
index 71c31075dd..71c31075dd 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h
index 4f8b96e489..4f8b96e489 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/FillKernelsCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl
index c9da79854a..c9da79854a 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanFloat4Kernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl
index 963cc1e48e..963cc1e48e 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h
index 27baab8331..27baab8331 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h
index 5b13254796..5b13254796 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/PrefixScanKernelsFloat4CL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl
index 7402e2f3b3..7402e2f3b3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32Kernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h
index 8876c16aa6..8876c16aa6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h
+++ b/thirdparty/bullet/Bullet3OpenCL/ParallelPrimitives/kernels/RadixSort32KernelsCL.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp
index 161e304f09..161e304f09 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.h
index 3a5cf44b79..3a5cf44b79 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h
+++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/b3GpuRaycast.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl
index e72d96876b..e72d96876b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h
index 6257909a4d..6257909a4d 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/Raycast/kernels/rayCastKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h
index c7478f54a1..c7478f54a1 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp
index af687b54e9..af687b54e9 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h
index 14b3ba7fec..14b3ba7fec 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuGenericConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp
index 179dfc4f26..179dfc4f26 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h
index b418f29ec4..b418f29ec4 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuJacobiContactSolver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp
index 698fa15f96..698fa15f96 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h
index 05ff3fd09e..05ff3fd09e 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h
index 8a7f1ea859..8a7f1ea859 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuNarrowPhaseInternalData.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp
index 0d3d50c548..0d3d50c548 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h
index ec0e3f73d6..ec0e3f73d6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsConstraintSolver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp
index f0b0abd5e0..f0b0abd5e0 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h
index 98e2a5b8c4..98e2a5b8c4 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuPgsContactSolver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp
index 783e443060..783e443060 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h
index b4eac6841a..b4eac6841a 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipeline.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h
index 5ac92f97d6..5ac92f97d6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuRigidBodyPipelineInternalData.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h
index f2a61801ac..f2a61801ac 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h
index 60d235baab..60d235baab 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3GpuSolverConstraint.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.cpp
index 20bf6d47c5..20bf6d47c5 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.cpp
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.h
index b37f2f1bec..b37f2f1bec 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/b3Solver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl
index 3b891b863d..3b891b863d 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h
index 150eedc94b..150eedc94b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernels.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl
index ba1b66d2c3..ba1b66d2c3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h
index 1e5957adae..1e5957adae 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/batchingKernelsNew.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl
index e22bc9bc33..e22bc9bc33 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h
index a5a432947c..a5a432947c 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/integrateKernel.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl
index 7f5dabe274..7f5dabe274 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.h
index d48ecf6ea6..d48ecf6ea6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/jointSolver.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/jointSolver.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.cl
index 5c4d62e4ec..5c4d62e4ec 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.h
index 15a049992b..15a049992b 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveContact.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveContact.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl
index 1d70fbbae3..1d70fbbae3 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.h
index eb58674f22..eb58674f22 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solveFriction.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solveFriction.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl
index 8e2de7b5a6..8e2de7b5a6 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.h
index eb1834ee00..eb1834ee00 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl
index 3dc48d4350..3dc48d4350 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h
index 1b5819f6cf..1b5819f6cf 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverSetup2.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl
index a21a08c3b4..a21a08c3b4 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.h
index c0173ad9f4..c0173ad9f4 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/solverUtils.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/solverUtils.h
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl
index ba8ba735d0..ba8ba735d0 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.cl
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h
index d70e74017a..d70e74017a 100644
--- a/thirdparty/bullet/src/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h
+++ b/thirdparty/bullet/Bullet3OpenCL/RigidBody/kernels/updateAabbsKernel.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
index a6b57b1a12..a6b57b1a12 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
index c3ceb8388c..c3ceb8388c 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
index fb1b9b0dde..fb1b9b0dde 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
index c0e1bb708c..c0e1bb708c 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
index 03ecb6b4fa..03ecb6b4fa 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h
index 2792d84033..2792d84033 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Common.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
index 0fe5056922..0fe5056922 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
index 6e60087cce..6e60087cce 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
index 8f28d3c441..8f28d3c441 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
index 432f7fc2b4..432f7fc2b4 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h
index 861056806d..861056806d 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
index c6a2a832ad..c6a2a832ad 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
index 1c1ce43764..1c1ce43764 100644
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
index 77763305b1..77763305b1 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h
index a3648df1af..a3648df1af 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
index 2c4d41bc04..2c4d41bc04 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
index fb68e0024e..fb68e0024e 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
index 0fd4ef46be..0fd4ef46be 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
index adaf083a21..adaf083a21 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
index c95d1be0f2..c95d1be0f2 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
index 405656236b..405656236b 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp
index d791d07418..d791d07418 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.h
index b5a0014580..b5a0014580 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvt.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvt.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp
index 4d12b1c9c7..4d12b1c9c7 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h
index 8feb95d51f..8feb95d51f 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp
index 20768225b3..20768225b3 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h
index 7b0f9489af..7b0f9489af 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btDispatcher.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
index 55ebf06f1e..55ebf06f1e 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
index f7be7d45b3..f7be7d45b3 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
index 3e069fa5e2..3e069fa5e2 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
index 875d89c53e..875d89c53e 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
index 3dd5ac9bb6..3dd5ac9bb6 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
index f1d5f5476e..f1d5f5476e 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
index d7a18e400a..d7a18e400a 100644
--- a/thirdparty/bullet/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
+++ b/thirdparty/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
index c81af95672..c81af95672 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
index 22953af43f..22953af43f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp
index 57f1464935..57f1464935 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h
index 0e19f1ea35..0e19f1ea35 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp
index 2c36277821..2c36277821 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
index 6ea6e89bda..6ea6e89bda 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
index ac68968f59..ac68968f59 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
index 59808df5a9..59808df5a9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
index 7043bde34f..7043bde34f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
index 3924377705..3924377705 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
index 35f77d4e65..35f77d4e65 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
index 62ee66c4e9..62ee66c4e9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
index 5739a1ef01..5739a1ef01 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
index b97ee3c1ba..b97ee3c1ba 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
index 075860c503..075860c503 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
index f1d7eafdc9..f1d7eafdc9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp
index b595c56bc5..b595c56bc5 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h
index fec831bffc..fec831bffc 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObject.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h
index 952440b7de..952440b7de 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
index c3e912fdca..c3e912fdca 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h
index eede2b28ca..eede2b28ca 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorld.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp
index f2b0837808..f2b0837808 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h
index 81c6142726..81c6142726 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
index 7f4dea1c6d..7f4dea1c6d 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
index d2086fbc02..d2086fbc02 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp
index d4a1aa78e4..d4a1aa78e4 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h
index f29f7a709a..f29f7a709a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
index 1cb3d2e7a1..1cb3d2e7a1 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
index 24d1336778..24d1336778 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
index 39ff7934d9..39ff7934d9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
index 93d842ef50..93d842ef50 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
index b54bd48932..b54bd48932 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
index cd75ba12d7..cd75ba12d7 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
index cce2d95bcf..cce2d95bcf 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
index d28c430c4c..d28c430c4c 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
index f6e4e57b0a..f6e4e57b0a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
index 17c7596cff..17c7596cff 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
index 5fa1c8be5e..5fa1c8be5e 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
index cb0f152183..cb0f152183 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp
index 86141fa689..86141fa689 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.h
index 8ec8613857..8ec8613857 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btGhostObject.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btGhostObject.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
index 8c8a7c3c1e..8c8a7c3c1e 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
index 2aaf6201f3..2aaf6201f3 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp
index 6cba442ca5..6cba442ca5 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h
index 7d9aafeee6..7d9aafeee6 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp
index 23c73c8825..23c73c8825 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h
index 12cdafd1b6..12cdafd1b6 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btManifoldResult.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
index 1344782257..1344782257 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
index e24c6afeca..e24c6afeca 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
index e8b567e0ef..e8b567e0ef 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
index eefaedc9e7..eefaedc9e7 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
index 27eaec3059..27eaec3059 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
index 3517a568a9..3517a568a9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
index 86d4e74400..86d4e74400 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
index 6b6e39a72b..6b6e39a72b 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp
index 5222933595..5222933595 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.h b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.h
index ef2a29202f..ef2a29202f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionDispatch/btUnionFind.h
+++ b/thirdparty/bullet/BulletCollision/CollisionDispatch/btUnionFind.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp
index ecce028c2e..ecce028c2e 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.h
index 22bee4f2c8..22bee4f2c8 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBox2dShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBox2dShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp
index 72eeb38911..72eeb38911 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.h
index 715e3f2ab9..715e3f2ab9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBoxShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBoxShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp
index 61f465cb72..61f465cb72 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h
index 1fa4995d16..1fa4995d16 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp
index 0345501ce2..0345501ce2 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h
index 7d64b46abf..7d64b46abf 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCapsuleShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h
index 474bf1fb49..474bf1fb49 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionMargin.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp
index 823e2788f2..823e2788f2 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.h
index 6c4916fbd4..6c4916fbd4 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCollisionShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCollisionShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp
index e8c8c336cd..e8c8c336cd 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.h
index 4eef8dba30..4eef8dba30 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCompoundShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCompoundShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp
index 58ff84a5b0..58ff84a5b0 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.h
index 2917cc5b60..2917cc5b60 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConcaveShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConcaveShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.cpp
index 2d83c8bfba..2d83c8bfba 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.h
index 3b44e3f272..3b44e3f272 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConeShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConeShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp
index 10ea3e981a..10ea3e981a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h
index bbd1caf42f..bbd1caf42f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvex2dShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp
index a7a9598406..a7a9598406 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h
index 0c12aeef15..0c12aeef15 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexHullShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp
index 083d60b1b1..083d60b1b1 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h
index 1213b82fbe..1213b82fbe 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexInternalShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp
index ad1d1bf78f..ad1d1bf78f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h
index 54b5afac3e..54b5afac3e 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPointCloudShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp
index 4f45319a83..4f45319a83 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h
index d3cd066ac8..d3cd066ac8 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexPolyhedron.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp
index 8d7fb054d6..8d7fb054d6 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.h
index 875f2ac195..875f2ac195 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp
index 0f9ced554b..0f9ced554b 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h
index f338865ca1..f338865ca1 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp
index 604b3fc770..604b3fc770 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.h
index a214a827c9..a214a827c9 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btCylinderShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btCylinderShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp
index a9e6df5c58..a9e6df5c58 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.h
index 069a79402b..069a79402b 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btEmptyShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btEmptyShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp
index 441a89c6bb..441a89c6bb 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h
index 4a7a4a4bda..4a7a4a4bda 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMaterial.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMaterial.h
index 866f9b4da4..866f9b4da4 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMaterial.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMaterial.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp
index 899ef50056..899ef50056 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h
index a3f9a47239..a3f9a47239 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMinkowskiSumShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp
index 4195fa3138..4195fa3138 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h
index 5d3b402684..5d3b402684 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultiSphereShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp
index 58799ac96a..58799ac96a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h
index 5ebaede4a8..5ebaede4a8 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp
index 6f36775f7c..6f36775f7c 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h
index 715961f552..715961f552 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btOptimizedBvh.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp
index 4854f370f7..4854f370f7 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h
index 7bf8e01c1f..7bf8e01c1f 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
index 6a337c786c..6a337c786c 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h
index 39049eaf08..39049eaf08 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp
index 3beaf86580..3beaf86580 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.h
index e959f198b6..e959f198b6 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btShapeHull.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btShapeHull.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp
index b9a736c0fd..b9a736c0fd 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.h
index 50561f7f54..50561f7f54 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btSphereShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btSphereShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
index d17141e3f2..d17141e3f2 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h
index 5e9eccc77d..5e9eccc77d 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStaticPlaneShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp
index 78ddeb3704..78ddeb3704 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h
index 9fbe139768..9fbe139768 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btStridingMeshInterface.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp
index 52f346bf72..52f346bf72 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h
index b69209835e..b69209835e 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTetrahedronShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp
index 3027e65b25..3027e65b25 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h
index b71fc8b374..b71fc8b374 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleBuffer.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp
index f558bf6d24..f558bf6d24 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h
index 461c57f877..461c57f877 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleCallback.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp
index a665024cb6..a665024cb6 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h
index 9e1544e87a..9e1544e87a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp
index dc562941ad..dc562941ad 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h
index ba4f7b4607..ba4f7b4607 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h
index 6427589590..6427589590 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleInfoMap.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp
index e4de732093..e4de732093 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h
index ac4afa7f6b..ac4afa7f6b 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMesh.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp
index 0e17951405..0e17951405 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h
index 453e58005a..453e58005a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleShape.h
index a8a80f82fe..a8a80f82fe 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btTriangleShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btTriangleShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp
index b148bbd99a..b148bbd99a 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.cpp
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.h b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h
index a10f58d242..a10f58d242 100644
--- a/thirdparty/bullet/src/BulletCollision/CollisionShapes/btUniformScalingShape.h
+++ b/thirdparty/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btBoxCollision.h b/thirdparty/bullet/BulletCollision/Gimpact/btBoxCollision.h
index 0a0357e5a8..0a0357e5a8 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btBoxCollision.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btBoxCollision.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btClipPolygon.h b/thirdparty/bullet/BulletCollision/Gimpact/btClipPolygon.h
index de0a5231ba..de0a5231ba 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btClipPolygon.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btClipPolygon.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btCompoundFromGimpact.h b/thirdparty/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h
index 19f7ecddd0..19f7ecddd0 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btCompoundFromGimpact.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.cpp
index eed31d839f..eed31d839f 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.h b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.h
index d1027dbe67..d1027dbe67 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessing.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessing.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessingStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h
index efbc4a567a..efbc4a567a 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btContactProcessingStructs.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp
index 863233163a..863233163a 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.h
index e20e03cc1d..e20e03cc1d 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvh.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvh.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvhStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h
index 9342a572d0..9342a572d0 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactBvhStructs.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp
index 2e87475e39..2e87475e39 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h
index 3e5675f729..3e5675f729 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactMassUtil.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h
index 2543aefcfc..2543aefcfc 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactMassUtil.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp
index 4528758c37..4528758c37 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h
index 42e5520fc0..42e5520fc0 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h
index 7dd5a1b9d0..7dd5a1b9d0 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.cpp
index 30c85e3fff..30c85e3fff 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.h b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.h
index 9d7e40562c..9d7e40562c 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGImpactShape.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGImpactShape.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
index 5d07d1adb9..5d07d1adb9 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.h b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h
index b46d851634..b46d851634 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btGeometryOperations.h b/thirdparty/bullet/BulletCollision/Gimpact/btGeometryOperations.h
index 60f06510ad..60f06510ad 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btGeometryOperations.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btGeometryOperations.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btQuantization.h b/thirdparty/bullet/BulletCollision/Gimpact/btQuantization.h
index bd2633cfc5..bd2633cfc5 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btQuantization.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btQuantization.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp
index ca76cc54a1..ca76cc54a1 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.h b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h
index 973c2ed127..973c2ed127 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/btTriangleShapeEx.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_array.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_array.h
index cda51a5fce..cda51a5fce 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_array.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_array.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h
index 0c48cb60fc..0c48cb60fc 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_bitset.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_bitset.h
index 7dee48a4c7..7dee48a4c7 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_bitset.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_bitset.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_collision.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_collision.h
index a051b4fdbf..a051b4fdbf 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_collision.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_collision.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.cpp
index 0c3d7ba8db..0c3d7ba8db 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.h
index 61d190a7df..61d190a7df 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_box_set.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_box_set.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_clip_polygon.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_clip_polygon.h
index e342459ce5..e342459ce5 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_clip_polygon.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_clip_polygon.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.cpp
index 20e41de089..20e41de089 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.h
index b41c714b5f..b41c714b5f 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_contact.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_contact.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geom_types.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_geom_types.h
index 6b8f9ea6c2..6b8f9ea6c2 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geom_types.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_geom_types.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geometry.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_geometry.h
index c67a6991c0..c67a6991c0 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_geometry.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_geometry.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_hash_table.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_hash_table.h
index e4237c2c57..e4237c2c57 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_hash_table.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_hash_table.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_linear_math.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_linear_math.h
index 64f11b4954..64f11b4954 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_linear_math.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_linear_math.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_math.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_math.h
index 939079e104..939079e104 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_math.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_math.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.cpp
index 1636eb7867..1636eb7867 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.h
index e203888a1e..e203888a1e 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_memory.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_memory.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_radixsort.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_radixsort.h
index c246ef1254..c246ef1254 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_radixsort.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_radixsort.h
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp
index f9727e1d53..f9727e1d53 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.cpp
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.h b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.h
index 267f806e7e..267f806e7e 100644
--- a/thirdparty/bullet/src/BulletCollision/Gimpact/gim_tri_collision.h
+++ b/thirdparty/bullet/BulletCollision/Gimpact/gim_tri_collision.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h
index 9eb880b8df..9eb880b8df 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
index 940282f576..940282f576 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
index bdc0572f75..bdc0572f75 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
index d2a1310b23..d2a1310b23 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h
index bfd79d03be..bfd79d03be 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexCast.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
index 29620abffb..29620abffb 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
index 0ea7b483cf..0ea7b483cf 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h
index 0b49b0ecc6..0b49b0ecc6 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
index bef697a0a1..bef697a0a1 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
index 6a42ee63b0..6a42ee63b0 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
index eefb974bbd..eefb974bbd 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
index ac501d5ecf..ac501d5ecf 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
index ce1f24bc50..ce1f24bc50 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
index 572ec36f56..572ec36f56 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
index 1ed6340af3..1ed6340af3 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
index 257b026d9b..257b026d9b 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
index feeae68621..feeae68621 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
index 571ad2c5f7..571ad2c5f7 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
index fa45f49037..fa45f49037 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
index fd533b4fc3..fd533b4fc3 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h
index a22a0bae66..a22a0bae66 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btMprPenetration.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
index 23aaece22b..23aaece22b 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
index f872c8e1c9..f872c8e1c9 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h
index 18da171011..18da171011 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPointCollector.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp
index ea380bc5f1..ea380bc5f1 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h
index 30e3db687b..30e3db687b 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
index 786efd1820..786efd1820 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
index f2ed0cd39c..f2ed0cd39c 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
index da8a13914c..da8a13914c 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
index ec638f60ba..ec638f60ba 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
index 6c8127983e..6c8127983e 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
index 756373c9b5..756373c9b5 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
diff --git a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
index 80fd490f4e..80fd490f4e 100644
--- a/thirdparty/bullet/src/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
+++ b/thirdparty/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btCharacterControllerInterface.h b/thirdparty/bullet/BulletDynamics/Character/btCharacterControllerInterface.h
index abe24b5ca6..abe24b5ca6 100644
--- a/thirdparty/bullet/src/BulletDynamics/Character/btCharacterControllerInterface.h
+++ b/thirdparty/bullet/BulletDynamics/Character/btCharacterControllerInterface.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp
index cb1aa71a14..cb1aa71a14 100644
--- a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.cpp
+++ b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.h b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.h
index 00c59c0248..00c59c0248 100644
--- a/thirdparty/bullet/src/BulletDynamics/Character/btKinematicCharacterController.h
+++ b/thirdparty/bullet/BulletDynamics/Character/btKinematicCharacterController.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
index 0572256f74..0572256f74 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
index 7a33d01d1e..7a33d01d1e 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h
index 890afe6da4..890afe6da4 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btConstraintSolver.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
index 1098d0c96b..1098d0c96b 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h
index adb2268353..adb2268353 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
index 28d0c1dd48..28d0c1dd48 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp
index 75d81cc08c..75d81cc08c 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h
index bff2008b28..bff2008b28 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btFixedConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp
index bcd457b673..bcd457b673 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h
index e4613455a2..e4613455a2 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGearConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
index fa17254ec3..fa17254ec3 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
index bea8629c32..bea8629c32 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
index f0976ee493..f0976ee493 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
index 66d1769583..66d1769583 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp
index 6f765884ec..6f765884ec 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h
index dac59c6889..dac59c6889 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp
index 4be2aabe4d..4be2aabe4d 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h
index 06a8e3ecd1..06a8e3ecd1 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHinge2Constraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
index 7e5e6f9e54..7e5e6f9e54 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h
index 3c3df24dba..3c3df24dba 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btHingeConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h
index 125580d199..125580d199 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btJacobianEntry.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
index f3979be358..f3979be358 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
index a300929cd5..a300929cd5 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
index 3c0430b903..3c0430b903 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
index 8fa03d719d..8fa03d719d 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
index b0d57a3e87..b0d57a3e87 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
index 16c7eb74c1..16c7eb74c1 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
index d63cef0316..d63cef0316 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h
index 1957f08a96..1957f08a96 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSliderConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
index 0c7dbd668b..0c7dbd668b 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
index e8bfabf864..e8bfabf864 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverBody.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h
index 27ccefe416..27ccefe416 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverBody.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h
index 5515e6b311..5515e6b311 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btSolverConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
index 9f04f28053..9f04f28053 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h
index 8a2a2d1ae7..8a2a2d1ae7 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btTypedConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp
index b009f41aec..b009f41aec 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h
index 9e70841043..9e70841043 100644
--- a/thirdparty/bullet/src/BulletDynamics/ConstraintSolver/btUniversalConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btActionInterface.h b/thirdparty/bullet/BulletDynamics/Dynamics/btActionInterface.h
index e1fea3a49c..e1fea3a49c 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btActionInterface.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btActionInterface.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
index a196d4522e..a196d4522e 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h
index b0d19f48a3..b0d19f48a3 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp
index 1d10bad922..1d10bad922 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h
index 2f144cdda4..2f144cdda4 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h
index 42d8fc0de3..42d8fc0de3 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btDynamicsWorld.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.cpp
index ca0714fcfa..ca0714fcfa 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.cpp
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.h b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.h
index 372245031b..372245031b 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btRigidBody.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btRigidBody.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
index 6f63b87c80..6f63b87c80 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
index 44b7e7fb34..44b7e7fb34 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
index 99b34353c7..99b34353c7 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
index 9a781aaef1..9a781aaef1 100644
--- a/thirdparty/bullet/src/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
+++ b/thirdparty/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.cpp
index 62865e0c78..62865e0c78 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.h
index 655165ac18..655165ac18 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBody.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBody.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp
index d52852dd8e..d52852dd8e 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.h
index 83521b9501..83521b9501 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp
index 1e2d074096..1e2d074096 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h
index 489347d874..489347d874 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
index 9eacc22647..9eacc22647 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h
index c0c132bbba..c0c132bbba 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp
index 1f94117aa9..1f94117aa9 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h
index 036025136e..036025136e 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyFixedConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp
index 5fdb7007d8..5fdb7007d8 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h
index 0115de6241..0115de6241 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyGearConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h
index 5c2fa8ed5b..5c2fa8ed5b 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointFeedback.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp
index 6d173b66a1..6d173b66a1 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h
index 55b8d122b9..55b8d122b9 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointLimitConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp
index e0921178e9..e0921178e9 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.h
index 4063bed79a..4063bed79a 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyJointMotor.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyJointMotor.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLink.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h
index 01828e5843..01828e5843 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLink.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLink.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h
index 671e15d314..671e15d314 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyLinkCollider.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp
index 125d52ad0b..125d52ad0b 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h
index bf39acc5b9..bf39acc5b9 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodyPoint2Point.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp
index 3b64b8183f..3b64b8183f 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h
index 0a6cf3df12..0a6cf3df12 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySliderConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h
index 6fa1550e9e..6fa1550e9e 100644
--- a/thirdparty/bullet/src/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h
+++ b/thirdparty/bullet/BulletDynamics/Featherstone/btMultiBodySolverConstraint.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp
index 986f214870..986f214870 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.h
index 903832770a..903832770a 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigLCP.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigLCP.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigSolver.h
index 2a2f2d3d32..2a2f2d3d32 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btDantzigSolver.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btDantzigSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp
index 1f4015c7c7..1f4015c7c7 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h
index 7555cd9d20..7555cd9d20 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeSolver.h
index 98484c3796..98484c3796 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btLemkeSolver.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btLemkeSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp
index 8f54c52626..8f54c52626 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.h
index 26b482ddc1..26b482ddc1 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolver.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h
index 25bb3f6d32..25bb3f6d32 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btMLCPSolverInterface.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btPATHSolver.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btPATHSolver.h
index 9ec31a6d4e..9ec31a6d4e 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btPATHSolver.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btPATHSolver.h
diff --git a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h
index c0b40ffd9f..c0b40ffd9f 100644
--- a/thirdparty/bullet/src/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h
+++ b/thirdparty/bullet/BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp
index a7b1688469..a7b1688469 100644
--- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp
+++ b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h
index 04656b912c..04656b912c 100644
--- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btRaycastVehicle.h
+++ b/thirdparty/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btVehicleRaycaster.h b/thirdparty/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h
index 3cc909c653..3cc909c653 100644
--- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btVehicleRaycaster.h
+++ b/thirdparty/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h
diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp
index ef93c16fff..ef93c16fff 100644
--- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.cpp
+++ b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp
diff --git a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.h b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.h
index f991a57b69..f991a57b69 100644
--- a/thirdparty/bullet/src/BulletDynamics/Vehicle/btWheelInfo.h
+++ b/thirdparty/bullet/BulletDynamics/Vehicle/btWheelInfo.h
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfig.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfig.hpp
index ebb10e7a16..ebb10e7a16 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfig.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDConfig.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigBuiltin.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfigBuiltin.hpp
index 130c19c6d6..130c19c6d6 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigBuiltin.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDConfigBuiltin.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigEigen.hpp b/thirdparty/bullet/BulletInverseDynamics/IDConfigEigen.hpp
index cbd7e8a9c4..cbd7e8a9c4 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDConfigEigen.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDConfigEigen.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDErrorMessages.hpp b/thirdparty/bullet/BulletInverseDynamics/IDErrorMessages.hpp
index 1dc22f860a..1dc22f860a 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDErrorMessages.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDErrorMessages.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.cpp b/thirdparty/bullet/BulletInverseDynamics/IDMath.cpp
index 99fe20e492..99fe20e492 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.cpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDMath.cpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.hpp b/thirdparty/bullet/BulletInverseDynamics/IDMath.hpp
index b355474d44..b355474d44 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/IDMath.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/IDMath.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.cpp b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.cpp
index c67588d49f..c67588d49f 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.cpp
+++ b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.cpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.hpp b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.hpp
index d235aa6e76..d235aa6e76 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/MultiBodyTree.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/MultiBodyTree.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDEigenInterface.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDEigenInterface.hpp
index 836395cea2..836395cea2 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDEigenInterface.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/IDEigenInterface.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDLinearMathInterface.hpp
index 5bb4a33bdd..5bb4a33bdd 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDLinearMathInterface.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/IDLinearMathInterface.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/IDMatVec.hpp b/thirdparty/bullet/BulletInverseDynamics/details/IDMatVec.hpp
index 4d3f6c87e9..4d3f6c87e9 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/IDMatVec.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/IDMatVec.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp
index b35c55df61..b35c55df61 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.cpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp
index 3efe9d0492..3efe9d0492 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeImpl.hpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp
index 47b4ab3890..47b4ab3890 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.cpp
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp
index 0d2aa4a071..0d2aa4a071 100644
--- a/thirdparty/bullet/src/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp
+++ b/thirdparty/bullet/BulletInverseDynamics/details/MultiBodyTreeInitCache.hpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp
index 9c20403074..9c20403074 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.h b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.h
index 1c17ffcbb2..1c17ffcbb2 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btDefaultSoftBodySolver.h
+++ b/thirdparty/bullet/BulletSoftBody/btDefaultSoftBodySolver.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBody.cpp
index 48efb0d8d4..48efb0d8d4 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBody.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.h b/thirdparty/bullet/BulletSoftBody/btSoftBody.h
index ada0dfd1a5..ada0dfd1a5 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBody.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBody.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
index ab84bddf2a..ab84bddf2a 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
index 11c7b88f98..11c7b88f98 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyData.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyData.h
index 87d8841cfa..87d8841cfa 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyData.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyData.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.cpp
index 51fcd16da4..51fcd16da4 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.h
index 7271530109..7271530109 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyHelpers.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyHelpers.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyInternals.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyInternals.h
index 1ad82616ea..1ad82616ea 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyInternals.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyInternals.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
index f5a67f6d89..f5a67f6d89 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
index 21addcfe2e..21addcfe2e 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h b/thirdparty/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h
index c4733d6400..c4733d6400 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolverVertexBuffer.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolvers.h b/thirdparty/bullet/BulletSoftBody/btSoftBodySolvers.h
index 6947bc27d2..6947bc27d2 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftBodySolvers.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftBodySolvers.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
index 4e76dca9db..4e76dca9db 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
index 6d46a21db5..6d46a21db5 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftMultiBodyDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
index 01c148a2ca..01c148a2ca 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
index 93fcc6065b..93fcc6065b 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
index 204b4f576d..204b4f576d 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.h b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h
index d921a6488d..d921a6488d 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftRigidDynamicsWorld.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
index 72043e69e2..72043e69e2 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
+++ b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
index 4eab7aea2f..4eab7aea2f 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
+++ b/thirdparty/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
diff --git a/thirdparty/bullet/src/BulletSoftBody/btSparseSDF.h b/thirdparty/bullet/BulletSoftBody/btSparseSDF.h
index ba437c28ef..ba437c28ef 100644
--- a/thirdparty/bullet/src/BulletSoftBody/btSparseSDF.h
+++ b/thirdparty/bullet/BulletSoftBody/btSparseSDF.h
diff --git a/thirdparty/bullet/LICENSE.txt b/thirdparty/bullet/LICENSE.txt
new file mode 100644
index 0000000000..319c84e349
--- /dev/null
+++ b/thirdparty/bullet/LICENSE.txt
@@ -0,0 +1,15 @@
+
+The files in this repository are licensed under the zlib license, except for the files under 'Extras' and examples/ThirdPartyLibs.
+
+Bullet Continuous Collision Detection and Physics Library
+http://bulletphysics.org
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
diff --git a/thirdparty/bullet/src/LinearMath/btAabbUtil2.h b/thirdparty/bullet/LinearMath/btAabbUtil2.h
index d2997b4e65..d2997b4e65 100644
--- a/thirdparty/bullet/src/LinearMath/btAabbUtil2.h
+++ b/thirdparty/bullet/LinearMath/btAabbUtil2.h
diff --git a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.cpp b/thirdparty/bullet/LinearMath/btAlignedAllocator.cpp
index e5f6040c43..e5f6040c43 100644
--- a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.cpp
+++ b/thirdparty/bullet/LinearMath/btAlignedAllocator.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.h b/thirdparty/bullet/LinearMath/btAlignedAllocator.h
index 9873b338d9..9873b338d9 100644
--- a/thirdparty/bullet/src/LinearMath/btAlignedAllocator.h
+++ b/thirdparty/bullet/LinearMath/btAlignedAllocator.h
diff --git a/thirdparty/bullet/src/LinearMath/btAlignedObjectArray.h b/thirdparty/bullet/LinearMath/btAlignedObjectArray.h
index f0b646529a..f0b646529a 100644
--- a/thirdparty/bullet/src/LinearMath/btAlignedObjectArray.h
+++ b/thirdparty/bullet/LinearMath/btAlignedObjectArray.h
diff --git a/thirdparty/bullet/src/LinearMath/btConvexHull.cpp b/thirdparty/bullet/LinearMath/btConvexHull.cpp
index f8b79a1aba..f8b79a1aba 100644
--- a/thirdparty/bullet/src/LinearMath/btConvexHull.cpp
+++ b/thirdparty/bullet/LinearMath/btConvexHull.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btConvexHull.h b/thirdparty/bullet/LinearMath/btConvexHull.h
index 69c52bc6f8..69c52bc6f8 100644
--- a/thirdparty/bullet/src/LinearMath/btConvexHull.h
+++ b/thirdparty/bullet/LinearMath/btConvexHull.h
diff --git a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.cpp b/thirdparty/bullet/LinearMath/btConvexHullComputer.cpp
index 2ea22cbe3b..2ea22cbe3b 100644
--- a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.cpp
+++ b/thirdparty/bullet/LinearMath/btConvexHullComputer.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.h b/thirdparty/bullet/LinearMath/btConvexHullComputer.h
index 7240ac4fb5..7240ac4fb5 100644
--- a/thirdparty/bullet/src/LinearMath/btConvexHullComputer.h
+++ b/thirdparty/bullet/LinearMath/btConvexHullComputer.h
diff --git a/thirdparty/bullet/src/LinearMath/btCpuFeatureUtility.h b/thirdparty/bullet/LinearMath/btCpuFeatureUtility.h
index d2cab52d48..d2cab52d48 100644
--- a/thirdparty/bullet/src/LinearMath/btCpuFeatureUtility.h
+++ b/thirdparty/bullet/LinearMath/btCpuFeatureUtility.h
diff --git a/thirdparty/bullet/src/LinearMath/btDefaultMotionState.h b/thirdparty/bullet/LinearMath/btDefaultMotionState.h
index 01c5f8d932..01c5f8d932 100644
--- a/thirdparty/bullet/src/LinearMath/btDefaultMotionState.h
+++ b/thirdparty/bullet/LinearMath/btDefaultMotionState.h
diff --git a/thirdparty/bullet/src/LinearMath/btGeometryUtil.cpp b/thirdparty/bullet/LinearMath/btGeometryUtil.cpp
index 5ac230f712..5ac230f712 100644
--- a/thirdparty/bullet/src/LinearMath/btGeometryUtil.cpp
+++ b/thirdparty/bullet/LinearMath/btGeometryUtil.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btGeometryUtil.h b/thirdparty/bullet/LinearMath/btGeometryUtil.h
index a4b13b4560..a4b13b4560 100644
--- a/thirdparty/bullet/src/LinearMath/btGeometryUtil.h
+++ b/thirdparty/bullet/LinearMath/btGeometryUtil.h
diff --git a/thirdparty/bullet/src/LinearMath/btGrahamScan2dConvexHull.h b/thirdparty/bullet/LinearMath/btGrahamScan2dConvexHull.h
index 13a79aa585..13a79aa585 100644
--- a/thirdparty/bullet/src/LinearMath/btGrahamScan2dConvexHull.h
+++ b/thirdparty/bullet/LinearMath/btGrahamScan2dConvexHull.h
diff --git a/thirdparty/bullet/src/LinearMath/btHashMap.h b/thirdparty/bullet/LinearMath/btHashMap.h
index 5e9cdb6054..5e9cdb6054 100644
--- a/thirdparty/bullet/src/LinearMath/btHashMap.h
+++ b/thirdparty/bullet/LinearMath/btHashMap.h
diff --git a/thirdparty/bullet/src/LinearMath/btIDebugDraw.h b/thirdparty/bullet/LinearMath/btIDebugDraw.h
index 936aaa896b..936aaa896b 100644
--- a/thirdparty/bullet/src/LinearMath/btIDebugDraw.h
+++ b/thirdparty/bullet/LinearMath/btIDebugDraw.h
diff --git a/thirdparty/bullet/src/LinearMath/btList.h b/thirdparty/bullet/LinearMath/btList.h
index eec80a7064..eec80a7064 100644
--- a/thirdparty/bullet/src/LinearMath/btList.h
+++ b/thirdparty/bullet/LinearMath/btList.h
diff --git a/thirdparty/bullet/src/LinearMath/btMatrix3x3.h b/thirdparty/bullet/LinearMath/btMatrix3x3.h
index 9f642a1779..9f642a1779 100644
--- a/thirdparty/bullet/src/LinearMath/btMatrix3x3.h
+++ b/thirdparty/bullet/LinearMath/btMatrix3x3.h
diff --git a/thirdparty/bullet/src/LinearMath/btMatrixX.h b/thirdparty/bullet/LinearMath/btMatrixX.h
index 42caed42ef..42caed42ef 100644
--- a/thirdparty/bullet/src/LinearMath/btMatrixX.h
+++ b/thirdparty/bullet/LinearMath/btMatrixX.h
diff --git a/thirdparty/bullet/src/LinearMath/btMinMax.h b/thirdparty/bullet/LinearMath/btMinMax.h
index 5b436e9ba4..5b436e9ba4 100644
--- a/thirdparty/bullet/src/LinearMath/btMinMax.h
+++ b/thirdparty/bullet/LinearMath/btMinMax.h
diff --git a/thirdparty/bullet/src/LinearMath/btMotionState.h b/thirdparty/bullet/LinearMath/btMotionState.h
index 9431814090..9431814090 100644
--- a/thirdparty/bullet/src/LinearMath/btMotionState.h
+++ b/thirdparty/bullet/LinearMath/btMotionState.h
diff --git a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.cpp b/thirdparty/bullet/LinearMath/btPolarDecomposition.cpp
index b3664faa4e..b3664faa4e 100644
--- a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.cpp
+++ b/thirdparty/bullet/LinearMath/btPolarDecomposition.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.h b/thirdparty/bullet/LinearMath/btPolarDecomposition.h
index 1feea0f78e..1feea0f78e 100644
--- a/thirdparty/bullet/src/LinearMath/btPolarDecomposition.h
+++ b/thirdparty/bullet/LinearMath/btPolarDecomposition.h
diff --git a/thirdparty/bullet/src/LinearMath/btPoolAllocator.h b/thirdparty/bullet/LinearMath/btPoolAllocator.h
index efdeda8ffc..efdeda8ffc 100644
--- a/thirdparty/bullet/src/LinearMath/btPoolAllocator.h
+++ b/thirdparty/bullet/LinearMath/btPoolAllocator.h
diff --git a/thirdparty/bullet/src/LinearMath/btQuadWord.h b/thirdparty/bullet/LinearMath/btQuadWord.h
index fcfb3be444..fcfb3be444 100644
--- a/thirdparty/bullet/src/LinearMath/btQuadWord.h
+++ b/thirdparty/bullet/LinearMath/btQuadWord.h
diff --git a/thirdparty/bullet/src/LinearMath/btQuaternion.h b/thirdparty/bullet/LinearMath/btQuaternion.h
index 7bd39e6a33..7bd39e6a33 100644
--- a/thirdparty/bullet/src/LinearMath/btQuaternion.h
+++ b/thirdparty/bullet/LinearMath/btQuaternion.h
diff --git a/thirdparty/bullet/src/LinearMath/btQuickprof.cpp b/thirdparty/bullet/LinearMath/btQuickprof.cpp
index aed3104a6e..aed3104a6e 100644
--- a/thirdparty/bullet/src/LinearMath/btQuickprof.cpp
+++ b/thirdparty/bullet/LinearMath/btQuickprof.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btQuickprof.h b/thirdparty/bullet/LinearMath/btQuickprof.h
index 7b38d71b90..7b38d71b90 100644
--- a/thirdparty/bullet/src/LinearMath/btQuickprof.h
+++ b/thirdparty/bullet/LinearMath/btQuickprof.h
diff --git a/thirdparty/bullet/src/LinearMath/btRandom.h b/thirdparty/bullet/LinearMath/btRandom.h
index 4cbfc6bfe9..4cbfc6bfe9 100644
--- a/thirdparty/bullet/src/LinearMath/btRandom.h
+++ b/thirdparty/bullet/LinearMath/btRandom.h
diff --git a/thirdparty/bullet/src/LinearMath/btScalar.h b/thirdparty/bullet/LinearMath/btScalar.h
index bffb2ce274..bffb2ce274 100644
--- a/thirdparty/bullet/src/LinearMath/btScalar.h
+++ b/thirdparty/bullet/LinearMath/btScalar.h
diff --git a/thirdparty/bullet/src/LinearMath/btSerializer.cpp b/thirdparty/bullet/LinearMath/btSerializer.cpp
index fcd2255ad5..fcd2255ad5 100644
--- a/thirdparty/bullet/src/LinearMath/btSerializer.cpp
+++ b/thirdparty/bullet/LinearMath/btSerializer.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btSerializer.h b/thirdparty/bullet/LinearMath/btSerializer.h
index 89b4d74683..89b4d74683 100644
--- a/thirdparty/bullet/src/LinearMath/btSerializer.h
+++ b/thirdparty/bullet/LinearMath/btSerializer.h
diff --git a/thirdparty/bullet/src/LinearMath/btSerializer64.cpp b/thirdparty/bullet/LinearMath/btSerializer64.cpp
index 05f59202d7..05f59202d7 100644
--- a/thirdparty/bullet/src/LinearMath/btSerializer64.cpp
+++ b/thirdparty/bullet/LinearMath/btSerializer64.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btSpatialAlgebra.h b/thirdparty/bullet/LinearMath/btSpatialAlgebra.h
index 8e59658bca..8e59658bca 100644
--- a/thirdparty/bullet/src/LinearMath/btSpatialAlgebra.h
+++ b/thirdparty/bullet/LinearMath/btSpatialAlgebra.h
diff --git a/thirdparty/bullet/src/LinearMath/btStackAlloc.h b/thirdparty/bullet/LinearMath/btStackAlloc.h
index 397b084877..397b084877 100644
--- a/thirdparty/bullet/src/LinearMath/btStackAlloc.h
+++ b/thirdparty/bullet/LinearMath/btStackAlloc.h
diff --git a/thirdparty/bullet/src/LinearMath/btThreads.cpp b/thirdparty/bullet/LinearMath/btThreads.cpp
index 59a7ea36e9..59a7ea36e9 100644
--- a/thirdparty/bullet/src/LinearMath/btThreads.cpp
+++ b/thirdparty/bullet/LinearMath/btThreads.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btThreads.h b/thirdparty/bullet/LinearMath/btThreads.h
index 05fd15ec82..05fd15ec82 100644
--- a/thirdparty/bullet/src/LinearMath/btThreads.h
+++ b/thirdparty/bullet/LinearMath/btThreads.h
diff --git a/thirdparty/bullet/src/LinearMath/btTransform.h b/thirdparty/bullet/LinearMath/btTransform.h
index d4f939a5d9..d4f939a5d9 100644
--- a/thirdparty/bullet/src/LinearMath/btTransform.h
+++ b/thirdparty/bullet/LinearMath/btTransform.h
diff --git a/thirdparty/bullet/src/LinearMath/btTransformUtil.h b/thirdparty/bullet/LinearMath/btTransformUtil.h
index 182cc43fab..182cc43fab 100644
--- a/thirdparty/bullet/src/LinearMath/btTransformUtil.h
+++ b/thirdparty/bullet/LinearMath/btTransformUtil.h
diff --git a/thirdparty/bullet/src/LinearMath/btVector3.cpp b/thirdparty/bullet/LinearMath/btVector3.cpp
index e05bdccd67..e05bdccd67 100644
--- a/thirdparty/bullet/src/LinearMath/btVector3.cpp
+++ b/thirdparty/bullet/LinearMath/btVector3.cpp
diff --git a/thirdparty/bullet/src/LinearMath/btVector3.h b/thirdparty/bullet/LinearMath/btVector3.h
index c69effa96e..c69effa96e 100644
--- a/thirdparty/bullet/src/LinearMath/btVector3.h
+++ b/thirdparty/bullet/LinearMath/btVector3.h
diff --git a/thirdparty/bullet/src/btBulletCollisionCommon.h b/thirdparty/bullet/btBulletCollisionCommon.h
index 948e02eb4c..948e02eb4c 100644
--- a/thirdparty/bullet/src/btBulletCollisionCommon.h
+++ b/thirdparty/bullet/btBulletCollisionCommon.h
diff --git a/thirdparty/bullet/src/btBulletDynamicsCommon.h b/thirdparty/bullet/btBulletDynamicsCommon.h
index 50282bf210..50282bf210 100644
--- a/thirdparty/bullet/src/btBulletDynamicsCommon.h
+++ b/thirdparty/bullet/btBulletDynamicsCommon.h
diff --git a/thirdparty/bullet/src/clew/clew.c b/thirdparty/bullet/clew/clew.c
index a07b0aad75..a07b0aad75 100644
--- a/thirdparty/bullet/src/clew/clew.c
+++ b/thirdparty/bullet/clew/clew.c
diff --git a/thirdparty/bullet/src/clew/clew.h b/thirdparty/bullet/clew/clew.h
index ee0fef18b4..ee0fef18b4 100644
--- a/thirdparty/bullet/src/clew/clew.h
+++ b/thirdparty/bullet/clew/clew.h
diff --git a/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt
deleted file mode 100644
index 130095cc04..0000000000
--- a/thirdparty/bullet/src/Bullet3Collision/CMakeLists.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(Bullet3Collision_SRCS
- BroadPhaseCollision/b3DynamicBvh.cpp
- BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
- BroadPhaseCollision/b3OverlappingPairCache.cpp
- NarrowPhaseCollision/b3ConvexUtility.cpp
- NarrowPhaseCollision/b3CpuNarrowPhase.cpp
-)
-
-SET(Bullet3CollisionBroadPhase_HDRS
- BroadPhaseCollision/b3BroadphaseCallback.h
- BroadPhaseCollision/b3DynamicBvh.h
- BroadPhaseCollision/b3DynamicBvhBroadphase.h
- BroadPhaseCollision/b3OverlappingPair.h
- BroadPhaseCollision/b3OverlappingPairCache.h
-)
-SET(Bullet3CollisionBroadPhaseShared_HDRS
- BroadPhaseCollision/shared/b3Aabb.h
-)
-
-SET(Bullet3CollisionNarrowPhase_HDRS
- NarrowPhaseCollision/b3Config.h
- NarrowPhaseCollision/b3Contact4.h
- NarrowPhaseCollision/b3ConvexUtility.h
- NarrowPhaseCollision/b3CpuNarrowPhase.h
- NarrowPhaseCollision/b3RaycastInfo.h
- NarrowPhaseCollision/b3RigidBodyCL.h
-)
-SET(Bullet3CollisionNarrowPhaseShared_HDRS
-
- NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
- NarrowPhaseCollision/shared/b3BvhTraversal.h
- NarrowPhaseCollision/shared/b3ClipFaces.h
- NarrowPhaseCollision/shared/b3Collidable.h
- NarrowPhaseCollision/shared/b3Contact4Data.h
- NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
- NarrowPhaseCollision/shared/b3ContactSphereSphere.h
- NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
- NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
- NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
- NarrowPhaseCollision/shared/b3MprPenetration.h
- NarrowPhaseCollision/shared/b3NewContactReduction.h
- NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
- NarrowPhaseCollision/shared/b3ReduceContacts.h
- NarrowPhaseCollision/shared/b3RigidBodyData.h
- NarrowPhaseCollision/shared/b3UpdateAabbs.h
-)
-
-SET(Bullet3Collision_HDRS
- ${Bullet3CollisionBroadPhase_HDRS}
- ${Bullet3CollisionBroadPhaseShared_HDRS}
- ${Bullet3CollisionNarrowPhaseShared_HDRS}
- ${Bullet3CollisionNarrowPhase_HDRS}
-)
-
-ADD_LIBRARY(Bullet3Collision ${Bullet3Collision_SRCS} ${Bullet3Collision_HDRS})
-if (BUILD_SHARED_LIBS)
- target_link_libraries(Bullet3Collision Bullet3Geometry)
-endif ()
-SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Collision DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Collision
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(Bullet3Collision PROPERTIES PUBLIC_HEADER "${Bullet3Collision_HDRS}")
- # Have to list out sub-directories manually:
- #todo
- #SET_PROPERTY(SOURCE ${Bullet3CollisionBroadPhase_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadPhaseCollision)
-
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3Collision/premake4.lua b/thirdparty/bullet/src/Bullet3Collision/premake4.lua
deleted file mode 100644
index 0b47f8ea5b..0000000000
--- a/thirdparty/bullet/src/Bullet3Collision/premake4.lua
+++ /dev/null
@@ -1,13 +0,0 @@
- project "Bullet3Collision"
-
- language "C++"
-
- kind "StaticLib"
-
- includedirs {".."}
-
-
- files {
- "**.cpp",
- "**.h"
- } \ No newline at end of file
diff --git a/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt
deleted file mode 100644
index e899e67d94..0000000000
--- a/thirdparty/bullet/src/Bullet3Common/CMakeLists.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(Bullet3Common_SRCS
- b3AlignedAllocator.cpp
- b3Vector3.cpp
- b3Logging.cpp
-)
-
-SET(Bullet3Common_HDRS
- b3AlignedAllocator.h
- b3AlignedObjectArray.h
- b3CommandLineArgs.h
- b3HashMap.h
- b3Logging.h
- b3Matrix3x3.h
- b3MinMax.h
- b3PoolAllocator.h
- b3QuadWord.h
- b3Quaternion.h
- b3Random.h
- b3Scalar.h
- b3StackAlloc.h
- b3Transform.h
- b3TransformUtil.h
- b3Vector3.h
- shared/b3Float4
- shared/b3Int2.h
- shared/b3Int4.h
- shared/b3Mat3x3.h
- shared/b3PlatformDefinitions
- shared/b3Quat.h
-)
-
-ADD_LIBRARY(Bullet3Common ${Bullet3Common_SRCS} ${Bullet3Common_HDRS})
-SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Common DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Common
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES PUBLIC_HEADER "${Bullet3Common_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3Common/premake4.lua b/thirdparty/bullet/src/Bullet3Common/premake4.lua
deleted file mode 100644
index 1331c6327e..0000000000
--- a/thirdparty/bullet/src/Bullet3Common/premake4.lua
+++ /dev/null
@@ -1,12 +0,0 @@
- project "Bullet3Common"
-
- language "C++"
-
- kind "StaticLib"
-
- includedirs {".."}
-
- files {
- "*.cpp",
- "*.h"
- }
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt
deleted file mode 100644
index 94c120d9b5..0000000000
--- a/thirdparty/bullet/src/Bullet3Dynamics/CMakeLists.txt
+++ /dev/null
@@ -1,61 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(Bullet3Dynamics_SRCS
- b3CpuRigidBodyPipeline.cpp
- ConstraintSolver/b3FixedConstraint.cpp
- ConstraintSolver/b3Generic6DofConstraint.cpp
- ConstraintSolver/b3PgsJacobiSolver.cpp
- ConstraintSolver/b3Point2PointConstraint.cpp
- ConstraintSolver/b3TypedConstraint.cpp
-)
-
-SET(Bullet3Dynamics_HDRS
- b3CpuRigidBodyPipeline.h
- ConstraintSolver/b3ContactSolverInfo.h
- ConstraintSolver/b3FixedConstraint.h
- ConstraintSolver/b3Generic6DofConstraint.h
- ConstraintSolver/b3JacobianEntry.h
- ConstraintSolver/b3PgsJacobiSolver.h
- ConstraintSolver/b3Point2PointConstraint.h
- ConstraintSolver/b3SolverBody.h
- ConstraintSolver/b3SolverConstraint.h
- ConstraintSolver/b3TypedConstraint.h
- shared/b3ContactConstraint4.h
- shared/b3ConvertConstraint4.h
- shared/b3Inertia.h
- shared/b3IntegrateTransforms.h
-)
-
-ADD_LIBRARY(Bullet3Dynamics ${Bullet3Dynamics_SRCS} ${Bullet3Dynamics_HDRS})
-if (BUILD_SHARED_LIBS)
- target_link_libraries(Bullet3Dynamics Bullet3Collision)
-endif ()
-SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Dynamics DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Dynamics
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(Bullet3Dynamics PROPERTIES PUBLIC_HEADER "${Bullet3Dynamics_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua b/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua
deleted file mode 100644
index 669336a6a1..0000000000
--- a/thirdparty/bullet/src/Bullet3Dynamics/premake4.lua
+++ /dev/null
@@ -1,15 +0,0 @@
- project "Bullet3Dynamics"
-
- language "C++"
-
- kind "StaticLib"
-
- includedirs {
- ".."
- }
-
-
- files {
- "**.cpp",
- "**.h"
- } \ No newline at end of file
diff --git a/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt
deleted file mode 100644
index 8206872705..0000000000
--- a/thirdparty/bullet/src/Bullet3Geometry/CMakeLists.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(Bullet3Geometry_SRCS
- b3ConvexHullComputer.cpp
- b3GeometryUtil.cpp
-)
-
-SET(Bullet3Geometry_HDRS
- b3AabbUtil.h
- b3ConvexHullComputer.h
- b3GeometryUtil.h
- b3GrahamScan2dConvexHull.h
-)
-
-ADD_LIBRARY(Bullet3Geometry ${Bullet3Geometry_SRCS} ${Bullet3Geometry_HDRS})
-if (BUILD_SHARED_LIBS)
- target_link_libraries(Bullet3Geometry Bullet3Common)
-endif()
-SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Geometry DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3Geometry
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(Bullet3Geometry PROPERTIES PUBLIC_HEADER "${Bullet3Geometry_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3Geometry/premake4.lua b/thirdparty/bullet/src/Bullet3Geometry/premake4.lua
deleted file mode 100644
index 1a230f8c01..0000000000
--- a/thirdparty/bullet/src/Bullet3Geometry/premake4.lua
+++ /dev/null
@@ -1,13 +0,0 @@
- project "Bullet3Geometry"
-
- language "C++"
-
- kind "StaticLib"
-
- includedirs {".."}
-
-
- files {
- "**.cpp",
- "**.h"
- } \ No newline at end of file
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt b/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt
deleted file mode 100644
index 1da58d4a99..0000000000
--- a/thirdparty/bullet/src/Bullet3OpenCL/CMakeLists.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src )
-
-ADD_DEFINITIONS(-DB3_USE_CLEW)
-
-SET(Bullet3OpenCL_clew_SRCS
- ../clew/clew.c
- BroadphaseCollision/b3GpuGridBroadphase.cpp
- BroadphaseCollision/b3GpuSapBroadphase.cpp
- BroadphaseCollision/b3GpuParallelLinearBvhBroadphase.cpp
- BroadphaseCollision/b3GpuParallelLinearBvh.cpp
- Initialize/b3OpenCLUtils.cpp
- NarrowphaseCollision/b3ContactCache.cpp
- NarrowphaseCollision/b3ConvexHullContact.cpp
- NarrowphaseCollision/b3GjkEpa.cpp
- NarrowphaseCollision/b3OptimizedBvh.cpp
- NarrowphaseCollision/b3QuantizedBvh.cpp
- NarrowphaseCollision/b3StridingMeshInterface.cpp
- NarrowphaseCollision/b3TriangleCallback.cpp
- NarrowphaseCollision/b3TriangleIndexVertexArray.cpp
- NarrowphaseCollision/b3VoronoiSimplexSolver.cpp
- ParallelPrimitives/b3BoundSearchCL.cpp
- ParallelPrimitives/b3FillCL.cpp
- ParallelPrimitives/b3LauncherCL.cpp
- ParallelPrimitives/b3PrefixScanCL.cpp
- ParallelPrimitives/b3PrefixScanFloat4CL.cpp
- ParallelPrimitives/b3RadixSort32CL.cpp
- Raycast/b3GpuRaycast.cpp
- RigidBody/b3GpuGenericConstraint.cpp
- RigidBody/b3GpuJacobiContactSolver.cpp
- RigidBody/b3GpuNarrowPhase.cpp
- RigidBody/b3GpuPgsConstraintSolver.cpp
- RigidBody/b3GpuPgsContactSolver.cpp
- RigidBody/b3GpuRigidBodyPipeline.cpp
- RigidBody/b3Solver.cpp
-)
-
-
-SET(Bullet3OpenCL_clew_HDRS
-# ${Root_HDRS}
-)
-
-
-ADD_LIBRARY(Bullet3OpenCL_clew ${Bullet3OpenCL_clew_SRCS} ${Bullet3OpenCL_clew_HDRS})
-SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES SOVERSION ${BULLET_VERSION})
-IF (BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES(Bullet3OpenCL_clew LinearMath Bullet3Dynamics ${CMAKE_DL_LIBS})
-ENDIF (BUILD_SHARED_LIBS)
-
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #INSTALL of other files requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3OpenCL_clew DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet3OpenCL_clew RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
-# INSTALL(FILES ../btBullet3OpenCL_clewCommon.h
-#DESTINATION ${INCLUDE_INSTALL_DIR}/Bullet3OpenCL_clew)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES FRAMEWORK true)
-
- SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES PUBLIC_HEADER "${Root_HDRS}")
- # Have to list out sub-directories manually:
- SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision)
-
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua b/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua
deleted file mode 100644
index 55a8613634..0000000000
--- a/thirdparty/bullet/src/Bullet3OpenCL/premake4.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-function createProject(vendor)
- hasCL = findOpenCL(vendor)
-
- if (hasCL) then
-
- project ("Bullet3OpenCL_" .. vendor)
-
- initOpenCL(vendor)
-
- kind "StaticLib"
-
-
- includedirs {
- ".",".."
- }
-
- files {
- "**.cpp",
- "**.h"
- }
-
- end
-end
-
-createProject("clew")
-createProject("AMD")
-createProject("Intel")
-createProject("NVIDIA")
-createProject("Apple")
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt b/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt
deleted file mode 100644
index 125576634f..0000000000
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(Bullet2FileLoader_SRCS
- b3BulletFile.cpp
- b3Chunk.cpp
- b3DNA.cpp
- b3File.cpp
- b3Serializer.cpp
-)
-
-
-SET(Bullet2FileLoader_HDRS
- b3BulletFile.h
- b3Chunk.h
- b3Common.h
- b3Defines.h
- b3DNA.h
- b3File.h
- b3Serializer.h
- autogenerated/bullet2.h
-)
-
-ADD_LIBRARY(Bullet2FileLoader ${Bullet2FileLoader_SRCS} ${Bullet2FileLoader_HDRS})
-if (BUILD_SHARED_LIBS)
- target_link_libraries(Bullet2FileLoader Bullet3Common)
-endif ()
-SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet2FileLoader DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS Bullet2FileLoader
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(Bullet2FileLoader PROPERTIES PUBLIC_HEADER "${Bullet2FileLoader_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua b/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua
deleted file mode 100644
index ec2f0a51ae..0000000000
--- a/thirdparty/bullet/src/Bullet3Serialize/Bullet2FileLoader/premake4.lua
+++ /dev/null
@@ -1,12 +0,0 @@
- project "Bullet2FileLoader"
-
- kind "StaticLib"
-
- includedirs {
- "../../../src"
- }
-
- files {
- "**.cpp",
- "**.h"
- } \ No newline at end of file
diff --git a/thirdparty/bullet/src/BulletCollision/CMakeLists.txt b/thirdparty/bullet/src/BulletCollision/CMakeLists.txt
deleted file mode 100644
index 85c5fc8b64..0000000000
--- a/thirdparty/bullet/src/BulletCollision/CMakeLists.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src )
-
-SET(BulletCollision_SRCS
- BroadphaseCollision/btAxisSweep3.cpp
- BroadphaseCollision/btBroadphaseProxy.cpp
- BroadphaseCollision/btCollisionAlgorithm.cpp
- BroadphaseCollision/btDbvt.cpp
- BroadphaseCollision/btDbvtBroadphase.cpp
- BroadphaseCollision/btDispatcher.cpp
- BroadphaseCollision/btOverlappingPairCache.cpp
- BroadphaseCollision/btQuantizedBvh.cpp
- BroadphaseCollision/btSimpleBroadphase.cpp
- CollisionDispatch/btActivatingCollisionAlgorithm.cpp
- CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp
- CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp
- CollisionDispatch/btBoxBoxDetector.cpp
- CollisionDispatch/btCollisionDispatcher.cpp
- CollisionDispatch/btCollisionDispatcherMt.cpp
- CollisionDispatch/btCollisionObject.cpp
- CollisionDispatch/btCollisionWorld.cpp
- CollisionDispatch/btCollisionWorldImporter.cpp
- CollisionDispatch/btCompoundCollisionAlgorithm.cpp
- CollisionDispatch/btCompoundCompoundCollisionAlgorithm.cpp
- CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp
- CollisionDispatch/btConvexConvexAlgorithm.cpp
- CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp
- CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp
- CollisionDispatch/btDefaultCollisionConfiguration.cpp
- CollisionDispatch/btEmptyCollisionAlgorithm.cpp
- CollisionDispatch/btGhostObject.cpp
- CollisionDispatch/btHashedSimplePairCache.cpp
- CollisionDispatch/btInternalEdgeUtility.cpp
- CollisionDispatch/btInternalEdgeUtility.h
- CollisionDispatch/btManifoldResult.cpp
- CollisionDispatch/btSimulationIslandManager.cpp
- CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp
- CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp
- CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp
- CollisionDispatch/btUnionFind.cpp
- CollisionDispatch/SphereTriangleDetector.cpp
- CollisionShapes/btBoxShape.cpp
- CollisionShapes/btBox2dShape.cpp
- CollisionShapes/btBvhTriangleMeshShape.cpp
- CollisionShapes/btCapsuleShape.cpp
- CollisionShapes/btCollisionShape.cpp
- CollisionShapes/btCompoundShape.cpp
- CollisionShapes/btConcaveShape.cpp
- CollisionShapes/btConeShape.cpp
- CollisionShapes/btConvexHullShape.cpp
- CollisionShapes/btConvexInternalShape.cpp
- CollisionShapes/btConvexPointCloudShape.cpp
- CollisionShapes/btConvexPolyhedron.cpp
- CollisionShapes/btConvexShape.cpp
- CollisionShapes/btConvex2dShape.cpp
- CollisionShapes/btConvexTriangleMeshShape.cpp
- CollisionShapes/btCylinderShape.cpp
- CollisionShapes/btEmptyShape.cpp
- CollisionShapes/btHeightfieldTerrainShape.cpp
- CollisionShapes/btMinkowskiSumShape.cpp
- CollisionShapes/btMultimaterialTriangleMeshShape.cpp
- CollisionShapes/btMultiSphereShape.cpp
- CollisionShapes/btOptimizedBvh.cpp
- CollisionShapes/btPolyhedralConvexShape.cpp
- CollisionShapes/btScaledBvhTriangleMeshShape.cpp
- CollisionShapes/btShapeHull.cpp
- CollisionShapes/btSphereShape.cpp
- CollisionShapes/btStaticPlaneShape.cpp
- CollisionShapes/btStridingMeshInterface.cpp
- CollisionShapes/btTetrahedronShape.cpp
- CollisionShapes/btTriangleBuffer.cpp
- CollisionShapes/btTriangleCallback.cpp
- CollisionShapes/btTriangleIndexVertexArray.cpp
- CollisionShapes/btTriangleIndexVertexMaterialArray.cpp
- CollisionShapes/btTriangleMesh.cpp
- CollisionShapes/btTriangleMeshShape.cpp
- CollisionShapes/btUniformScalingShape.cpp
- Gimpact/btContactProcessing.cpp
- Gimpact/btGenericPoolAllocator.cpp
- Gimpact/btGImpactBvh.cpp
- Gimpact/btGImpactCollisionAlgorithm.cpp
- Gimpact/btGImpactQuantizedBvh.cpp
- Gimpact/btGImpactShape.cpp
- Gimpact/btTriangleShapeEx.cpp
- Gimpact/gim_box_set.cpp
- Gimpact/gim_contact.cpp
- Gimpact/gim_memory.cpp
- Gimpact/gim_tri_collision.cpp
- NarrowPhaseCollision/btContinuousConvexCollision.cpp
- NarrowPhaseCollision/btConvexCast.cpp
- NarrowPhaseCollision/btGjkConvexCast.cpp
- NarrowPhaseCollision/btGjkEpa2.cpp
- NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp
- NarrowPhaseCollision/btGjkPairDetector.cpp
- NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp
- NarrowPhaseCollision/btPersistentManifold.cpp
- NarrowPhaseCollision/btRaycastCallback.cpp
- NarrowPhaseCollision/btSubSimplexConvexCast.cpp
- NarrowPhaseCollision/btVoronoiSimplexSolver.cpp
- NarrowPhaseCollision/btPolyhedralContactClipping.cpp
-)
-
-SET(Root_HDRS
- ../btBulletCollisionCommon.h
-)
-SET(BroadphaseCollision_HDRS
- BroadphaseCollision/btAxisSweep3Internal.h
- BroadphaseCollision/btAxisSweep3.h
- BroadphaseCollision/btBroadphaseInterface.h
- BroadphaseCollision/btBroadphaseProxy.h
- BroadphaseCollision/btCollisionAlgorithm.h
- BroadphaseCollision/btDbvt.h
- BroadphaseCollision/btDbvtBroadphase.h
- BroadphaseCollision/btDispatcher.h
- BroadphaseCollision/btOverlappingPairCache.h
- BroadphaseCollision/btOverlappingPairCallback.h
- BroadphaseCollision/btQuantizedBvh.h
- BroadphaseCollision/btSimpleBroadphase.h
-)
-SET(CollisionDispatch_HDRS
- CollisionDispatch/btActivatingCollisionAlgorithm.h
- CollisionDispatch/btBoxBoxCollisionAlgorithm.h
- CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h
- CollisionDispatch/btBoxBoxDetector.h
- CollisionDispatch/btCollisionConfiguration.h
- CollisionDispatch/btCollisionCreateFunc.h
- CollisionDispatch/btCollisionDispatcher.h
- CollisionDispatch/btCollisionDispatcherMt.h
- CollisionDispatch/btCollisionObject.h
- CollisionDispatch/btCollisionObjectWrapper.h
- CollisionDispatch/btCollisionWorld.h
- CollisionDispatch/btCollisionWorldImporter.h
- CollisionDispatch/btCompoundCollisionAlgorithm.h
- CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h
- CollisionDispatch/btConvexConcaveCollisionAlgorithm.h
- CollisionDispatch/btConvexConvexAlgorithm.h
- CollisionDispatch/btConvex2dConvex2dAlgorithm.h
- CollisionDispatch/btConvexPlaneCollisionAlgorithm.h
- CollisionDispatch/btDefaultCollisionConfiguration.h
- CollisionDispatch/btEmptyCollisionAlgorithm.h
- CollisionDispatch/btGhostObject.h
- CollisionDispatch/btHashedSimplePairCache.h
- CollisionDispatch/btManifoldResult.h
- CollisionDispatch/btSimulationIslandManager.h
- CollisionDispatch/btSphereBoxCollisionAlgorithm.h
- CollisionDispatch/btSphereSphereCollisionAlgorithm.h
- CollisionDispatch/btSphereTriangleCollisionAlgorithm.h
- CollisionDispatch/btUnionFind.h
- CollisionDispatch/SphereTriangleDetector.h
-)
-SET(CollisionShapes_HDRS
- CollisionShapes/btBoxShape.h
- CollisionShapes/btBox2dShape.h
- CollisionShapes/btBvhTriangleMeshShape.h
- CollisionShapes/btCapsuleShape.h
- CollisionShapes/btCollisionMargin.h
- CollisionShapes/btCollisionShape.h
- CollisionShapes/btCompoundShape.h
- CollisionShapes/btConcaveShape.h
- CollisionShapes/btConeShape.h
- CollisionShapes/btConvexHullShape.h
- CollisionShapes/btConvexInternalShape.h
- CollisionShapes/btConvexPointCloudShape.h
- CollisionShapes/btConvexPolyhedron.h
- CollisionShapes/btConvexShape.h
- CollisionShapes/btConvex2dShape.h
- CollisionShapes/btConvexTriangleMeshShape.h
- CollisionShapes/btCylinderShape.h
- CollisionShapes/btEmptyShape.h
- CollisionShapes/btHeightfieldTerrainShape.h
- CollisionShapes/btMaterial.h
- CollisionShapes/btMinkowskiSumShape.h
- CollisionShapes/btMultimaterialTriangleMeshShape.h
- CollisionShapes/btMultiSphereShape.h
- CollisionShapes/btOptimizedBvh.h
- CollisionShapes/btPolyhedralConvexShape.h
- CollisionShapes/btScaledBvhTriangleMeshShape.h
- CollisionShapes/btShapeHull.h
- CollisionShapes/btSphereShape.h
- CollisionShapes/btStaticPlaneShape.h
- CollisionShapes/btStridingMeshInterface.h
- CollisionShapes/btTetrahedronShape.h
- CollisionShapes/btTriangleBuffer.h
- CollisionShapes/btTriangleCallback.h
- CollisionShapes/btTriangleIndexVertexArray.h
- CollisionShapes/btTriangleIndexVertexMaterialArray.h
- CollisionShapes/btTriangleInfoMap.h
- CollisionShapes/btTriangleMesh.h
- CollisionShapes/btTriangleMeshShape.h
- CollisionShapes/btTriangleShape.h
- CollisionShapes/btUniformScalingShape.h
-)
-SET(Gimpact_HDRS
- Gimpact/btBoxCollision.h
- Gimpact/btClipPolygon.h
- Gimpact/btContactProcessingStructs.h
- Gimpact/btContactProcessing.h
- Gimpact/btGenericPoolAllocator.h
- Gimpact/btGeometryOperations.h
- Gimpact/btGImpactBvhStructs.h
- Gimpact/btGImpactBvh.h
- Gimpact/btGImpactCollisionAlgorithm.h
- Gimpact/btGImpactMassUtil.h
- Gimpact/btGImpactQuantizedBvhStructs.h
- Gimpact/btGImpactQuantizedBvh.h
- Gimpact/btGImpactShape.h
- Gimpact/btQuantization.h
- Gimpact/btTriangleShapeEx.h
- Gimpact/gim_array.h
- Gimpact/gim_basic_geometry_operations.h
- Gimpact/gim_bitset.h
- Gimpact/gim_box_collision.h
- Gimpact/gim_box_set.h
- Gimpact/gim_clip_polygon.h
- Gimpact/gim_contact.h
- Gimpact/gim_geom_types.h
- Gimpact/gim_geometry.h
- Gimpact/gim_hash_table.h
- Gimpact/gim_linear_math.h
- Gimpact/gim_math.h
- Gimpact/gim_memory.h
- Gimpact/gim_radixsort.h
- Gimpact/gim_tri_collision.h
-)
-SET(NarrowPhaseCollision_HDRS
- NarrowPhaseCollision/btContinuousConvexCollision.h
- NarrowPhaseCollision/btConvexCast.h
- NarrowPhaseCollision/btConvexPenetrationDepthSolver.h
- NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h
- NarrowPhaseCollision/btGjkConvexCast.h
- NarrowPhaseCollision/btGjkEpa2.h
- NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h
- NarrowPhaseCollision/btGjkPairDetector.h
- NarrowPhaseCollision/btManifoldPoint.h
- NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h
- NarrowPhaseCollision/btPersistentManifold.h
- NarrowPhaseCollision/btPointCollector.h
- NarrowPhaseCollision/btRaycastCallback.h
- NarrowPhaseCollision/btSimplexSolverInterface.h
- NarrowPhaseCollision/btSubSimplexConvexCast.h
- NarrowPhaseCollision/btVoronoiSimplexSolver.h
- NarrowPhaseCollision/btPolyhedralContactClipping.h
-)
-
-SET(BulletCollision_HDRS
- ${Root_HDRS}
- ${BroadphaseCollision_HDRS}
- ${CollisionDispatch_HDRS}
- ${CollisionShapes_HDRS}
- ${Gimpact_HDRS}
- ${NarrowPhaseCollision_HDRS}
-)
-
-
-ADD_LIBRARY(BulletCollision ${BulletCollision_SRCS} ${BulletCollision_HDRS})
-SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION})
-IF (BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES(BulletCollision LinearMath)
-ENDIF (BUILD_SHARED_LIBS)
-
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #INSTALL of other files requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletCollision DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletCollision RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- INSTALL(FILES ../btBulletCollisionCommon.h
-DESTINATION ${INCLUDE_INSTALL_DIR}/BulletCollision)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(BulletCollision PROPERTIES FRAMEWORK true)
-
- SET_TARGET_PROPERTIES(BulletCollision PROPERTIES PUBLIC_HEADER "${Root_HDRS}")
- # Have to list out sub-directories manually:
- SET_PROPERTY(SOURCE ${BroadphaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/BroadphaseCollision)
- SET_PROPERTY(SOURCE ${CollisionDispatch_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionDispatch)
- SET_PROPERTY(SOURCE ${CollisionShapes_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/CollisionShapes)
- SET_PROPERTY(SOURCE ${Gimpact_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Gimpact)
- SET_PROPERTY(SOURCE ${NarrowPhaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/NarrowPhaseCollision)
-
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/BulletCollision/premake4.lua b/thirdparty/bullet/src/BulletCollision/premake4.lua
deleted file mode 100644
index 70019df8f6..0000000000
--- a/thirdparty/bullet/src/BulletCollision/premake4.lua
+++ /dev/null
@@ -1,20 +0,0 @@
- project "BulletCollision"
-
- kind "StaticLib"
- includedirs {
- "..",
- }
- files {
- "*.cpp",
- "*.h",
- "BroadphaseCollision/*.cpp",
- "BroadphaseCollision/*.h",
- "CollisionDispatch/*.cpp",
- "CollisionDispatch/*.h",
- "CollisionShapes/*.cpp",
- "CollisionShapes/*.h",
- "Gimpact/*.cpp",
- "Gimpact/*.h",
- "NarrowPhaseCollision/*.cpp",
- "NarrowPhaseCollision/*.h",
- }
diff --git a/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt b/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt
deleted file mode 100644
index f8a6f34baf..0000000000
--- a/thirdparty/bullet/src/BulletDynamics/CMakeLists.txt
+++ /dev/null
@@ -1,170 +0,0 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src )
-
-
-
-SET(BulletDynamics_SRCS
- Character/btKinematicCharacterController.cpp
- ConstraintSolver/btConeTwistConstraint.cpp
- ConstraintSolver/btContactConstraint.cpp
- ConstraintSolver/btFixedConstraint.cpp
- ConstraintSolver/btGearConstraint.cpp
- ConstraintSolver/btGeneric6DofConstraint.cpp
- ConstraintSolver/btGeneric6DofSpringConstraint.cpp
- ConstraintSolver/btGeneric6DofSpring2Constraint.cpp
- ConstraintSolver/btHinge2Constraint.cpp
- ConstraintSolver/btHingeConstraint.cpp
- ConstraintSolver/btPoint2PointConstraint.cpp
- ConstraintSolver/btSequentialImpulseConstraintSolver.cpp
- ConstraintSolver/btNNCGConstraintSolver.cpp
- ConstraintSolver/btSliderConstraint.cpp
- ConstraintSolver/btSolve2LinearConstraint.cpp
- ConstraintSolver/btTypedConstraint.cpp
- ConstraintSolver/btUniversalConstraint.cpp
- Dynamics/btDiscreteDynamicsWorld.cpp
- Dynamics/btDiscreteDynamicsWorldMt.cpp
- Dynamics/btSimulationIslandManagerMt.cpp
- Dynamics/btRigidBody.cpp
- Dynamics/btSimpleDynamicsWorld.cpp
-# Dynamics/Bullet-C-API.cpp
- Vehicle/btRaycastVehicle.cpp
- Vehicle/btWheelInfo.cpp
- Featherstone/btMultiBody.cpp
- Featherstone/btMultiBodyConstraintSolver.cpp
- Featherstone/btMultiBodyDynamicsWorld.cpp
- Featherstone/btMultiBodyJointLimitConstraint.cpp
- Featherstone/btMultiBodyConstraint.cpp
- Featherstone/btMultiBodyPoint2Point.cpp
- Featherstone/btMultiBodyFixedConstraint.cpp
- Featherstone/btMultiBodySliderConstraint.cpp
- Featherstone/btMultiBodyJointMotor.cpp
- Featherstone/btMultiBodyGearConstraint.cpp
- MLCPSolvers/btDantzigLCP.cpp
- MLCPSolvers/btMLCPSolver.cpp
- MLCPSolvers/btLemkeAlgorithm.cpp
-)
-
-SET(Root_HDRS
- ../btBulletDynamicsCommon.h
- ../btBulletCollisionCommon.h
-)
-SET(ConstraintSolver_HDRS
- ConstraintSolver/btConeTwistConstraint.h
- ConstraintSolver/btConstraintSolver.h
- ConstraintSolver/btContactConstraint.h
- ConstraintSolver/btContactSolverInfo.h
- ConstraintSolver/btFixedConstraint.h
- ConstraintSolver/btGearConstraint.h
- ConstraintSolver/btGeneric6DofConstraint.h
- ConstraintSolver/btGeneric6DofSpringConstraint.h
- ConstraintSolver/btGeneric6DofSpring2Constraint.h
- ConstraintSolver/btHinge2Constraint.h
- ConstraintSolver/btHingeConstraint.h
- ConstraintSolver/btJacobianEntry.h
- ConstraintSolver/btPoint2PointConstraint.h
- ConstraintSolver/btSequentialImpulseConstraintSolver.h
- ConstraintSolver/btNNCGConstraintSolver.h
- ConstraintSolver/btSliderConstraint.h
- ConstraintSolver/btSolve2LinearConstraint.h
- ConstraintSolver/btSolverBody.h
- ConstraintSolver/btSolverConstraint.h
- ConstraintSolver/btTypedConstraint.h
- ConstraintSolver/btUniversalConstraint.h
-)
-SET(Dynamics_HDRS
- Dynamics/btActionInterface.h
- Dynamics/btDiscreteDynamicsWorld.h
- Dynamics/btDiscreteDynamicsWorldMt.h
- Dynamics/btSimulationIslandManagerMt.h
- Dynamics/btDynamicsWorld.h
- Dynamics/btSimpleDynamicsWorld.h
- Dynamics/btRigidBody.h
-)
-SET(Vehicle_HDRS
- Vehicle/btRaycastVehicle.h
- Vehicle/btVehicleRaycaster.h
- Vehicle/btWheelInfo.h
-)
-
-SET(Featherstone_HDRS
- Featherstone/btMultiBody.h
- Featherstone/btMultiBodyConstraintSolver.h
- Featherstone/btMultiBodyDynamicsWorld.h
- Featherstone/btMultiBodyLink.h
- Featherstone/btMultiBodyLinkCollider.h
- Featherstone/btMultiBodySolverConstraint.h
- Featherstone/btMultiBodyConstraint.h
- Featherstone/btMultiBodyJointLimitConstraint.h
- Featherstone/btMultiBodyConstraint.h
- Featherstone/btMultiBodyPoint2Point.h
- Featherstone/btMultiBodyFixedConstraint.h
- Featherstone/btMultiBodySliderConstraint.h
- Featherstone/btMultiBodyJointMotor.h
- Featherstone/btMultiBodyGearConstraint.h
-)
-
-SET(MLCPSolvers_HDRS
- MLCPSolvers/btDantzigLCP.h
- MLCPSolvers/btDantzigSolver.h
- MLCPSolvers/btMLCPSolver.h
- MLCPSolvers/btMLCPSolverInterface.h
- MLCPSolvers/btPATHSolver.h
- MLCPSolvers/btSolveProjectedGaussSeidel.h
- MLCPSolvers/btLemkeSolver.h
- MLCPSolvers/btLemkeAlgorithm.h
-)
-
-SET(Character_HDRS
- Character/btCharacterControllerInterface.h
- Character/btKinematicCharacterController.h
-)
-
-
-
-SET(BulletDynamics_HDRS
- ${Root_HDRS}
- ${ConstraintSolver_HDRS}
- ${Dynamics_HDRS}
- ${Vehicle_HDRS}
- ${Character_HDRS}
- ${Featherstone_HDRS}
- ${MLCPSolvers_HDRS}
-)
-
-
-ADD_LIBRARY(BulletDynamics ${BulletDynamics_SRCS} ${BulletDynamics_HDRS})
-SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES SOVERSION ${BULLET_VERSION})
-IF (BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES(BulletDynamics BulletCollision LinearMath)
-ENDIF (BUILD_SHARED_LIBS)
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletDynamics DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletDynamics RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- INSTALL(FILES ../btBulletDynamicsCommon.h
-DESTINATION ${INCLUDE_INSTALL_DIR}/BulletDynamics)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES PUBLIC_HEADER "${Root_HDRS}")
- # Have to list out sub-directories manually:
- SET_PROPERTY(SOURCE ${ConstraintSolver_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/ConstraintSolver)
- SET_PROPERTY(SOURCE ${Dynamics_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Dynamics)
- SET_PROPERTY(SOURCE ${Vehicle_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Vehicle)
- SET_PROPERTY(SOURCE ${Character_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Character)
- SET_PROPERTY(SOURCE ${Featherstone_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/Featherstone)
- SET_PROPERTY(SOURCE ${MLCPSolvers_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/MLCPSolvers)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/BulletDynamics/premake4.lua b/thirdparty/bullet/src/BulletDynamics/premake4.lua
deleted file mode 100644
index 32414dce3e..0000000000
--- a/thirdparty/bullet/src/BulletDynamics/premake4.lua
+++ /dev/null
@@ -1,21 +0,0 @@
- project "BulletDynamics"
- kind "StaticLib"
- includedirs {
- "..",
- }
- files {
- "Dynamics/*.cpp",
- "Dynamics/*.h",
- "ConstraintSolver/*.cpp",
- "ConstraintSolver/*.h",
- "Featherstone/*.cpp",
- "Featherstone/*.h",
- "MLCPSolvers/*.cpp",
- "MLCPSolvers/*.h",
- "Vehicle/*.cpp",
- "Vehicle/*.h",
- "Character/*.cpp",
- "Character/*.h"
-
- }
-
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt b/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt
deleted file mode 100644
index 3331c27eac..0000000000
--- a/thirdparty/bullet/src/BulletInverseDynamics/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src )
-
-SET(BulletInverseDynamics_SRCS
- IDMath.cpp
- MultiBodyTree.cpp
- details/MultiBodyTreeInitCache.cpp
- details/MultiBodyTreeImpl.cpp
-)
-
-SET(BulletInverseDynamicsRoot_HDRS
- IDConfig.hpp
- IDConfigEigen.hpp
- IDMath.hpp
- IDConfigBuiltin.hpp
- IDErrorMessages.hpp
- MultiBodyTree.hpp
-)
-SET(BulletInverseDynamicsDetails_HDRS
- details/IDEigenInterface.hpp
- details/IDMatVec.hpp
- details/IDLinearMathInterface.hpp
- details/MultiBodyTreeImpl.hpp
- details/MultiBodyTreeInitCache.hpp
-)
-
-SET(BulletInverseDynamics_HDRS
- ${BulletInverseDynamicsRoot_HDRS}
- ${BulletInverseDynamicsDetails_HDRS}
-)
-
-
-ADD_LIBRARY(BulletInverseDynamics ${BulletInverseDynamics_SRCS} ${BulletInverseDynamics_HDRS})
-SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES SOVERSION ${BULLET_VERSION})
-IF (BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES(BulletInverseDynamics Bullet3Common LinearMath)
-ENDIF (BUILD_SHARED_LIBS)
-
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #INSTALL of other files requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletInverseDynamics DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletInverseDynamics RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- INSTALL(FILES ../btBulletCollisionCommon.h
-DESTINATION ${INCLUDE_INSTALL_DIR}/BulletInverseDynamics)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES FRAMEWORK true)
-
- SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES PUBLIC_HEADER "${BulletInverseDynamicsRoot_HDRS}")
- # Have to list out sub-directories manually:
- SET_PROPERTY(SOURCE ${BulletInverseDynamicsDetails_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/details)
-
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua b/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua
deleted file mode 100644
index 774e037b3f..0000000000
--- a/thirdparty/bullet/src/BulletInverseDynamics/premake4.lua
+++ /dev/null
@@ -1,12 +0,0 @@
- project "BulletInverseDynamics"
-
- kind "StaticLib"
- includedirs {
- "..",
- }
- files {
- "IDMath.cpp",
- "MultiBodyTree.cpp",
- "details/MultiBodyTreeInitCache.cpp",
- "details/MultiBodyTreeImpl.cpp",
- }
diff --git a/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt b/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt
deleted file mode 100644
index d43df1c67b..0000000000
--- a/thirdparty/bullet/src/BulletSoftBody/CMakeLists.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-
-INCLUDE_DIRECTORIES(
-${BULLET_PHYSICS_SOURCE_DIR}/src
-
-)
-
-#SUBDIRS( Solvers )
-
-SET(BulletSoftBody_SRCS
- btSoftBody.cpp
- btSoftBodyConcaveCollisionAlgorithm.cpp
- btSoftBodyHelpers.cpp
- btSoftBodyRigidBodyCollisionConfiguration.cpp
- btSoftRigidCollisionAlgorithm.cpp
- btSoftRigidDynamicsWorld.cpp
- btSoftMultiBodyDynamicsWorld.cpp
- btSoftSoftCollisionAlgorithm.cpp
- btDefaultSoftBodySolver.cpp
-
-)
-
-SET(BulletSoftBody_HDRS
- btSoftBody.h
- btSoftBodyData.h
- btSoftBodyConcaveCollisionAlgorithm.h
- btSoftBodyHelpers.h
- btSoftBodyRigidBodyCollisionConfiguration.h
- btSoftRigidCollisionAlgorithm.h
- btSoftRigidDynamicsWorld.h
- btSoftMultiBodyDynamicsWorld.h
- btSoftSoftCollisionAlgorithm.h
- btSparseSDF.h
-
- btSoftBodySolvers.h
- btDefaultSoftBodySolver.h
-
- btSoftBodySolverVertexBuffer.h
-)
-
-
-
-ADD_LIBRARY(BulletSoftBody ${BulletSoftBody_SRCS} ${BulletSoftBody_HDRS})
-SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES SOVERSION ${BULLET_VERSION})
-IF (BUILD_SHARED_LIBS)
- TARGET_LINK_LIBRARIES(BulletSoftBody BulletDynamics)
-ENDIF (BUILD_SHARED_LIBS)
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletSoftBody DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS BulletSoftBody RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES PUBLIC_HEADER "${BulletSoftBody_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/BulletSoftBody/premake4.lua b/thirdparty/bullet/src/BulletSoftBody/premake4.lua
deleted file mode 100644
index ce384de2c8..0000000000
--- a/thirdparty/bullet/src/BulletSoftBody/premake4.lua
+++ /dev/null
@@ -1,11 +0,0 @@
- project "BulletSoftBody"
-
- kind "StaticLib"
-
- includedirs {
- "..",
- }
- files {
- "**.cpp",
- "**.h"
- } \ No newline at end of file
diff --git a/thirdparty/bullet/src/CMakeLists.txt b/thirdparty/bullet/src/CMakeLists.txt
deleted file mode 100644
index c30125c539..0000000000
--- a/thirdparty/bullet/src/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-IF(BUILD_BULLET3)
- SUBDIRS( Bullet3OpenCL Bullet3Serialize/Bullet2FileLoader Bullet3Dynamics Bullet3Collision Bullet3Geometry )
-ENDIF(BUILD_BULLET3)
-
-
-SUBDIRS( BulletInverseDynamics BulletSoftBody BulletCollision BulletDynamics LinearMath Bullet3Common)
-
-
-IF(INSTALL_LIBS)
- #INSTALL of other files requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- # Don't actually need to install any common files, the frameworks include everything
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(FILES btBulletCollisionCommon.h btBulletDynamicsCommon.h DESTINATION ${INCLUDE_INSTALL_DIR})
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-ENDIF(INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/LinearMath/CMakeLists.txt b/thirdparty/bullet/src/LinearMath/CMakeLists.txt
deleted file mode 100644
index ede21d9a70..0000000000
--- a/thirdparty/bullet/src/LinearMath/CMakeLists.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
-SET(LinearMath_SRCS
- btAlignedAllocator.cpp
- btConvexHull.cpp
- btConvexHullComputer.cpp
- btGeometryUtil.cpp
- btPolarDecomposition.cpp
- btQuickprof.cpp
- btSerializer.cpp
- btSerializer64.cpp
- btThreads.cpp
- btVector3.cpp
-)
-
-SET(LinearMath_HDRS
- btAabbUtil2.h
- btAlignedAllocator.h
- btAlignedObjectArray.h
- btConvexHull.h
- btConvexHullComputer.h
- btDefaultMotionState.h
- btGeometryUtil.h
- btGrahamScan2dConvexHull.h
- btHashMap.h
- btIDebugDraw.h
- btList.h
- btMatrix3x3.h
- btMinMax.h
- btMotionState.h
- btPolarDecomposition.h
- btPoolAllocator.h
- btQuadWord.h
- btQuaternion.h
- btQuickprof.h
- btRandom.h
- btScalar.h
- btSerializer.h
- btStackAlloc.h
- btThreads.h
- btTransform.h
- btTransformUtil.h
- btVector3.h
-)
-
-ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS})
-SET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION})
-SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION})
-
-IF (INSTALL_LIBS)
- IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
- #FILES_MATCHING requires CMake 2.6
- IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS LinearMath DESTINATION .)
- ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- INSTALL(TARGETS LinearMath
- RUNTIME DESTINATION bin
- LIBRARY DESTINATION lib${LIB_SUFFIX}
- ARCHIVE DESTINATION lib${LIB_SUFFIX})
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN
-".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
-
- IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- SET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true)
- SET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER "${LinearMath_HDRS}")
- ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
- ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
-ENDIF (INSTALL_LIBS)
diff --git a/thirdparty/bullet/src/LinearMath/premake4.lua b/thirdparty/bullet/src/LinearMath/premake4.lua
deleted file mode 100644
index 524e2c3161..0000000000
--- a/thirdparty/bullet/src/LinearMath/premake4.lua
+++ /dev/null
@@ -1,10 +0,0 @@
- project "LinearMath"
-
- kind "StaticLib"
- includedirs {
- "..",
- }
- files {
- "*.cpp",
- "*.h"
- }
diff --git a/thirdparty/bullet/version.txt b/thirdparty/bullet/version.txt
deleted file mode 100644
index 9a3b592267..0000000000
--- a/thirdparty/bullet/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-GitHub Master d05ad4b (23 / October / 2017) [Bullet ~2.87] \ No newline at end of file
diff --git a/thirdparty/libogg/bitwise.c b/thirdparty/libogg/bitwise.c
index 145901d185..fa2b572029 100644
--- a/thirdparty/libogg/bitwise.c
+++ b/thirdparty/libogg/bitwise.c
@@ -11,7 +11,7 @@
********************************************************************
function: packing variable sized words into an octet stream
- last mod: $Id: bitwise.c 19149 2014-05-27 16:26:23Z giles $
+ last mod: $Id$
********************************************************************/
diff --git a/thirdparty/libogg/framing.c b/thirdparty/libogg/framing.c
index 3a2f0a6058..79fc715c8c 100644
--- a/thirdparty/libogg/framing.c
+++ b/thirdparty/libogg/framing.c
@@ -12,7 +12,7 @@
function: code raw packets into framed OggSquish stream and
decode Ogg streams back into raw packets
- last mod: $Id: framing.c 18758 2013-01-08 16:29:56Z tterribe $
+ last mod: $Id$
note: The CRC code is directly derived from public domain code by
Ross Williams (ross@guest.adelaide.edu.au). See docs/framing.html
@@ -875,6 +875,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){
some segments */
if(continued){
if(os->lacing_fill<1 ||
+ (os->lacing_vals[os->lacing_fill-1]&0xff)<255 ||
os->lacing_vals[os->lacing_fill-1]==0x400){
bos=0;
for(;segptr<segments;segptr++){
@@ -1492,6 +1493,34 @@ const int head3_7[] = {0x4f,0x67,0x67,0x53,0,0x05,
1,
0};
+int compare_packet(const ogg_packet *op1, const ogg_packet *op2){
+ if(op1->packet!=op2->packet){
+ fprintf(stderr,"op1->packet != op2->packet\n");
+ return(1);
+ }
+ if(op1->bytes!=op2->bytes){
+ fprintf(stderr,"op1->bytes != op2->bytes\n");
+ return(1);
+ }
+ if(op1->b_o_s!=op2->b_o_s){
+ fprintf(stderr,"op1->b_o_s != op2->b_o_s\n");
+ return(1);
+ }
+ if(op1->e_o_s!=op2->e_o_s){
+ fprintf(stderr,"op1->e_o_s != op2->e_o_s\n");
+ return(1);
+ }
+ if(op1->granulepos!=op2->granulepos){
+ fprintf(stderr,"op1->granulepos != op2->granulepos\n");
+ return(1);
+ }
+ if(op1->packetno!=op2->packetno){
+ fprintf(stderr,"op1->packetno != op2->packetno\n");
+ return(1);
+ }
+ return(0);
+}
+
void test_pack(const int *pl, const int **headers, int byteskip,
int pageskip, int packetskip){
unsigned char *data=_ogg_malloc(1024*1024); /* for scripted test cases only */
@@ -1600,7 +1629,7 @@ void test_pack(const int *pl, const int **headers, int byteskip,
ogg_stream_packetout(&os_de,&op_de); /* just catching them all */
/* verify peek and out match */
- if(memcmp(&op_de,&op_de2,sizeof(op_de))){
+ if(compare_packet(&op_de,&op_de2)){
fprintf(stderr,"packetout != packetpeek! pos=%ld\n",
depacket);
exit(1);
diff --git a/thirdparty/libogg/ogg/ogg.h b/thirdparty/libogg/ogg/ogg.h
index cea4ebed75..7609fc24d6 100644
--- a/thirdparty/libogg/ogg/ogg.h
+++ b/thirdparty/libogg/ogg/ogg.h
@@ -11,7 +11,7 @@
********************************************************************
function: toplevel libogg include
- last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
+ last mod: $Id$
********************************************************************/
#ifndef _OGG_H
diff --git a/thirdparty/libogg/ogg/os_types.h b/thirdparty/libogg/ogg/os_types.h
index 8bf82107e5..b8f56308b5 100644
--- a/thirdparty/libogg/ogg/os_types.h
+++ b/thirdparty/libogg/ogg/os_types.h
@@ -11,7 +11,7 @@
********************************************************************
function: #ifdef jail to whip a few platforms into the UNIX ideal.
- last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $
+ last mod: $Id$
********************************************************************/
#ifndef _OS_TYPES_H
@@ -49,23 +49,24 @@
typedef short ogg_int16_t;
typedef unsigned short ogg_uint16_t;
# else
- /* MSVC/Borland */
- typedef __int64 ogg_int64_t;
- typedef __int32 ogg_int32_t;
- typedef unsigned __int32 ogg_uint32_t;
- typedef __int16 ogg_int16_t;
- typedef unsigned __int16 ogg_uint16_t;
+# if defined(_MSC_VER) && (_MSC_VER >= 1800) /* MSVC 2013 and newer */
+# include <stdint.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+ typedef uint64_t ogg_uint64_t;
+# else
+ /* MSVC/Borland */
+ typedef __int64 ogg_int64_t;
+ typedef __int32 ogg_int32_t;
+ typedef unsigned __int32 ogg_uint32_t;
+ typedef __int16 ogg_int16_t;
+ typedef unsigned __int16 ogg_uint16_t;
+# endif
# endif
-#elif defined(__MACOS__)
-
-# include <sys/types.h>
- typedef SInt16 ogg_int16_t;
- typedef UInt16 ogg_uint16_t;
- typedef SInt32 ogg_int32_t;
- typedef UInt32 ogg_uint32_t;
- typedef SInt64 ogg_int64_t;
-
#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
# include <inttypes.h>
diff --git a/thirdparty/openssl/LICENSE b/thirdparty/openssl/LICENSE
index fb03713dd1..bdfd985a69 100644
--- a/thirdparty/openssl/LICENSE
+++ b/thirdparty/openssl/LICENSE
@@ -2,7 +2,7 @@
LICENSE ISSUES
==============
- The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+ The OpenSSL toolkit stays under a double license, i.e. both the conditions of
the OpenSSL License and the original SSLeay license apply to the toolkit.
See below for the actual license texts. Actually both licenses are BSD-style
Open Source licenses. In case of any license issues related to OpenSSL
@@ -12,7 +12,7 @@
---------------
/* ====================================================================
- * Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/thirdparty/openssl/crypto/LPdir_win.c b/thirdparty/openssl/crypto/LPdir_win.c
index 07e63fb424..4961254d9a 100644
--- a/thirdparty/openssl/crypto/LPdir_win.c
+++ b/thirdparty/openssl/crypto/LPdir_win.c
@@ -94,8 +94,23 @@ const char *LP_find_file(LP_DIR_CTX **ctx, const char *directory)
TCHAR *wdir = NULL;
/* len_0 denotes string length *with* trailing 0 */
size_t index = 0, len_0 = strlen(extdir) + 1;
-
- wdir = (TCHAR *)calloc(len_0, sizeof(TCHAR));
+ size_t amount;
+
+ /*
+ * Size check
+ * The reasoning is that absolutely worst case, each byte in
+ * extdir will take up one TCHAR each, so the maximum size in
+ * bytes that we can tolerate is MAX_PATH TCHARs... not counting
+ * the ending NUL.
+ */
+ if ((len_0 - 1) > MAX_PATH * sizeof(TCHAR)) {
+ free(*ctx);
+ *ctx = NULL;
+ errno = EINVAL;
+ return 0;
+ }
+ amount = len_0 * sizeof(TCHAR);
+ wdir = (TCHAR *)malloc(amount);
if (wdir == NULL) {
if (extdirbuf != NULL) {
free(extdirbuf);
diff --git a/thirdparty/openssl/crypto/asn1/a_bitstr.c b/thirdparty/openssl/crypto/asn1/a_bitstr.c
index c429342e03..0c8bb144a0 100644
--- a/thirdparty/openssl/crypto/asn1/a_bitstr.c
+++ b/thirdparty/openssl/crypto/asn1/a_bitstr.c
@@ -56,6 +56,7 @@
* [including the GNU Public Licence.]
*/
+#include <limits.h>
#include <stdio.h>
#include "cryptlib.h"
#include <openssl/asn1.h>
@@ -136,6 +137,11 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
goto err;
}
+ if (len > INT_MAX) {
+ i = ASN1_R_STRING_TOO_LONG;
+ goto err;
+ }
+
if ((a == NULL) || ((*a) == NULL)) {
if ((ret = M_ASN1_BIT_STRING_new()) == NULL)
return (NULL);
diff --git a/thirdparty/openssl/crypto/asn1/a_i2d_fp.c b/thirdparty/openssl/crypto/asn1/a_i2d_fp.c
index 0f56cd4e07..2e85e041e4 100644
--- a/thirdparty/openssl/crypto/asn1/a_i2d_fp.c
+++ b/thirdparty/openssl/crypto/asn1/a_i2d_fp.c
@@ -87,6 +87,9 @@ int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x)
int i, j = 0, n, ret = 1;
n = i2d(x, NULL);
+ if (n <= 0)
+ return 0;
+
b = (char *)OPENSSL_malloc(n);
if (b == NULL) {
ASN1err(ASN1_F_ASN1_I2D_BIO, ERR_R_MALLOC_FAILURE);
diff --git a/thirdparty/openssl/crypto/asn1/asn1_int.h b/thirdparty/openssl/crypto/asn1/asn1_int.h
new file mode 100644
index 0000000000..c9fd8b12ae
--- /dev/null
+++ b/thirdparty/openssl/crypto/asn1/asn1_int.h
@@ -0,0 +1,63 @@
+/* asn1t.h */
+/*
+ * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL project
+ * 2006.
+ */
+/* ====================================================================
+ * Copyright (c) 2006 The OpenSSL Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * licensing@OpenSSL.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ * nor may "OpenSSL" appear in their names without prior written
+ * permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com). This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+/* Internal ASN1 template structures and functions: not for application use */
+
+void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
+ int combine);
diff --git a/thirdparty/openssl/crypto/asn1/tasn_fre.c b/thirdparty/openssl/crypto/asn1/tasn_fre.c
index aeea4eff7a..0cf7510ff0 100644
--- a/thirdparty/openssl/crypto/asn1/tasn_fre.c
+++ b/thirdparty/openssl/crypto/asn1/tasn_fre.c
@@ -61,9 +61,7 @@
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/objects.h>
-
-static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
- int combine);
+#include "asn1_int.h"
/* Free up an ASN1 structure */
@@ -77,8 +75,7 @@ void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it)
asn1_item_combine_free(pval, it, 0);
}
-static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it,
- int combine)
+void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
{
const ASN1_TEMPLATE *tt = NULL, *seqtt;
const ASN1_EXTERN_FUNCS *ef;
diff --git a/thirdparty/openssl/crypto/asn1/tasn_new.c b/thirdparty/openssl/crypto/asn1/tasn_new.c
index 54f459d1ed..6ba90260da 100644
--- a/thirdparty/openssl/crypto/asn1/tasn_new.c
+++ b/thirdparty/openssl/crypto/asn1/tasn_new.c
@@ -63,6 +63,7 @@
#include <openssl/err.h>
#include <openssl/asn1t.h>
#include <string.h>
+#include "asn1_int.h"
static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
int combine);
@@ -199,7 +200,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
return 1;
memerr2:
- ASN1_item_ex_free(pval, it);
+ asn1_item_combine_free(pval, it, combine);
memerr:
ASN1err(ASN1_F_ASN1_ITEM_EX_COMBINE_NEW, ERR_R_MALLOC_FAILURE);
#ifdef CRYPTO_MDEBUG
@@ -209,7 +210,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
return 0;
auxerr2:
- ASN1_item_ex_free(pval, it);
+ asn1_item_combine_free(pval, it, combine);
auxerr:
ASN1err(ASN1_F_ASN1_ITEM_EX_COMBINE_NEW, ASN1_R_AUX_ERROR);
#ifdef CRYPTO_MDEBUG
diff --git a/thirdparty/openssl/crypto/asn1/x_name.c b/thirdparty/openssl/crypto/asn1/x_name.c
index 1fb7ad1cbf..aea0c2763c 100644
--- a/thirdparty/openssl/crypto/asn1/x_name.c
+++ b/thirdparty/openssl/crypto/asn1/x_name.c
@@ -523,19 +523,11 @@ static int i2d_name_canon(STACK_OF(STACK_OF_X509_NAME_ENTRY) * _intname,
int X509_NAME_set(X509_NAME **xn, X509_NAME *name)
{
- X509_NAME *in;
-
- if (!xn || !name)
- return (0);
-
- if (*xn != name) {
- in = X509_NAME_dup(name);
- if (in != NULL) {
- X509_NAME_free(*xn);
- *xn = in;
- }
- }
- return (*xn != NULL);
+ if ((name = X509_NAME_dup(name)) == NULL)
+ return 0;
+ X509_NAME_free(*xn);
+ *xn = name;
+ return 1;
}
IMPLEMENT_STACK_OF(X509_NAME_ENTRY)
diff --git a/thirdparty/openssl/crypto/asn1/x_pkey.c b/thirdparty/openssl/crypto/asn1/x_pkey.c
index 2da23e4756..59f8553928 100644
--- a/thirdparty/openssl/crypto/asn1/x_pkey.c
+++ b/thirdparty/openssl/crypto/asn1/x_pkey.c
@@ -106,10 +106,14 @@ X509_PKEY *X509_PKEY_new(void)
X509_PKEY *ret = NULL;
ASN1_CTX c;
- M_ASN1_New_Malloc(ret, X509_PKEY);
+ ret = OPENSSL_malloc(sizeof(X509_PKEY));
+ if (ret == NULL) {
+ c.line = __LINE__;
+ goto err;
+ }
ret->version = 0;
- M_ASN1_New(ret->enc_algor, X509_ALGOR_new);
- M_ASN1_New(ret->enc_pkey, M_ASN1_OCTET_STRING_new);
+ ret->enc_algor = X509_ALGOR_new();
+ ret->enc_pkey = M_ASN1_OCTET_STRING_new();
ret->dec_pkey = NULL;
ret->key_length = 0;
ret->key_data = NULL;
@@ -117,8 +121,15 @@ X509_PKEY *X509_PKEY_new(void)
ret->cipher.cipher = NULL;
memset(ret->cipher.iv, 0, EVP_MAX_IV_LENGTH);
ret->references = 1;
- return (ret);
- M_ASN1_New_Error(ASN1_F_X509_PKEY_NEW);
+ if (ret->enc_algor == NULL || ret->enc_pkey == NULL) {
+ c.line = __LINE__;
+ goto err;
+ }
+ return ret;
+err:
+ X509_PKEY_free(ret);
+ ASN1_MAC_H_err(ASN1_F_X509_PKEY_NEW, ERR_R_MALLOC_FAILURE, c.line);
+ return NULL;
}
void X509_PKEY_free(X509_PKEY *x)
diff --git a/thirdparty/openssl/crypto/bio/b_print.c b/thirdparty/openssl/crypto/bio/b_print.c
index eb3ab75934..1c82f53d5a 100644
--- a/thirdparty/openssl/crypto/bio/b_print.c
+++ b/thirdparty/openssl/crypto/bio/b_print.c
@@ -385,7 +385,7 @@ _dopr(char **sbuffer,
if (cflags == DP_C_SHORT) {
short int *num;
num = va_arg(args, short int *);
- *num = currlen;
+ *num = (short int)currlen;
} else if (cflags == DP_C_LONG) { /* XXX */
long int *num;
num = va_arg(args, long int *);
@@ -502,7 +502,7 @@ fmtint(char **sbuffer,
if (!(flags & DP_F_UNSIGNED)) {
if (value < 0) {
signvalue = '-';
- uvalue = -(unsigned LLONG)value;
+ uvalue = 0 - (unsigned LLONG)value;
} else if (flags & DP_F_PLUS)
signvalue = '+';
else if (flags & DP_F_SPACE)
diff --git a/thirdparty/openssl/crypto/bn/bn_exp.c b/thirdparty/openssl/crypto/bn/bn_exp.c
index 195a7867a4..c4b63e44ba 100644
--- a/thirdparty/openssl/crypto/bn/bn_exp.c
+++ b/thirdparty/openssl/crypto/bn/bn_exp.c
@@ -145,10 +145,11 @@ int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
int i, bits, ret = 0;
BIGNUM *v, *rr;
- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
+ if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(a, BN_FLG_CONSTTIME) != 0) {
/* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */
BNerr(BN_F_BN_EXP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
- return -1;
+ return 0;
}
BN_CTX_start(ctx);
@@ -245,7 +246,9 @@ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, const BIGNUM *m,
if (BN_is_odd(m)) {
# ifdef MONT_EXP_WORD
if (a->top == 1 && !a->neg
- && (BN_get_flags(p, BN_FLG_CONSTTIME) == 0)) {
+ && (BN_get_flags(p, BN_FLG_CONSTTIME) == 0)
+ && (BN_get_flags(a, BN_FLG_CONSTTIME) == 0)
+ && (BN_get_flags(m, BN_FLG_CONSTTIME) == 0)) {
BN_ULONG A = a->d[0];
ret = BN_mod_exp_mont_word(r, A, p, m, ctx, NULL);
} else
@@ -277,10 +280,12 @@ int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
BIGNUM *val[TABLE_SIZE];
BN_RECP_CTX recp;
- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
+ if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
/* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */
BNerr(BN_F_BN_MOD_EXP_RECP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
- return -1;
+ return 0;
}
bits = BN_num_bits(p);
@@ -411,7 +416,9 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
BIGNUM *val[TABLE_SIZE];
BN_MONT_CTX *mont = NULL;
- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
+ if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
}
@@ -1217,10 +1224,11 @@ int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
#define BN_TO_MONTGOMERY_WORD(r, w, mont) \
(BN_set_word(r, (w)) && BN_to_montgomery(r, r, (mont), ctx))
- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
+ if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
/* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */
BNerr(BN_F_BN_MOD_EXP_MONT_WORD, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
- return -1;
+ return 0;
}
bn_check_top(p);
@@ -1348,10 +1356,12 @@ int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
/* Table of variables obtained from 'ctx' */
BIGNUM *val[TABLE_SIZE];
- if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0) {
+ if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
+ || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
/* BN_FLG_CONSTTIME only supported by BN_mod_exp_mont() */
BNerr(BN_F_BN_MOD_EXP_SIMPLE, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
- return -1;
+ return 0;
}
bits = BN_num_bits(p);
diff --git a/thirdparty/openssl/crypto/bn/bn_lib.c b/thirdparty/openssl/crypto/bn/bn_lib.c
index 10b78f5126..f9c65f9f94 100644
--- a/thirdparty/openssl/crypto/bn/bn_lib.c
+++ b/thirdparty/openssl/crypto/bn/bn_lib.c
@@ -524,6 +524,9 @@ BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b)
memcpy(a->d, b->d, sizeof(b->d[0]) * b->top);
#endif
+ if (BN_get_flags(b, BN_FLG_CONSTTIME) != 0)
+ BN_set_flags(a, BN_FLG_CONSTTIME);
+
a->top = b->top;
a->neg = b->neg;
bn_check_top(a);
diff --git a/thirdparty/openssl/crypto/bn/bn_mont.c b/thirdparty/openssl/crypto/bn/bn_mont.c
index be95bd55d0..3af9db870b 100644
--- a/thirdparty/openssl/crypto/bn/bn_mont.c
+++ b/thirdparty/openssl/crypto/bn/bn_mont.c
@@ -394,6 +394,9 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
tmod.dmax = 2;
tmod.neg = 0;
+ if (BN_get_flags(mod, BN_FLG_CONSTTIME) != 0)
+ BN_set_flags(&tmod, BN_FLG_CONSTTIME);
+
mont->ri = (BN_num_bits(mod) + (BN_BITS2 - 1)) / BN_BITS2 * BN_BITS2;
# if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32)
diff --git a/thirdparty/openssl/crypto/bn/bn_mul.c b/thirdparty/openssl/crypto/bn/bn_mul.c
index 3c618dc307..6b455a755f 100644
--- a/thirdparty/openssl/crypto/bn/bn_mul.c
+++ b/thirdparty/openssl/crypto/bn/bn_mul.c
@@ -1032,46 +1032,6 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
rr->top = top;
goto end;
}
-# if 0
- if (i == 1 && !BN_get_flags(b, BN_FLG_STATIC_DATA)) {
- BIGNUM *tmp_bn = (BIGNUM *)b;
- if (bn_wexpand(tmp_bn, al) == NULL)
- goto err;
- tmp_bn->d[bl] = 0;
- bl++;
- i--;
- } else if (i == -1 && !BN_get_flags(a, BN_FLG_STATIC_DATA)) {
- BIGNUM *tmp_bn = (BIGNUM *)a;
- if (bn_wexpand(tmp_bn, bl) == NULL)
- goto err;
- tmp_bn->d[al] = 0;
- al++;
- i++;
- }
- if (i == 0) {
- /* symmetric and > 4 */
- /* 16 or larger */
- j = BN_num_bits_word((BN_ULONG)al);
- j = 1 << (j - 1);
- k = j + j;
- t = BN_CTX_get(ctx);
- if (al == j) { /* exact multiple */
- if (bn_wexpand(t, k * 2) == NULL)
- goto err;
- if (bn_wexpand(rr, k * 2) == NULL)
- goto err;
- bn_mul_recursive(rr->d, a->d, b->d, al, t->d);
- } else {
- if (bn_wexpand(t, k * 4) == NULL)
- goto err;
- if (bn_wexpand(rr, k * 4) == NULL)
- goto err;
- bn_mul_part_recursive(rr->d, a->d, b->d, al - j, j, t->d);
- }
- rr->top = top;
- goto end;
- }
-# endif
}
#endif /* BN_RECURSION */
if (bn_wexpand(rr, top) == NULL)
diff --git a/thirdparty/openssl/crypto/bn/bn_x931p.c b/thirdparty/openssl/crypto/bn/bn_x931p.c
index efa48bdf87..f444af3fea 100644
--- a/thirdparty/openssl/crypto/bn/bn_x931p.c
+++ b/thirdparty/openssl/crypto/bn/bn_x931p.c
@@ -217,6 +217,8 @@ int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx)
BN_CTX_start(ctx);
t = BN_CTX_get(ctx);
+ if (t == NULL)
+ goto err;
for (i = 0; i < 1000; i++) {
if (!BN_rand(Xq, nbits, 1, 0))
@@ -255,10 +257,12 @@ int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
int ret = 0;
BN_CTX_start(ctx);
- if (!Xp1)
+ if (Xp1 == NULL)
Xp1 = BN_CTX_get(ctx);
- if (!Xp2)
+ if (Xp2 == NULL)
Xp2 = BN_CTX_get(ctx);
+ if (Xp1 == NULL || Xp2 == NULL)
+ goto error;
if (!BN_rand(Xp1, 101, 0, 0))
goto error;
diff --git a/thirdparty/openssl/crypto/cryptlib.c b/thirdparty/openssl/crypto/cryptlib.c
index 1925428f5e..5fab45b2ec 100644
--- a/thirdparty/openssl/crypto/cryptlib.c
+++ b/thirdparty/openssl/crypto/cryptlib.c
@@ -469,11 +469,18 @@ void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr)
}
}
+#ifdef OPENSSL_FIPS
+extern int FIPS_crypto_threadid_set_callback(void (*func) (CRYPTO_THREADID *));
+#endif
+
int CRYPTO_THREADID_set_callback(void (*func) (CRYPTO_THREADID *))
{
if (threadid_callback)
return 0;
threadid_callback = func;
+#ifdef OPENSSL_FIPS
+ FIPS_crypto_threadid_set_callback(func);
+#endif
return 1;
}
diff --git a/thirdparty/openssl/crypto/dh/dh_kdf.c b/thirdparty/openssl/crypto/dh/dh_kdf.c
index a882cb286e..8947a08731 100644
--- a/thirdparty/openssl/crypto/dh/dh_kdf.c
+++ b/thirdparty/openssl/crypto/dh/dh_kdf.c
@@ -51,6 +51,9 @@
* ====================================================================
*/
+#include <e_os.h>
+
+#ifndef OPENSSL_NO_CMS
#include <string.h>
#include <openssl/dh.h>
#include <openssl/evp.h>
@@ -185,3 +188,4 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen,
EVP_MD_CTX_cleanup(&mctx);
return rv;
}
+#endif
diff --git a/thirdparty/openssl/crypto/dh/dh_pmeth.c b/thirdparty/openssl/crypto/dh/dh_pmeth.c
index b58e3fa86f..6452482c87 100644
--- a/thirdparty/openssl/crypto/dh/dh_pmeth.c
+++ b/thirdparty/openssl/crypto/dh/dh_pmeth.c
@@ -207,7 +207,11 @@ static int pkey_dh_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
case EVP_PKEY_CTRL_DH_KDF_TYPE:
if (p1 == -2)
return dctx->kdf_type;
+#ifdef OPENSSL_NO_CMS
+ if (p1 != EVP_PKEY_DH_KDF_NONE)
+#else
if (p1 != EVP_PKEY_DH_KDF_NONE && p1 != EVP_PKEY_DH_KDF_X9_42)
+#endif
return -2;
dctx->kdf_type = p1;
return 1;
@@ -448,7 +452,9 @@ static int pkey_dh_derive(EVP_PKEY_CTX *ctx, unsigned char *key,
return ret;
*keylen = ret;
return 1;
- } else if (dctx->kdf_type == EVP_PKEY_DH_KDF_X9_42) {
+ }
+#ifndef OPENSSL_NO_CMS
+ else if (dctx->kdf_type == EVP_PKEY_DH_KDF_X9_42) {
unsigned char *Z = NULL;
size_t Zlen = 0;
if (!dctx->kdf_outlen || !dctx->kdf_oid)
@@ -479,6 +485,7 @@ static int pkey_dh_derive(EVP_PKEY_CTX *ctx, unsigned char *key,
}
return ret;
}
+#endif
return 1;
}
diff --git a/thirdparty/openssl/crypto/dsa/dsa_ameth.c b/thirdparty/openssl/crypto/dsa/dsa_ameth.c
index c4fa105747..e22627f851 100644
--- a/thirdparty/openssl/crypto/dsa/dsa_ameth.c
+++ b/thirdparty/openssl/crypto/dsa/dsa_ameth.c
@@ -133,6 +133,7 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
unsigned char *penc = NULL;
int penclen;
ASN1_STRING *str = NULL;
+ ASN1_OBJECT *aobj;
dsa = pkey->pkey.dsa;
if (pkey->save_parameters && dsa->p && dsa->q && dsa->g) {
@@ -159,8 +160,11 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
goto err;
}
- if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(EVP_PKEY_DSA),
- ptype, str, penc, penclen))
+ aobj = OBJ_nid2obj(EVP_PKEY_DSA);
+ if (aobj == NULL)
+ goto err;
+
+ if (X509_PUBKEY_set0_param(pk, aobj, ptype, str, penc, penclen))
return 1;
err:
@@ -258,6 +262,7 @@ static int dsa_priv_decode(EVP_PKEY *pkey, PKCS8_PRIV_KEY_INFO *p8)
goto dsaerr;
}
+ BN_set_flags(dsa->priv_key, BN_FLG_CONSTTIME);
if (!BN_mod_exp(dsa->pub_key, dsa->g, dsa->priv_key, dsa->p, ctx)) {
DSAerr(DSA_F_DSA_PRIV_DECODE, DSA_R_BN_ERROR);
goto dsaerr;
diff --git a/thirdparty/openssl/crypto/dsa/dsa_gen.c b/thirdparty/openssl/crypto/dsa/dsa_gen.c
index 1fce0f81c2..21af2e159f 100644
--- a/thirdparty/openssl/crypto/dsa/dsa_gen.c
+++ b/thirdparty/openssl/crypto/dsa/dsa_gen.c
@@ -482,6 +482,8 @@ int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N,
} else {
p = BN_CTX_get(ctx);
q = BN_CTX_get(ctx);
+ if (q == NULL)
+ goto err;
}
if (!BN_lshift(test, BN_value_one(), L - 1))
diff --git a/thirdparty/openssl/crypto/dsa/dsa_ossl.c b/thirdparty/openssl/crypto/dsa/dsa_ossl.c
index 58013a4a13..aa10dd12f6 100644
--- a/thirdparty/openssl/crypto/dsa/dsa_ossl.c
+++ b/thirdparty/openssl/crypto/dsa/dsa_ossl.c
@@ -224,7 +224,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
{
BN_CTX *ctx;
BIGNUM k, kq, *K, *kinv = NULL, *r = NULL;
+ BIGNUM l, m;
int ret = 0;
+ int q_bits;
if (!dsa->p || !dsa->q || !dsa->g) {
DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_MISSING_PARAMETERS);
@@ -233,6 +235,8 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
BN_init(&k);
BN_init(&kq);
+ BN_init(&l);
+ BN_init(&m);
if (ctx_in == NULL) {
if ((ctx = BN_CTX_new()) == NULL)
@@ -243,6 +247,13 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
if ((r = BN_new()) == NULL)
goto err;
+ /* Preallocate space */
+ q_bits = BN_num_bits(dsa->q);
+ if (!BN_set_bit(&k, q_bits)
+ || !BN_set_bit(&l, q_bits)
+ || !BN_set_bit(&m, q_bits))
+ goto err;
+
/* Get random k */
do
if (!BN_rand_range(&k, dsa->q))
@@ -263,24 +274,23 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
/* Compute r = (g^k mod p) mod q */
if ((dsa->flags & DSA_FLAG_NO_EXP_CONSTTIME) == 0) {
- if (!BN_copy(&kq, &k))
- goto err;
-
- BN_set_flags(&kq, BN_FLG_CONSTTIME);
-
/*
* We do not want timing information to leak the length of k, so we
- * compute g^k using an equivalent exponent of fixed length. (This
- * is a kludge that we need because the BN_mod_exp_mont() does not
- * let us specify the desired timing behaviour.)
+ * compute G^k using an equivalent scalar of fixed bit-length.
+ *
+ * We unconditionally perform both of these additions to prevent a
+ * small timing information leakage. We then choose the sum that is
+ * one bit longer than the modulus.
+ *
+ * TODO: revisit the BN_copy aiming for a memory access agnostic
+ * conditional copy.
*/
-
- if (!BN_add(&kq, &kq, dsa->q))
+ if (!BN_add(&l, &k, dsa->q)
+ || !BN_add(&m, &l, dsa->q)
+ || !BN_copy(&kq, BN_num_bits(&l) > q_bits ? &l : &m))
goto err;
- if (BN_num_bits(&kq) <= BN_num_bits(dsa->q)) {
- if (!BN_add(&kq, &kq, dsa->q))
- goto err;
- }
+
+ BN_set_flags(&kq, BN_FLG_CONSTTIME);
K = &kq;
} else {
@@ -314,7 +324,9 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
BN_CTX_free(ctx);
BN_clear_free(&k);
BN_clear_free(&kq);
- return (ret);
+ BN_clear_free(&l);
+ BN_clear_free(&m);
+ return ret;
}
static int dsa_do_verify(const unsigned char *dgst, int dgst_len,
diff --git a/thirdparty/openssl/crypto/ec/ecp_mont.c b/thirdparty/openssl/crypto/ec/ecp_mont.c
index b2de7faea7..43c4330cb0 100644
--- a/thirdparty/openssl/crypto/ec/ecp_mont.c
+++ b/thirdparty/openssl/crypto/ec/ecp_mont.c
@@ -247,6 +247,8 @@ int ec_GFp_mont_group_set_curve(EC_GROUP *group, const BIGNUM *p,
BN_CTX_free(new_ctx);
if (mont != NULL)
BN_MONT_CTX_free(mont);
+ if (one != NULL)
+ BN_free(one);
return ret;
}
diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp224.c b/thirdparty/openssl/crypto/ec/ecp_nistp224.c
index d81cc9ce6b..fcd754e448 100644
--- a/thirdparty/openssl/crypto/ec/ecp_nistp224.c
+++ b/thirdparty/openssl/crypto/ec/ecp_nistp224.c
@@ -716,7 +716,7 @@ static limb felem_is_zero(const felem in)
return (zero | two224m96p1 | two225m97p2);
}
-static limb felem_is_zero_int(const felem in)
+static int felem_is_zero_int(const void *in)
{
return (int)(felem_is_zero(in) & ((limb) 1));
}
@@ -1391,7 +1391,6 @@ static void make_points_affine(size_t num, felem points[ /* num */ ][3],
sizeof(felem),
tmp_felems,
(void (*)(void *))felem_one,
- (int (*)(const void *))
felem_is_zero_int,
(void (*)(void *, const void *))
felem_assign,
diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp256.c b/thirdparty/openssl/crypto/ec/ecp_nistp256.c
index 78d191aac7..1272966fff 100644
--- a/thirdparty/openssl/crypto/ec/ecp_nistp256.c
+++ b/thirdparty/openssl/crypto/ec/ecp_nistp256.c
@@ -977,7 +977,7 @@ static limb smallfelem_is_zero(const smallfelem small)
return result;
}
-static int smallfelem_is_zero_int(const smallfelem small)
+static int smallfelem_is_zero_int(const void *small)
{
return (int)(smallfelem_is_zero(small) & ((limb) 1));
}
@@ -1979,7 +1979,6 @@ static void make_points_affine(size_t num, smallfelem points[][3],
sizeof(smallfelem),
tmp_smallfelems,
(void (*)(void *))smallfelem_one,
- (int (*)(const void *))
smallfelem_is_zero_int,
(void (*)(void *, const void *))
smallfelem_assign,
diff --git a/thirdparty/openssl/crypto/ec/ecp_nistp521.c b/thirdparty/openssl/crypto/ec/ecp_nistp521.c
index c53a61bbfb..a1dc9946fd 100644
--- a/thirdparty/openssl/crypto/ec/ecp_nistp521.c
+++ b/thirdparty/openssl/crypto/ec/ecp_nistp521.c
@@ -871,7 +871,7 @@ static limb felem_is_zero(const felem in)
return is_zero;
}
-static int felem_is_zero_int(const felem in)
+static int felem_is_zero_int(const void *in)
{
return (int)(felem_is_zero(in) & ((limb) 1));
}
@@ -1787,7 +1787,6 @@ static void make_points_affine(size_t num, felem points[][3],
sizeof(felem),
tmp_felems,
(void (*)(void *))felem_one,
- (int (*)(const void *))
felem_is_zero_int,
(void (*)(void *, const void *))
felem_assign,
diff --git a/thirdparty/openssl/crypto/ecdh/ech_lib.c b/thirdparty/openssl/crypto/ecdh/ech_lib.c
index cbc21d1a27..9cc22582e4 100644
--- a/thirdparty/openssl/crypto/ecdh/ech_lib.c
+++ b/thirdparty/openssl/crypto/ecdh/ech_lib.c
@@ -225,9 +225,16 @@ ECDH_DATA *ecdh_check(EC_KEY *key)
*/
ecdh_data_free(ecdh_data);
ecdh_data = (ECDH_DATA *)data;
+ } else if (EC_KEY_get_key_method_data(key, ecdh_data_dup,
+ ecdh_data_free,
+ ecdh_data_free) != ecdh_data) {
+ /* Or an out of memory error in EC_KEY_insert_key_method_data. */
+ ecdh_data_free(ecdh_data);
+ return NULL;
}
- } else
+ } else {
ecdh_data = (ECDH_DATA *)data;
+ }
#ifdef OPENSSL_FIPS
if (FIPS_mode() && !(ecdh_data->flags & ECDH_FLAG_FIPS_METHOD)
&& !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) {
diff --git a/thirdparty/openssl/crypto/ecdsa/ecs_lib.c b/thirdparty/openssl/crypto/ecdsa/ecs_lib.c
index 8dc1dda462..f1dd472317 100644
--- a/thirdparty/openssl/crypto/ecdsa/ecs_lib.c
+++ b/thirdparty/openssl/crypto/ecdsa/ecs_lib.c
@@ -203,9 +203,16 @@ ECDSA_DATA *ecdsa_check(EC_KEY *key)
*/
ecdsa_data_free(ecdsa_data);
ecdsa_data = (ECDSA_DATA *)data;
+ } else if (EC_KEY_get_key_method_data(key, ecdsa_data_dup,
+ ecdsa_data_free,
+ ecdsa_data_free) != ecdsa_data) {
+ /* Or an out of memory error in EC_KEY_insert_key_method_data. */
+ ecdsa_data_free(ecdsa_data);
+ return NULL;
}
- } else
+ } else {
ecdsa_data = (ECDSA_DATA *)data;
+ }
#ifdef OPENSSL_FIPS
if (FIPS_mode() && !(ecdsa_data->flags & ECDSA_FLAG_FIPS_METHOD)
&& !(EC_KEY_get_flags(key) & EC_FLAG_NON_FIPS_ALLOW)) {
diff --git a/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c b/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c
index dd769609be..16d4f59b9b 100644
--- a/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c
+++ b/thirdparty/openssl/crypto/ecdsa/ecs_ossl.c
@@ -95,6 +95,7 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
EC_POINT *tmp_point = NULL;
const EC_GROUP *group;
int ret = 0;
+ int order_bits;
if (eckey == NULL || (group = EC_KEY_get0_group(eckey)) == NULL) {
ECDSAerr(ECDSA_F_ECDSA_SIGN_SETUP, ERR_R_PASSED_NULL_PARAMETER);
@@ -126,6 +127,13 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
goto err;
}
+ /* Preallocate space */
+ order_bits = BN_num_bits(order);
+ if (!BN_set_bit(k, order_bits)
+ || !BN_set_bit(r, order_bits)
+ || !BN_set_bit(X, order_bits))
+ goto err;
+
do {
/* get random k */
do
@@ -139,13 +147,19 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
/*
* We do not want timing information to leak the length of k, so we
* compute G*k using an equivalent scalar of fixed bit-length.
+ *
+ * We unconditionally perform both of these additions to prevent a
+ * small timing information leakage. We then choose the sum that is
+ * one bit longer than the order. This guarantees the code
+ * path used in the constant time implementations elsewhere.
+ *
+ * TODO: revisit the BN_copy aiming for a memory access agnostic
+ * conditional copy.
*/
-
- if (!BN_add(k, k, order))
+ if (!BN_add(r, k, order)
+ || !BN_add(X, r, order)
+ || !BN_copy(k, BN_num_bits(r) > order_bits ? r : X))
goto err;
- if (BN_num_bits(k) <= BN_num_bits(order))
- if (!BN_add(k, k, order))
- goto err;
/* compute r the x-coordinate of generator * k */
if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx)) {
diff --git a/thirdparty/openssl/crypto/engine/eng_fat.c b/thirdparty/openssl/crypto/engine/eng_fat.c
index 4279dd94b1..55d3858bb1 100644
--- a/thirdparty/openssl/crypto/engine/eng_fat.c
+++ b/thirdparty/openssl/crypto/engine/eng_fat.c
@@ -167,6 +167,7 @@ int ENGINE_register_complete(ENGINE *e)
#endif
ENGINE_register_RAND(e);
ENGINE_register_pkey_meths(e);
+ ENGINE_register_pkey_asn1_meths(e);
return 1;
}
diff --git a/thirdparty/openssl/crypto/err/err.c b/thirdparty/openssl/crypto/err/err.c
index 0b1fcfc1f1..cfe0e8083f 100644
--- a/thirdparty/openssl/crypto/err/err.c
+++ b/thirdparty/openssl/crypto/err/err.c
@@ -725,6 +725,8 @@ void ERR_put_error(int lib, int func, int reason, const char *file, int line)
}
#endif
es = ERR_get_state();
+ if (es == NULL)
+ return;
es->top = (es->top + 1) % ERR_NUM_ERRORS;
if (es->top == es->bottom)
@@ -742,6 +744,8 @@ void ERR_clear_error(void)
ERR_STATE *es;
es = ERR_get_state();
+ if (es == NULL)
+ return;
for (i = 0; i < ERR_NUM_ERRORS; i++) {
err_clear(es, i);
@@ -806,6 +810,8 @@ static unsigned long get_error_values(int inc, int top, const char **file,
unsigned long ret;
es = ERR_get_state();
+ if (es == NULL)
+ return 0;
if (inc && top) {
if (file)
@@ -1016,7 +1022,6 @@ void ERR_remove_state(unsigned long pid)
ERR_STATE *ERR_get_state(void)
{
- static ERR_STATE fallback;
ERR_STATE *ret, tmp, *tmpp = NULL;
int i;
CRYPTO_THREADID tid;
@@ -1030,7 +1035,7 @@ ERR_STATE *ERR_get_state(void)
if (ret == NULL) {
ret = (ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE));
if (ret == NULL)
- return (&fallback);
+ return NULL;
CRYPTO_THREADID_cpy(&ret->tid, &tid);
ret->top = 0;
ret->bottom = 0;
@@ -1042,7 +1047,7 @@ ERR_STATE *ERR_get_state(void)
/* To check if insertion failed, do a get. */
if (ERRFN(thread_get_item) (ret) != ret) {
ERR_STATE_free(ret); /* could not insert it */
- return (&fallback);
+ return NULL;
}
/*
* If a race occured in this function and we came second, tmpp is the
@@ -1066,10 +1071,10 @@ void ERR_set_error_data(char *data, int flags)
int i;
es = ERR_get_state();
+ if (es == NULL)
+ return;
i = es->top;
- if (i == 0)
- i = ERR_NUM_ERRORS - 1;
err_clear_data(es, i);
es->err_data[i] = data;
@@ -1121,6 +1126,8 @@ int ERR_set_mark(void)
ERR_STATE *es;
es = ERR_get_state();
+ if (es == NULL)
+ return 0;
if (es->bottom == es->top)
return 0;
@@ -1133,6 +1140,8 @@ int ERR_pop_to_mark(void)
ERR_STATE *es;
es = ERR_get_state();
+ if (es == NULL)
+ return 0;
while (es->bottom != es->top
&& (es->err_flags[es->top] & ERR_FLAG_MARK) == 0) {
diff --git a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
index d114710e98..b25fc6d541 100644
--- a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
+++ b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha1.c
@@ -579,12 +579,17 @@ static int aesni_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8);
maxpad &= 255;
- ret &= constant_time_ge(maxpad, pad);
+ mask = constant_time_ge(maxpad, pad);
+ ret &= mask;
+ /*
+ * If pad is invalid then we will fail the above test but we must
+ * continue anyway because we are in constant time code. However,
+ * we'll use the maxpad value instead of the supplied pad to make
+ * sure we perform well defined pointer arithmetic.
+ */
+ pad = constant_time_select(mask, pad, maxpad);
inp_len = len - (SHA_DIGEST_LENGTH + pad + 1);
- mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1)));
- inp_len &= mask;
- ret &= (int)mask;
key->aux.tls_aad[plen - 2] = inp_len >> 8;
key->aux.tls_aad[plen - 1] = inp_len;
diff --git a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c
index 917ae0751d..9a8a2ad778 100644
--- a/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c
+++ b/thirdparty/openssl/crypto/evp/e_aes_cbc_hmac_sha256.c
@@ -507,10 +507,12 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx,
* to identify it and avoid stitch invocation. So that after we
* establish that current CPU supports AVX, we even see if it's
* either even XOP-capable Bulldozer-based or GenuineIntel one.
+ * But SHAEXT-capable go ahead...
*/
- if (OPENSSL_ia32cap_P[1] & (1 << (60 - 32)) && /* AVX? */
- ((OPENSSL_ia32cap_P[1] & (1 << (43 - 32))) /* XOP? */
- | (OPENSSL_ia32cap_P[0] & (1<<30))) && /* "Intel CPU"? */
+ if (((OPENSSL_ia32cap_P[2] & (1 << 29)) || /* SHAEXT? */
+ ((OPENSSL_ia32cap_P[1] & (1 << (60 - 32))) && /* AVX? */
+ ((OPENSSL_ia32cap_P[1] & (1 << (43 - 32))) /* XOP? */
+ | (OPENSSL_ia32cap_P[0] & (1 << 30))))) && /* "Intel CPU"? */
plen > (sha_off + iv) &&
(blocks = (plen - (sha_off + iv)) / SHA256_CBLOCK)) {
SHA256_Update(&key->md, in + iv, sha_off);
@@ -590,12 +592,17 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx,
maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8);
maxpad &= 255;
- ret &= constant_time_ge(maxpad, pad);
+ mask = constant_time_ge(maxpad, pad);
+ ret &= mask;
+ /*
+ * If pad is invalid then we will fail the above test but we must
+ * continue anyway because we are in constant time code. However,
+ * we'll use the maxpad value instead of the supplied pad to make
+ * sure we perform well defined pointer arithmetic.
+ */
+ pad = constant_time_select(mask, pad, maxpad);
inp_len = len - (SHA256_DIGEST_LENGTH + pad + 1);
- mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1)));
- inp_len &= mask;
- ret &= (int)mask;
key->aux.tls_aad[plen - 2] = inp_len >> 8;
key->aux.tls_aad[plen - 1] = inp_len;
diff --git a/thirdparty/openssl/crypto/evp/evp_key.c b/thirdparty/openssl/crypto/evp/evp_key.c
index 5be9e336f9..cdffe1c8c4 100644
--- a/thirdparty/openssl/crypto/evp/evp_key.c
+++ b/thirdparty/openssl/crypto/evp/evp_key.c
@@ -97,7 +97,7 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt,
int verify)
{
- int ret;
+ int ret = -1;
char buff[BUFSIZ];
UI *ui;
@@ -105,16 +105,18 @@ int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt,
prompt = prompt_string;
ui = UI_new();
if (ui == NULL)
- return -1;
- UI_add_input_string(ui, prompt, 0, buf, min,
- (len >= BUFSIZ) ? BUFSIZ - 1 : len);
- if (verify)
- UI_add_verify_string(ui, prompt, 0,
- buff, min, (len >= BUFSIZ) ? BUFSIZ - 1 : len,
- buf);
+ return ret;
+ if (UI_add_input_string(ui, prompt, 0, buf, min,
+ (len >= BUFSIZ) ? BUFSIZ - 1 : len) < 0
+ || (verify
+ && UI_add_verify_string(ui, prompt, 0, buff, min,
+ (len >= BUFSIZ) ? BUFSIZ - 1 : len,
+ buf) < 0))
+ goto end;
ret = UI_process(ui);
- UI_free(ui);
OPENSSL_cleanse(buff, BUFSIZ);
+ end:
+ UI_free(ui);
return ret;
}
diff --git a/thirdparty/openssl/crypto/evp/pmeth_lib.c b/thirdparty/openssl/crypto/evp/pmeth_lib.c
index b7b7bdcd02..e50826b568 100644
--- a/thirdparty/openssl/crypto/evp/pmeth_lib.c
+++ b/thirdparty/openssl/crypto/evp/pmeth_lib.c
@@ -589,3 +589,170 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
pmeth->ctrl = ctrl;
pmeth->ctrl_str = ctrl_str;
}
+
+void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth,
+ int (**pinit) (EVP_PKEY_CTX *ctx))
+{
+ *pinit = pmeth->init;
+}
+
+void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth,
+ int (**pcopy) (EVP_PKEY_CTX *dst,
+ EVP_PKEY_CTX *src))
+{
+ *pcopy = pmeth->copy;
+}
+
+void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth,
+ void (**pcleanup) (EVP_PKEY_CTX *ctx))
+{
+ *pcleanup = pmeth->cleanup;
+}
+
+void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth,
+ int (**pparamgen_init) (EVP_PKEY_CTX *ctx),
+ int (**pparamgen) (EVP_PKEY_CTX *ctx,
+ EVP_PKEY *pkey))
+{
+ if (pparamgen_init)
+ *pparamgen_init = pmeth->paramgen_init;
+ if (pparamgen)
+ *pparamgen = pmeth->paramgen;
+}
+
+void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth,
+ int (**pkeygen_init) (EVP_PKEY_CTX *ctx),
+ int (**pkeygen) (EVP_PKEY_CTX *ctx,
+ EVP_PKEY *pkey))
+{
+ if (pkeygen_init)
+ *pkeygen_init = pmeth->keygen_init;
+ if (pkeygen)
+ *pkeygen = pmeth->keygen;
+}
+
+void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth,
+ int (**psign_init) (EVP_PKEY_CTX *ctx),
+ int (**psign) (EVP_PKEY_CTX *ctx,
+ unsigned char *sig, size_t *siglen,
+ const unsigned char *tbs,
+ size_t tbslen))
+{
+ if (psign_init)
+ *psign_init = pmeth->sign_init;
+ if (psign)
+ *psign = pmeth->sign;
+}
+
+void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth,
+ int (**pverify_init) (EVP_PKEY_CTX *ctx),
+ int (**pverify) (EVP_PKEY_CTX *ctx,
+ const unsigned char *sig,
+ size_t siglen,
+ const unsigned char *tbs,
+ size_t tbslen))
+{
+ if (pverify_init)
+ *pverify_init = pmeth->verify_init;
+ if (pverify)
+ *pverify = pmeth->verify;
+}
+
+void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth,
+ int (**pverify_recover_init) (EVP_PKEY_CTX
+ *ctx),
+ int (**pverify_recover) (EVP_PKEY_CTX
+ *ctx,
+ unsigned char
+ *sig,
+ size_t *siglen,
+ const unsigned
+ char *tbs,
+ size_t tbslen))
+{
+ if (pverify_recover_init)
+ *pverify_recover_init = pmeth->verify_recover_init;
+ if (pverify_recover)
+ *pverify_recover = pmeth->verify_recover;
+}
+
+void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
+ int (**psignctx_init) (EVP_PKEY_CTX *ctx,
+ EVP_MD_CTX *mctx),
+ int (**psignctx) (EVP_PKEY_CTX *ctx,
+ unsigned char *sig,
+ size_t *siglen,
+ EVP_MD_CTX *mctx))
+{
+ if (psignctx_init)
+ *psignctx_init = pmeth->signctx_init;
+ if (psignctx)
+ *psignctx = pmeth->signctx;
+}
+
+void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
+ int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
+ EVP_MD_CTX *mctx),
+ int (**pverifyctx) (EVP_PKEY_CTX *ctx,
+ const unsigned char *sig,
+ int siglen,
+ EVP_MD_CTX *mctx))
+{
+ if (pverifyctx_init)
+ *pverifyctx_init = pmeth->verifyctx_init;
+ if (pverifyctx)
+ *pverifyctx = pmeth->verifyctx;
+}
+
+void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth,
+ int (**pencrypt_init) (EVP_PKEY_CTX *ctx),
+ int (**pencryptfn) (EVP_PKEY_CTX *ctx,
+ unsigned char *out,
+ size_t *outlen,
+ const unsigned char *in,
+ size_t inlen))
+{
+ if (pencrypt_init)
+ *pencrypt_init = pmeth->encrypt_init;
+ if (pencryptfn)
+ *pencryptfn = pmeth->encrypt;
+}
+
+void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth,
+ int (**pdecrypt_init) (EVP_PKEY_CTX *ctx),
+ int (**pdecrypt) (EVP_PKEY_CTX *ctx,
+ unsigned char *out,
+ size_t *outlen,
+ const unsigned char *in,
+ size_t inlen))
+{
+ if (pdecrypt_init)
+ *pdecrypt_init = pmeth->decrypt_init;
+ if (pdecrypt)
+ *pdecrypt = pmeth->decrypt;
+}
+
+void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth,
+ int (**pderive_init) (EVP_PKEY_CTX *ctx),
+ int (**pderive) (EVP_PKEY_CTX *ctx,
+ unsigned char *key,
+ size_t *keylen))
+{
+ if (pderive_init)
+ *pderive_init = pmeth->derive_init;
+ if (pderive)
+ *pderive = pmeth->derive;
+}
+
+void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth,
+ int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
+ void *p2),
+ int (**pctrl_str) (EVP_PKEY_CTX *ctx,
+ const char *type,
+ const char *value))
+{
+ if (pctrl)
+ *pctrl = pmeth->ctrl;
+ if (pctrl_str)
+ *pctrl_str = pmeth->ctrl_str;
+}
diff --git a/thirdparty/openssl/crypto/ex_data.c b/thirdparty/openssl/crypto/ex_data.c
index 108a1959ea..723b21b3d2 100644
--- a/thirdparty/openssl/crypto/ex_data.c
+++ b/thirdparty/openssl/crypto/ex_data.c
@@ -473,7 +473,14 @@ static int int_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
if (j < mx)
mx = j;
if (mx > 0) {
- if (!CRYPTO_set_ex_data(to, mx - 1, NULL))
+ /*
+ * Make sure the ex_data stack is at least |mx| elements long to avoid
+ * issues in the for loop that follows; so go get the |mx|'th element
+ * (if it does not exist CRYPTO_get_ex_data() returns NULL), and assign
+ * to itself. This is normally a no-op; but ensures the stack is the
+ * proper size
+ */
+ if (!CRYPTO_set_ex_data(to, mx - 1, CRYPTO_get_ex_data(to, mx - 1)))
goto skip;
storage = OPENSSL_malloc(mx * sizeof(CRYPTO_EX_DATA_FUNCS *));
if (!storage)
diff --git a/thirdparty/openssl/crypto/include/internal/bn_conf.h b/thirdparty/openssl/crypto/include/internal/bn_conf.h
deleted file mode 100644
index 34bd8b78b4..0000000000
--- a/thirdparty/openssl/crypto/include/internal/bn_conf.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* WARNING: do not edit! */
-/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */
-/*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the OpenSSL license (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-#ifndef HEADER_BN_CONF_H
-# define HEADER_BN_CONF_H
-
-/*
- * The contents of this file are not used in the UEFI build, as
- * both 32-bit and 64-bit builds are supported from a single run
- * of the Configure script.
- */
-
-/* Should we define BN_DIV2W here? */
-
-/* Only one for the following should be defined */
-#define SIXTY_FOUR_BIT_LONG
-#undef SIXTY_FOUR_BIT
-#undef THIRTY_TWO_BIT
-
-#endif
diff --git a/thirdparty/openssl/crypto/include/internal/dso_conf.h b/thirdparty/openssl/crypto/include/internal/dso_conf.h
deleted file mode 100644
index 7a52dd1f1a..0000000000
--- a/thirdparty/openssl/crypto/include/internal/dso_conf.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* WARNING: do not edit! */
-/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */
-/*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the OpenSSL license (the "License"). You may not use
- * this file except in compliance with the License. You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-#ifndef HEADER_DSO_CONF_H
-# define HEADER_DSO_CONF_H
-
-# define DSO_EXTENSION ".so"
-#endif
diff --git a/thirdparty/openssl/crypto/lhash/lhash.c b/thirdparty/openssl/crypto/lhash/lhash.c
index f20353aea3..51bb258e74 100644
--- a/thirdparty/openssl/crypto/lhash/lhash.c
+++ b/thirdparty/openssl/crypto/lhash/lhash.c
@@ -101,6 +101,24 @@
#include <openssl/crypto.h>
#include <openssl/lhash.h>
+/*
+ * A hashing implementation that appears to be based on the linear hashing
+ * alogrithm:
+ * https://en.wikipedia.org/wiki/Linear_hashing
+ *
+ * Litwin, Witold (1980), "Linear hashing: A new tool for file and table
+ * addressing", Proc. 6th Conference on Very Large Databases: 212-223
+ * http://hackthology.com/pdfs/Litwin-1980-Linear_Hashing.pdf
+ *
+ * From the wikipedia article "Linear hashing is used in the BDB Berkeley
+ * database system, which in turn is used by many software systems such as
+ * OpenLDAP, using a C implementation derived from the CACM article and first
+ * published on the Usenet in 1988 by Esmond Pitt."
+ *
+ * The CACM paper is available here:
+ * https://pdfs.semanticscholar.org/ff4d/1c5deca6269cc316bfd952172284dbf610ee.pdf
+ */
+
const char lh_version[] = "lhash" OPENSSL_VERSION_PTEXT;
#undef MIN_NODES
@@ -108,7 +126,7 @@ const char lh_version[] = "lhash" OPENSSL_VERSION_PTEXT;
#define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */
#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */
-static void expand(_LHASH *lh);
+static int expand(_LHASH *lh);
static void contract(_LHASH *lh);
static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash);
@@ -182,8 +200,9 @@ void *lh_insert(_LHASH *lh, void *data)
void *ret;
lh->error = 0;
- if (lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes))
- expand(lh);
+ if (lh->up_load <= (lh->num_items * LH_LOAD_MULT / lh->num_nodes)
+ && !expand(lh))
+ return NULL;
rn = getrn(lh, data, &hash);
@@ -300,19 +319,37 @@ void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg);
}
-static void expand(_LHASH *lh)
+static int expand(_LHASH *lh)
{
LHASH_NODE **n, **n1, **n2, *np;
- unsigned int p, i, j;
- unsigned long hash, nni;
+ unsigned int p, pmax, nni, j;
+ unsigned long hash;
+
+ nni = lh->num_alloc_nodes;
+ p = lh->p;
+ pmax = lh->pmax;
+ if (p + 1 >= pmax) {
+ j = nni * 2;
+ n = OPENSSL_realloc(lh->b, (int)(sizeof(LHASH_NODE *) * j));
+ if (n == NULL) {
+ lh->error++;
+ return 0;
+ }
+ lh->b = n;
+ memset(n + nni, 0, sizeof(*n) * (j - nni));
+ lh->pmax = nni;
+ lh->num_alloc_nodes = j;
+ lh->num_expand_reallocs++;
+ lh->p = 0;
+ } else {
+ lh->p++;
+ }
lh->num_nodes++;
lh->num_expands++;
- p = (int)lh->p++;
n1 = &(lh->b[p]);
- n2 = &(lh->b[p + (int)lh->pmax]);
- *n2 = NULL; /* 27/07/92 - eay - undefined pointer bug */
- nni = lh->num_alloc_nodes;
+ n2 = &(lh->b[p + pmax]);
+ *n2 = NULL;
for (np = *n1; np != NULL;) {
#ifndef OPENSSL_NO_HASH_COMP
@@ -330,25 +367,7 @@ static void expand(_LHASH *lh)
np = *n1;
}
- if ((lh->p) >= lh->pmax) {
- j = (int)lh->num_alloc_nodes * 2;
- n = (LHASH_NODE **)OPENSSL_realloc(lh->b,
- (int)(sizeof(LHASH_NODE *) * j));
- if (n == NULL) {
- lh->error++;
- lh->num_nodes--;
- lh->p = 0;
- return;
- }
- /* else */
- for (i = (int)lh->num_alloc_nodes; i < j; i++) /* 26/02/92 eay */
- n[i] = NULL; /* 02/03/92 eay */
- lh->pmax = lh->num_alloc_nodes;
- lh->num_alloc_nodes = j;
- lh->num_expand_reallocs++;
- lh->p = 0;
- lh->b = n;
- }
+ return 1;
}
static void contract(_LHASH *lh)
diff --git a/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c b/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c
index d4a257c33b..7a7d06094e 100644
--- a/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c
+++ b/thirdparty/openssl/crypto/ocsp/ocsp_vfy.c
@@ -118,6 +118,8 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
goto end;
}
}
+ } else if (certs != NULL) {
+ untrusted = certs;
} else {
untrusted = bs->certs;
}
diff --git a/thirdparty/openssl/crypto/pem/pem_lib.c b/thirdparty/openssl/crypto/pem/pem_lib.c
index c82b3c0ae2..865976bf8c 100644
--- a/thirdparty/openssl/crypto/pem/pem_lib.c
+++ b/thirdparty/openssl/crypto/pem/pem_lib.c
@@ -536,7 +536,8 @@ int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher)
((c >= '0') && (c <= '9'))))
break;
#else
- if (!(isupper(c) || (c == '-') || isdigit(c)))
+ if (!(isupper((unsigned char)c) || (c == '-')
+ || isdigit((unsigned char)c)))
break;
#endif
header++;
diff --git a/thirdparty/openssl/crypto/pem/pem_pk8.c b/thirdparty/openssl/crypto/pem/pem_pk8.c
index 5747c7366e..daf210fde0 100644
--- a/thirdparty/openssl/crypto/pem/pem_pk8.c
+++ b/thirdparty/openssl/crypto/pem/pem_pk8.c
@@ -178,6 +178,7 @@ EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
}
p8inf = PKCS8_decrypt(p8, psbuf, klen);
X509_SIG_free(p8);
+ OPENSSL_cleanse(psbuf, klen);
if (!p8inf)
return NULL;
ret = EVP_PKCS82PKEY(p8inf);
diff --git a/thirdparty/openssl/crypto/pem/pem_pkey.c b/thirdparty/openssl/crypto/pem/pem_pkey.c
index 04d6319a22..e8b3a1b92c 100644
--- a/thirdparty/openssl/crypto/pem/pem_pkey.c
+++ b/thirdparty/openssl/crypto/pem/pem_pkey.c
@@ -120,6 +120,7 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb,
}
p8inf = PKCS8_decrypt(p8, psbuf, klen);
X509_SIG_free(p8);
+ OPENSSL_cleanse(psbuf, klen);
if (!p8inf)
goto p8err;
ret = EVP_PKCS82PKEY(p8inf);
diff --git a/thirdparty/openssl/crypto/pkcs12/p12_kiss.c b/thirdparty/openssl/crypto/pkcs12/p12_kiss.c
index 9aa3c90c4e..1841f78f69 100644
--- a/thirdparty/openssl/crypto/pkcs12/p12_kiss.c
+++ b/thirdparty/openssl/crypto/pkcs12/p12_kiss.c
@@ -84,6 +84,12 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
{
STACK_OF(X509) *ocerts = NULL;
X509 *x = NULL;
+
+ if (pkey)
+ *pkey = NULL;
+ if (cert)
+ *cert = NULL;
+
/* Check for NULL PKCS12 structure */
if (!p12) {
@@ -92,11 +98,6 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
return 0;
}
- if (pkey)
- *pkey = NULL;
- if (cert)
- *cert = NULL;
-
/* Check the mac */
/*
@@ -125,7 +126,7 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
if (!ocerts) {
PKCS12err(PKCS12_F_PKCS12_PARSE, ERR_R_MALLOC_FAILURE);
- return 0;
+ goto err;
}
if (!parse_pk12(p12, pass, -1, pkey, ocerts)) {
@@ -163,10 +164,14 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
err:
- if (pkey && *pkey)
+ if (pkey) {
EVP_PKEY_free(*pkey);
- if (cert && *cert)
+ *pkey = NULL;
+ }
+ if (cert) {
X509_free(*cert);
+ *cert = NULL;
+ }
if (x)
X509_free(x);
if (ocerts)
diff --git a/thirdparty/openssl/crypto/rand/rand_win.c b/thirdparty/openssl/crypto/rand/rand_win.c
index cb4093128d..bc2a7d201d 100644
--- a/thirdparty/openssl/crypto/rand/rand_win.c
+++ b/thirdparty/openssl/crypto/rand/rand_win.c
@@ -198,6 +198,8 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE);
# endif /* 1 */
# endif /* !OPENSSL_SYS_WINCE */
+#define NOTTOOLONG(start) ((GetTickCount() - (start)) < MAXDELAY)
+
#if !defined(UWP_ENABLED) // -- GODOT --
int RAND_poll(void)
{
@@ -469,9 +471,7 @@ int RAND_poll(void)
do
RAND_add(&hentry, hentry.dwSize, 5);
while (heap_next(&hentry)
- && (!good
- || (GetTickCount() - starttime) <
- MAXDELAY)
+ && (!good || NOTTOOLONG(starttime))
&& --entrycnt > 0);
}
}
@@ -483,8 +483,7 @@ int RAND_poll(void)
ex_cnt_limit--;
}
} while (heaplist_next(handle, &hlist)
- && (!good
- || (GetTickCount() - starttime) < MAXDELAY)
+ && (!good || NOTTOOLONG(starttime))
&& ex_cnt_limit > 0);
}
# else
@@ -499,11 +498,11 @@ int RAND_poll(void)
do
RAND_add(&hentry, hentry.dwSize, 5);
while (heap_next(&hentry)
+ && (!good || NOTTOOLONG(starttime))
&& --entrycnt > 0);
}
} while (heaplist_next(handle, &hlist)
- && (!good
- || (GetTickCount() - starttime) < MAXDELAY));
+ && (!good || NOTTOOLONG(starttime)));
}
# endif
@@ -521,8 +520,7 @@ int RAND_poll(void)
do
RAND_add(&p, p.dwSize, 9);
while (process_next(handle, &p)
- && (!good
- || (GetTickCount() - starttime) < MAXDELAY));
+ && (!good || NOTTOOLONG(starttime)));
/* thread walking */
/*
@@ -536,8 +534,7 @@ int RAND_poll(void)
do
RAND_add(&t, t.dwSize, 6);
while (thread_next(handle, &t)
- && (!good
- || (GetTickCount() - starttime) < MAXDELAY));
+ && (!good || NOTTOOLONG(starttime)));
/* module walking */
/*
@@ -551,8 +548,7 @@ int RAND_poll(void)
do
RAND_add(&m, m.dwSize, 9);
while (module_next(handle, &m)
- && (!good
- || (GetTickCount() - starttime) < MAXDELAY));
+ && (!good || NOTTOOLONG(starttime)));
if (close_snap)
close_snap(handle);
else
@@ -713,14 +709,13 @@ static void readscreen(void)
hBitmap = CreateCompatibleBitmap(hScrDC, w, n);
/* Get bitmap properties */
- GetObject(hBitmap, sizeof(BITMAP), (LPSTR) & bm);
- size = (unsigned int)bm.bmWidthBytes * bm.bmHeight * bm.bmPlanes;
-
- bi.biSize = sizeof(BITMAPINFOHEADER);
+ GetObject(hBitmap, sizeof(bm), (LPSTR)&bm);
+ size = (unsigned int)4 * bm.bmHeight * bm.bmWidth;
+ bi.biSize = sizeof(bi);
bi.biWidth = bm.bmWidth;
bi.biHeight = bm.bmHeight;
- bi.biPlanes = bm.bmPlanes;
- bi.biBitCount = bm.bmBitsPixel;
+ bi.biPlanes = 1;
+ bi.biBitCount = 32;
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
@@ -736,7 +731,7 @@ static void readscreen(void)
/* Copy the bits of the current line range into the buffer */
GetDIBits(hScrDC, hBitmap, y, n,
- bmbits, (BITMAPINFO *) & bi, DIB_RGB_COLORS);
+ bmbits, (LPBITMAPINFO)&bi, DIB_RGB_COLORS);
/* Get the hash of the bitmap */
MD(bmbits, size, md);
diff --git a/thirdparty/openssl/crypto/rsa/rsa_ameth.c b/thirdparty/openssl/crypto/rsa/rsa_ameth.c
index 951e1d5ca3..ddead3d744 100644
--- a/thirdparty/openssl/crypto/rsa/rsa_ameth.c
+++ b/thirdparty/openssl/crypto/rsa/rsa_ameth.c
@@ -768,6 +768,7 @@ static int rsa_item_sign(EVP_MD_CTX *ctx, const ASN1_ITEM *it, void *asn,
return 2;
}
+#ifndef OPENSSL_NO_CMS
static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg,
X509_ALGOR **pmaskHash)
{
@@ -791,7 +792,6 @@ static RSA_OAEP_PARAMS *rsa_oaep_decode(const X509_ALGOR *alg,
return pss;
}
-#ifndef OPENSSL_NO_CMS
static int rsa_cms_decrypt(CMS_RecipientInfo *ri)
{
EVP_PKEY_CTX *pkctx;
diff --git a/thirdparty/openssl/crypto/rsa/rsa_gen.c b/thirdparty/openssl/crypto/rsa/rsa_gen.c
index 082c8da2ef..a85493d609 100644
--- a/thirdparty/openssl/crypto/rsa/rsa_gen.c
+++ b/thirdparty/openssl/crypto/rsa/rsa_gen.c
@@ -110,6 +110,16 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value,
int bitsp, bitsq, ok = -1, n = 0;
BN_CTX *ctx = NULL;
+ /*
+ * When generating ridiculously small keys, we can get stuck
+ * continually regenerating the same prime values.
+ */
+ if (bits < 16) {
+ ok = 0; /* we set our own err */
+ RSAerr(RSA_F_RSA_BUILTIN_KEYGEN, RSA_R_KEY_SIZE_TOO_SMALL);
+ goto err;
+ }
+
ctx = BN_CTX_new();
if (ctx == NULL)
goto err;
@@ -161,21 +171,10 @@ static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value,
if (!BN_GENCB_call(cb, 3, 0))
goto err;
for (;;) {
- /*
- * When generating ridiculously small keys, we can get stuck
- * continually regenerating the same prime values. Check for this and
- * bail if it happens 3 times.
- */
- unsigned int degenerate = 0;
do {
if (!BN_generate_prime_ex(rsa->q, bitsq, 0, NULL, NULL, cb))
goto err;
- } while ((BN_cmp(rsa->p, rsa->q) == 0) && (++degenerate < 3));
- if (degenerate == 3) {
- ok = 0; /* we set our own err */
- RSAerr(RSA_F_RSA_BUILTIN_KEYGEN, RSA_R_KEY_SIZE_TOO_SMALL);
- goto err;
- }
+ } while (BN_cmp(rsa->p, rsa->q) == 0);
if (!BN_sub(r2, rsa->q, BN_value_one()))
goto err;
if (!BN_gcd(r1, r2, rsa->e, ctx))
diff --git a/thirdparty/openssl/crypto/rsa/rsa_oaep.c b/thirdparty/openssl/crypto/rsa/rsa_oaep.c
index 19d28c6f0e..9a01b4afc1 100644
--- a/thirdparty/openssl/crypto/rsa/rsa_oaep.c
+++ b/thirdparty/openssl/crypto/rsa/rsa_oaep.c
@@ -237,10 +237,14 @@ int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1,
RSA_R_OAEP_DECODING_ERROR);
cleanup:
- if (db != NULL)
+ if (db != NULL) {
+ OPENSSL_cleanse(db, dblen);
OPENSSL_free(db);
- if (em != NULL)
+ }
+ if (em != NULL) {
+ OPENSSL_cleanse(em, num);
OPENSSL_free(em);
+ }
return mlen;
}
diff --git a/thirdparty/openssl/crypto/rsa/rsa_pk1.c b/thirdparty/openssl/crypto/rsa/rsa_pk1.c
index efa1fd3e99..50397c335a 100644
--- a/thirdparty/openssl/crypto/rsa/rsa_pk1.c
+++ b/thirdparty/openssl/crypto/rsa/rsa_pk1.c
@@ -255,8 +255,6 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
* We can't continue in constant-time because we need to copy the result
* and we cannot fake its length. This unavoidably leaks timing
* information at the API boundary.
- * TODO(emilia): this could be addressed at the call site,
- * see BoringSSL commit 0aa0767340baf925bda4804882aab0cb974b2d26.
*/
if (!good) {
mlen = -1;
@@ -266,8 +264,10 @@ int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
memcpy(to, em + msg_index, mlen);
err:
- if (em != NULL)
+ if (em != NULL) {
+ OPENSSL_cleanse(em, num);
OPENSSL_free(em);
+ }
if (mlen == -1)
RSAerr(RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2,
RSA_R_PKCS_DECODING_ERROR);
diff --git a/thirdparty/openssl/crypto/rsa/rsa_pmeth.c b/thirdparty/openssl/crypto/rsa/rsa_pmeth.c
index 8896e2e977..00e730ffa9 100644
--- a/thirdparty/openssl/crypto/rsa/rsa_pmeth.c
+++ b/thirdparty/openssl/crypto/rsa/rsa_pmeth.c
@@ -180,27 +180,25 @@ static void pkey_rsa_cleanup(EVP_PKEY_CTX *ctx)
* FIPS mode.
*/
-static int pkey_fips_check_ctx(EVP_PKEY_CTX *ctx)
+static int pkey_fips_check_rsa(const RSA *rsa, const EVP_MD **pmd,
+ const EVP_MD **pmgf1md)
{
- RSA_PKEY_CTX *rctx = ctx->data;
- RSA *rsa = ctx->pkey->pkey.rsa;
int rv = -1;
+
if (!FIPS_mode())
return 0;
if (rsa->flags & RSA_FLAG_NON_FIPS_ALLOW)
rv = 0;
if (!(rsa->meth->flags & RSA_FLAG_FIPS_METHOD) && rv)
return -1;
- if (rctx->md) {
- const EVP_MD *fmd;
- fmd = FIPS_get_digestbynid(EVP_MD_type(rctx->md));
- if (!fmd || !(fmd->flags & EVP_MD_FLAG_FIPS))
+ if (*pmd != NULL) {
+ *pmd = FIPS_get_digestbynid(EVP_MD_type(*pmd));
+ if (*pmd == NULL || !((*pmd)->flags & EVP_MD_FLAG_FIPS))
return rv;
}
- if (rctx->mgf1md && !(rctx->mgf1md->flags & EVP_MD_FLAG_FIPS)) {
- const EVP_MD *fmd;
- fmd = FIPS_get_digestbynid(EVP_MD_type(rctx->mgf1md));
- if (!fmd || !(fmd->flags & EVP_MD_FLAG_FIPS))
+ if (*pmgf1md != NULL) {
+ *pmgf1md = FIPS_get_digestbynid(EVP_MD_type(*pmgf1md));
+ if (*pmgf1md == NULL || !((*pmgf1md)->flags & EVP_MD_FLAG_FIPS))
return rv;
}
return 1;
@@ -214,27 +212,27 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
int ret;
RSA_PKEY_CTX *rctx = ctx->data;
RSA *rsa = ctx->pkey->pkey.rsa;
+ const EVP_MD *md = rctx->md;
+ const EVP_MD *mgf1md = rctx->mgf1md;
#ifdef OPENSSL_FIPS
- ret = pkey_fips_check_ctx(ctx);
+ ret = pkey_fips_check_rsa(rsa, &md, &mgf1md);
if (ret < 0) {
RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
return -1;
}
#endif
- if (rctx->md) {
- if (tbslen != (size_t)EVP_MD_size(rctx->md)) {
+ if (md != NULL) {
+ if (tbslen != (size_t)EVP_MD_size(md)) {
RSAerr(RSA_F_PKEY_RSA_SIGN, RSA_R_INVALID_DIGEST_LENGTH);
return -1;
}
#ifdef OPENSSL_FIPS
if (ret > 0) {
unsigned int slen;
- ret = FIPS_rsa_sign_digest(rsa, tbs, tbslen, rctx->md,
- rctx->pad_mode,
- rctx->saltlen,
- rctx->mgf1md, sig, &slen);
+ ret = FIPS_rsa_sign_digest(rsa, tbs, tbslen, md, rctx->pad_mode,
+ rctx->saltlen, mgf1md, sig, &slen);
if (ret > 0)
*siglen = slen;
else
@@ -243,12 +241,12 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
}
#endif
- if (EVP_MD_type(rctx->md) == NID_mdc2) {
+ if (EVP_MD_type(md) == NID_mdc2) {
unsigned int sltmp;
if (rctx->pad_mode != RSA_PKCS1_PADDING)
return -1;
- ret = RSA_sign_ASN1_OCTET_STRING(NID_mdc2,
- tbs, tbslen, sig, &sltmp, rsa);
+ ret = RSA_sign_ASN1_OCTET_STRING(NID_mdc2, tbs, tbslen, sig, &sltmp,
+ rsa);
if (ret <= 0)
return ret;
@@ -263,23 +261,20 @@ static int pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig,
return -1;
}
memcpy(rctx->tbuf, tbs, tbslen);
- rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(rctx->md));
+ rctx->tbuf[tbslen] = RSA_X931_hash_id(EVP_MD_type(md));
ret = RSA_private_encrypt(tbslen + 1, rctx->tbuf,
sig, rsa, RSA_X931_PADDING);
} else if (rctx->pad_mode == RSA_PKCS1_PADDING) {
unsigned int sltmp;
- ret = RSA_sign(EVP_MD_type(rctx->md),
- tbs, tbslen, sig, &sltmp, rsa);
+ ret = RSA_sign(EVP_MD_type(md), tbs, tbslen, sig, &sltmp, rsa);
if (ret <= 0)
return ret;
ret = sltmp;
} else if (rctx->pad_mode == RSA_PKCS1_PSS_PADDING) {
if (!setup_tbuf(rctx, ctx))
return -1;
- if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa,
- rctx->tbuf, tbs,
- rctx->md, rctx->mgf1md,
- rctx->saltlen))
+ if (!RSA_padding_add_PKCS1_PSS_mgf1(rsa, rctx->tbuf, tbs,
+ md, mgf1md, rctx->saltlen))
return -1;
ret = RSA_private_encrypt(RSA_size(rsa), rctx->tbuf,
sig, rsa, RSA_NO_PADDING);
@@ -348,32 +343,31 @@ static int pkey_rsa_verify(EVP_PKEY_CTX *ctx,
{
RSA_PKEY_CTX *rctx = ctx->data;
RSA *rsa = ctx->pkey->pkey.rsa;
+ const EVP_MD *md = rctx->md;
+ const EVP_MD *mgf1md = rctx->mgf1md;
size_t rslen;
+
#ifdef OPENSSL_FIPS
- int rv;
- rv = pkey_fips_check_ctx(ctx);
+ int rv = pkey_fips_check_rsa(rsa, &md, &mgf1md);
+
if (rv < 0) {
RSAerr(RSA_F_PKEY_RSA_VERIFY,
RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
return -1;
}
#endif
- if (rctx->md) {
+ if (md != NULL) {
#ifdef OPENSSL_FIPS
if (rv > 0) {
- return FIPS_rsa_verify_digest(rsa,
- tbs, tbslen,
- rctx->md,
- rctx->pad_mode,
- rctx->saltlen,
- rctx->mgf1md, sig, siglen);
+ return FIPS_rsa_verify_digest(rsa, tbs, tbslen, md, rctx->pad_mode,
+ rctx->saltlen, mgf1md, sig, siglen);
}
#endif
if (rctx->pad_mode == RSA_PKCS1_PADDING)
- return RSA_verify(EVP_MD_type(rctx->md), tbs, tbslen,
+ return RSA_verify(EVP_MD_type(md), tbs, tbslen,
sig, siglen, rsa);
- if (tbslen != (size_t)EVP_MD_size(rctx->md)) {
+ if (tbslen != (size_t)EVP_MD_size(md)) {
RSAerr(RSA_F_PKEY_RSA_VERIFY, RSA_R_INVALID_DIGEST_LENGTH);
return -1;
}
@@ -388,8 +382,7 @@ static int pkey_rsa_verify(EVP_PKEY_CTX *ctx,
rsa, RSA_NO_PADDING);
if (ret <= 0)
return 0;
- ret = RSA_verify_PKCS1_PSS_mgf1(rsa, tbs,
- rctx->md, rctx->mgf1md,
+ ret = RSA_verify_PKCS1_PSS_mgf1(rsa, tbs, md, mgf1md,
rctx->tbuf, rctx->saltlen);
if (ret <= 0)
return 0;
diff --git a/thirdparty/openssl/crypto/ui/ui_lib.c b/thirdparty/openssl/crypto/ui/ui_lib.c
index 643ae59343..03ef981cf9 100644
--- a/thirdparty/openssl/crypto/ui/ui_lib.c
+++ b/thirdparty/openssl/crypto/ui/ui_lib.c
@@ -520,6 +520,7 @@ int UI_process(UI *ui)
}
}
}
+
err:
if (ui->meth->ui_close_session != NULL
&& ui->meth->ui_close_session(ui) <= 0)
diff --git a/thirdparty/openssl/crypto/whrlpool/wp_dgst.c b/thirdparty/openssl/crypto/whrlpool/wp_dgst.c
index 807d1c49b2..96d042f585 100644
--- a/thirdparty/openssl/crypto/whrlpool/wp_dgst.c
+++ b/thirdparty/openssl/crypto/whrlpool/wp_dgst.c
@@ -166,7 +166,7 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *_inp, size_t bits)
goto reconsider;
} else
#endif
- if (bits >= 8) {
+ if (bits > 8) {
b = ((inp[0] << inpgap) | (inp[1] >> (8 - inpgap)));
b &= 0xff;
if (bitrem)
@@ -183,7 +183,7 @@ void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *_inp, size_t bits)
}
if (bitrem)
c->data[byteoff] = b << (8 - bitrem);
- } else { /* remaining less than 8 bits */
+ } else { /* remaining less than or equal to 8 bits */
b = (inp[0] << inpgap) & 0xff;
if (bitrem)
diff --git a/thirdparty/openssl/crypto/x509/by_dir.c b/thirdparty/openssl/crypto/x509/by_dir.c
index bbc3189381..6f0209a275 100644
--- a/thirdparty/openssl/crypto/x509/by_dir.c
+++ b/thirdparty/openssl/crypto/x509/by_dir.c
@@ -402,6 +402,7 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
if (!hent) {
hent = OPENSSL_malloc(sizeof(BY_DIR_HASH));
if (hent == NULL) {
+ CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
X509err(X509_F_GET_CERT_BY_SUBJECT, ERR_R_MALLOC_FAILURE);
goto finish;
}
diff --git a/thirdparty/openssl/crypto/x509/by_file.c b/thirdparty/openssl/crypto/x509/by_file.c
index 43a073003d..82ce4e8d87 100644
--- a/thirdparty/openssl/crypto/x509/by_file.c
+++ b/thirdparty/openssl/crypto/x509/by_file.c
@@ -92,12 +92,12 @@ static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp,
long argl, char **ret)
{
int ok = 0;
- char *file;
+ const char *file;
switch (cmd) {
case X509_L_FILE_LOAD:
if (argl == X509_FILETYPE_DEFAULT) {
- file = (char *)getenv(X509_get_default_cert_file_env());
+ file = getenv(X509_get_default_cert_file_env());
if (file)
ok = (X509_load_cert_crl_file(ctx, file,
X509_FILETYPE_PEM) != 0);
@@ -140,7 +140,7 @@ int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type)
if (type == X509_FILETYPE_PEM) {
for (;;) {
- x = PEM_read_bio_X509_AUX(in, NULL, NULL, NULL);
+ x = PEM_read_bio_X509_AUX(in, NULL, NULL, "");
if (x == NULL) {
if ((ERR_GET_REASON(ERR_peek_last_error()) ==
PEM_R_NO_START_LINE) && (count > 0)) {
@@ -199,7 +199,7 @@ int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type)
if (type == X509_FILETYPE_PEM) {
for (;;) {
- x = PEM_read_bio_X509_CRL(in, NULL, NULL, NULL);
+ x = PEM_read_bio_X509_CRL(in, NULL, NULL, "");
if (x == NULL) {
if ((ERR_GET_REASON(ERR_peek_last_error()) ==
PEM_R_NO_START_LINE) && (count > 0)) {
@@ -253,7 +253,7 @@ int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type)
X509err(X509_F_X509_LOAD_CERT_CRL_FILE, ERR_R_SYS_LIB);
return 0;
}
- inf = PEM_X509_INFO_read_bio(in, NULL, NULL, NULL);
+ inf = PEM_X509_INFO_read_bio(in, NULL, NULL, "");
BIO_free(in);
if (!inf) {
X509err(X509_F_X509_LOAD_CERT_CRL_FILE, ERR_R_PEM_LIB);
diff --git a/thirdparty/openssl/crypto/x509v3/pcy_tree.c b/thirdparty/openssl/crypto/x509v3/pcy_tree.c
index 09b8691c86..03c9533bcc 100644
--- a/thirdparty/openssl/crypto/x509v3/pcy_tree.c
+++ b/thirdparty/openssl/crypto/x509v3/pcy_tree.c
@@ -732,6 +732,7 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy,
STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags)
{
int ret;
+ int calc_ret;
X509_POLICY_TREE *tree = NULL;
STACK_OF(X509_POLICY_NODE) *nodes, *auth_nodes = NULL;
*ptree = NULL;
@@ -800,17 +801,20 @@ int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy,
/* Tree is not empty: continue */
- ret = tree_calculate_authority_set(tree, &auth_nodes);
+ calc_ret = tree_calculate_authority_set(tree, &auth_nodes);
- if (!ret)
+ if (!calc_ret)
goto error;
- if (!tree_calculate_user_set(tree, policy_oids, auth_nodes))
- goto error;
+ ret = tree_calculate_user_set(tree, policy_oids, auth_nodes);
- if (ret == 2)
+ if (calc_ret == 2)
sk_X509_POLICY_NODE_free(auth_nodes);
+ if (!ret)
+ goto error;
+
+
if (tree)
*ptree = tree;
diff --git a/thirdparty/openssl/crypto/x509v3/v3_addr.c b/thirdparty/openssl/crypto/x509v3/v3_addr.c
index 1290dec9bb..af080a04f2 100644
--- a/thirdparty/openssl/crypto/x509v3/v3_addr.c
+++ b/thirdparty/openssl/crypto/x509v3/v3_addr.c
@@ -130,10 +130,12 @@ static int length_from_afi(const unsigned afi)
*/
unsigned int v3_addr_get_afi(const IPAddressFamily *f)
{
- return ((f != NULL &&
- f->addressFamily != NULL && f->addressFamily->data != NULL)
- ? ((f->addressFamily->data[0] << 8) | (f->addressFamily->data[1]))
- : 0);
+ if (f == NULL
+ || f->addressFamily == NULL
+ || f->addressFamily->data == NULL
+ || f->addressFamily->length < 2)
+ return 0;
+ return (f->addressFamily->data[0] << 8) | f->addressFamily->data[1];
}
/*
diff --git a/thirdparty/openssl/crypto/x509v3/v3_genn.c b/thirdparty/openssl/crypto/x509v3/v3_genn.c
index 7f40bfabe0..9bb01ee38e 100644
--- a/thirdparty/openssl/crypto/x509v3/v3_genn.c
+++ b/thirdparty/openssl/crypto/x509v3/v3_genn.c
@@ -231,6 +231,7 @@ int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
oth = OTHERNAME_new();
if (!oth)
return 0;
+ ASN1_TYPE_free(oth->value);
oth->type_id = oid;
oth->value = value;
GENERAL_NAME_set0_value(gen, GEN_OTHERNAME, oth);
diff --git a/thirdparty/openssl/crypto/x509v3/v3_lib.c b/thirdparty/openssl/crypto/x509v3/v3_lib.c
index 8350429aaf..1112802483 100644
--- a/thirdparty/openssl/crypto/x509v3/v3_lib.c
+++ b/thirdparty/openssl/crypto/x509v3/v3_lib.c
@@ -286,9 +286,9 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
int crit, unsigned long flags)
{
- int extidx = -1;
- int errcode;
- X509_EXTENSION *ext, *extmp;
+ int errcode, extidx = -1;
+ X509_EXTENSION *ext = NULL, *extmp;
+ STACK_OF(X509_EXTENSION) *ret = NULL;
unsigned long ext_op = flags & X509V3_ADD_OP_MASK;
/*
@@ -347,13 +347,21 @@ int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
return 1;
}
- if (!*x && !(*x = sk_X509_EXTENSION_new_null()))
- return -1;
- if (!sk_X509_EXTENSION_push(*x, ext))
- return -1;
+ if ((ret = *x) == NULL
+ && (ret = sk_X509_EXTENSION_new_null()) == NULL)
+ goto m_fail;
+ if (!sk_X509_EXTENSION_push(ret, ext))
+ goto m_fail;
+ *x = ret;
return 1;
+ m_fail:
+ if (ret != *x)
+ sk_X509_EXTENSION_free(ret);
+ X509_EXTENSION_free(ext);
+ return -1;
+
err:
if (!(flags & X509V3_ADD_SILENT))
X509V3err(X509V3_F_X509V3_ADD1_I2D, errcode);
diff --git a/thirdparty/openssl/crypto/x509v3/v3_ncons.c b/thirdparty/openssl/crypto/x509v3/v3_ncons.c
index 2855269668..1184091ccf 100644
--- a/thirdparty/openssl/crypto/x509v3/v3_ncons.c
+++ b/thirdparty/openssl/crypto/x509v3/v3_ncons.c
@@ -107,6 +107,47 @@ ASN1_SEQUENCE(NAME_CONSTRAINTS) = {
IMPLEMENT_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)
IMPLEMENT_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
+/*
+ * We cannot use strncasecmp here because that applies locale specific rules.
+ * For example in Turkish 'I' is not the uppercase character for 'i'. We need to
+ * do a simple ASCII case comparison ignoring the locale (that is why we use
+ * numeric constants below).
+ */
+static int ia5ncasecmp(const char *s1, const char *s2, size_t n)
+{
+ for (; n > 0; n--, s1++, s2++) {
+ if (*s1 != *s2) {
+ unsigned char c1 = (unsigned char)*s1, c2 = (unsigned char)*s2;
+
+ /* Convert to lower case */
+ if (c1 >= 0x41 /* A */ && c1 <= 0x5A /* Z */)
+ c1 += 0x20;
+ if (c2 >= 0x41 /* A */ && c2 <= 0x5A /* Z */)
+ c2 += 0x20;
+
+ if (c1 == c2)
+ continue;
+
+ if (c1 < c2)
+ return -1;
+
+ /* c1 > c2 */
+ return 1;
+ } else if (*s1 == 0) {
+ /* If we get here we know that *s2 == 0 too */
+ return 0;
+ }
+ }
+
+ return 0;
+}
+
+static int ia5casecmp(const char *s1, const char *s2)
+{
+ /* No portable definition of SIZE_MAX, so we use (size_t)(-1) instead */
+ return ia5ncasecmp(s1, s2, (size_t)(-1));
+}
+
static void *v2i_NAME_CONSTRAINTS(const X509V3_EXT_METHOD *method,
X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
{
@@ -384,7 +425,7 @@ static int nc_dns(ASN1_IA5STRING *dns, ASN1_IA5STRING *base)
return X509_V_ERR_PERMITTED_VIOLATION;
}
- if (strcasecmp(baseptr, dnsptr))
+ if (ia5casecmp(baseptr, dnsptr))
return X509_V_ERR_PERMITTED_VIOLATION;
return X509_V_OK;
@@ -404,7 +445,7 @@ static int nc_email(ASN1_IA5STRING *eml, ASN1_IA5STRING *base)
if (!baseat && (*baseptr == '.')) {
if (eml->length > base->length) {
emlptr += eml->length - base->length;
- if (!strcasecmp(baseptr, emlptr))
+ if (ia5casecmp(baseptr, emlptr) == 0)
return X509_V_OK;
}
return X509_V_ERR_PERMITTED_VIOLATION;
@@ -425,7 +466,7 @@ static int nc_email(ASN1_IA5STRING *eml, ASN1_IA5STRING *base)
}
emlptr = emlat + 1;
/* Just have hostname left to match: case insensitive */
- if (strcasecmp(baseptr, emlptr))
+ if (ia5casecmp(baseptr, emlptr))
return X509_V_ERR_PERMITTED_VIOLATION;
return X509_V_OK;
@@ -464,14 +505,14 @@ static int nc_uri(ASN1_IA5STRING *uri, ASN1_IA5STRING *base)
if (*baseptr == '.') {
if (hostlen > base->length) {
p = hostptr + hostlen - base->length;
- if (!strncasecmp(p, baseptr, base->length))
+ if (ia5ncasecmp(p, baseptr, base->length) == 0)
return X509_V_OK;
}
return X509_V_ERR_PERMITTED_VIOLATION;
}
if ((base->length != (int)hostlen)
- || strncasecmp(hostptr, baseptr, hostlen))
+ || ia5ncasecmp(hostptr, baseptr, hostlen))
return X509_V_ERR_PERMITTED_VIOLATION;
return X509_V_OK;
diff --git a/thirdparty/openssl/crypto/x509v3/v3_scts.c b/thirdparty/openssl/crypto/x509v3/v3_scts.c
index 0b7c68180e..87a6ae1da9 100644
--- a/thirdparty/openssl/crypto/x509v3/v3_scts.c
+++ b/thirdparty/openssl/crypto/x509v3/v3_scts.c
@@ -156,7 +156,7 @@ static void timestamp_print(BIO *out, SCT_TIMESTAMP timestamp)
gen = ASN1_GENERALIZEDTIME_new();
ASN1_GENERALIZEDTIME_adj(gen, (time_t)0,
(int)(timestamp / 86400000),
- (timestamp % 86400000) / 1000);
+ (int)(timestamp % 86400000) / 1000);
/*
* Note GeneralizedTime from ASN1_GENERALIZETIME_adj is always 15
* characters long with a final Z. Update it with fractional seconds.
diff --git a/thirdparty/openssl/openssl/dh.h b/thirdparty/openssl/openssl/dh.h
index a228c7a7a4..80b28fb39d 100644
--- a/thirdparty/openssl/openssl/dh.h
+++ b/thirdparty/openssl/openssl/dh.h
@@ -257,11 +257,13 @@ DH *DH_get_1024_160(void);
DH *DH_get_2048_224(void);
DH *DH_get_2048_256(void);
+# ifndef OPENSSL_NO_CMS
/* RFC2631 KDF */
int DH_KDF_X9_42(unsigned char *out, size_t outlen,
const unsigned char *Z, size_t Zlen,
ASN1_OBJECT *key_oid,
const unsigned char *ukm, size_t ukmlen, const EVP_MD *md);
+# endif
# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \
EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \
diff --git a/thirdparty/openssl/openssl/evp.h b/thirdparty/openssl/openssl/evp.h
index d258ef870a..cf1de15e6d 100644
--- a/thirdparty/openssl/openssl/evp.h
+++ b/thirdparty/openssl/openssl/evp.h
@@ -1363,6 +1363,98 @@ void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
const char *type,
const char *value));
+void EVP_PKEY_meth_get_init(EVP_PKEY_METHOD *pmeth,
+ int (**pinit) (EVP_PKEY_CTX *ctx));
+
+void EVP_PKEY_meth_get_copy(EVP_PKEY_METHOD *pmeth,
+ int (**pcopy) (EVP_PKEY_CTX *dst,
+ EVP_PKEY_CTX *src));
+
+void EVP_PKEY_meth_get_cleanup(EVP_PKEY_METHOD *pmeth,
+ void (**pcleanup) (EVP_PKEY_CTX *ctx));
+
+void EVP_PKEY_meth_get_paramgen(EVP_PKEY_METHOD *pmeth,
+ int (**pparamgen_init) (EVP_PKEY_CTX *ctx),
+ int (**pparamgen) (EVP_PKEY_CTX *ctx,
+ EVP_PKEY *pkey));
+
+void EVP_PKEY_meth_get_keygen(EVP_PKEY_METHOD *pmeth,
+ int (**pkeygen_init) (EVP_PKEY_CTX *ctx),
+ int (**pkeygen) (EVP_PKEY_CTX *ctx,
+ EVP_PKEY *pkey));
+
+void EVP_PKEY_meth_get_sign(EVP_PKEY_METHOD *pmeth,
+ int (**psign_init) (EVP_PKEY_CTX *ctx),
+ int (**psign) (EVP_PKEY_CTX *ctx,
+ unsigned char *sig, size_t *siglen,
+ const unsigned char *tbs,
+ size_t tbslen));
+
+void EVP_PKEY_meth_get_verify(EVP_PKEY_METHOD *pmeth,
+ int (**pverify_init) (EVP_PKEY_CTX *ctx),
+ int (**pverify) (EVP_PKEY_CTX *ctx,
+ const unsigned char *sig,
+ size_t siglen,
+ const unsigned char *tbs,
+ size_t tbslen));
+
+void EVP_PKEY_meth_get_verify_recover(EVP_PKEY_METHOD *pmeth,
+ int (**pverify_recover_init) (EVP_PKEY_CTX
+ *ctx),
+ int (**pverify_recover) (EVP_PKEY_CTX
+ *ctx,
+ unsigned char
+ *sig,
+ size_t *siglen,
+ const unsigned
+ char *tbs,
+ size_t tbslen));
+
+void EVP_PKEY_meth_get_signctx(EVP_PKEY_METHOD *pmeth,
+ int (**psignctx_init) (EVP_PKEY_CTX *ctx,
+ EVP_MD_CTX *mctx),
+ int (**psignctx) (EVP_PKEY_CTX *ctx,
+ unsigned char *sig,
+ size_t *siglen,
+ EVP_MD_CTX *mctx));
+
+void EVP_PKEY_meth_get_verifyctx(EVP_PKEY_METHOD *pmeth,
+ int (**pverifyctx_init) (EVP_PKEY_CTX *ctx,
+ EVP_MD_CTX *mctx),
+ int (**pverifyctx) (EVP_PKEY_CTX *ctx,
+ const unsigned char *sig,
+ int siglen,
+ EVP_MD_CTX *mctx));
+
+void EVP_PKEY_meth_get_encrypt(EVP_PKEY_METHOD *pmeth,
+ int (**pencrypt_init) (EVP_PKEY_CTX *ctx),
+ int (**pencryptfn) (EVP_PKEY_CTX *ctx,
+ unsigned char *out,
+ size_t *outlen,
+ const unsigned char *in,
+ size_t inlen));
+
+void EVP_PKEY_meth_get_decrypt(EVP_PKEY_METHOD *pmeth,
+ int (**pdecrypt_init) (EVP_PKEY_CTX *ctx),
+ int (**pdecrypt) (EVP_PKEY_CTX *ctx,
+ unsigned char *out,
+ size_t *outlen,
+ const unsigned char *in,
+ size_t inlen));
+
+void EVP_PKEY_meth_get_derive(EVP_PKEY_METHOD *pmeth,
+ int (**pderive_init) (EVP_PKEY_CTX *ctx),
+ int (**pderive) (EVP_PKEY_CTX *ctx,
+ unsigned char *key,
+ size_t *keylen));
+
+void EVP_PKEY_meth_get_ctrl(EVP_PKEY_METHOD *pmeth,
+ int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1,
+ void *p2),
+ int (**pctrl_str) (EVP_PKEY_CTX *ctx,
+ const char *type,
+ const char *value));
+
void EVP_add_alg_module(void);
/* BEGIN ERROR CODES */
diff --git a/thirdparty/openssl/openssl/opensslv.h b/thirdparty/openssl/openssl/opensslv.h
index 825a330abc..baee2d0865 100644
--- a/thirdparty/openssl/openssl/opensslv.h
+++ b/thirdparty/openssl/openssl/opensslv.h
@@ -30,11 +30,11 @@ extern "C" {
* (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
* major minor fix final patch/beta)
*/
-# define OPENSSL_VERSION_NUMBER 0x100020cfL
+# define OPENSSL_VERSION_NUMBER 0x100020efL
# ifdef OPENSSL_FIPS
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2l-fips 25 May 2017"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2n-fips 7 Dec 2017"
# else
-# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2l 25 May 2017"
+# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2n 7 Dec 2017"
# endif
# define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
diff --git a/thirdparty/openssl/openssl/ssl.h b/thirdparty/openssl/openssl/ssl.h
index 90aeb0ce4e..3cf96a239b 100644
--- a/thirdparty/openssl/openssl/ssl.h
+++ b/thirdparty/openssl/openssl/ssl.h
@@ -1727,7 +1727,7 @@ extern "C" {
# define SSL_ST_BEFORE 0x4000
# define SSL_ST_OK 0x03
# define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)
-# define SSL_ST_ERR 0x05
+# define SSL_ST_ERR (0x05|SSL_ST_INIT)
# define SSL_CB_LOOP 0x01
# define SSL_CB_EXIT 0x02
diff --git a/thirdparty/openssl/openssl/symhacks.h b/thirdparty/openssl/openssl/symhacks.h
index 239fa4fb1b..3001957988 100644
--- a/thirdparty/openssl/openssl/symhacks.h
+++ b/thirdparty/openssl/openssl/symhacks.h
@@ -280,6 +280,8 @@
# define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf
# undef EVP_PKEY_meth_set_verify_recover
# define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover
+# undef EVP_PKEY_meth_get_verify_recover
+# define EVP_PKEY_meth_get_verify_recover EVP_PKEY_meth_get_vrfy_recover
/* Hack some long EC names */
# undef EC_GROUP_set_point_conversion_form
diff --git a/thirdparty/openssl/openssl/tls1.h b/thirdparty/openssl/openssl/tls1.h
index 7e237d0631..dd1d8c109e 100644
--- a/thirdparty/openssl/openssl/tls1.h
+++ b/thirdparty/openssl/openssl/tls1.h
@@ -317,7 +317,7 @@ int SSL_get_servername_type(const SSL *s);
*/
int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen,
const char *label, size_t llen,
- const unsigned char *p, size_t plen,
+ const unsigned char *context, size_t contextlen,
int use_context);
int SSL_get_sigalgs(SSL *s, int idx,
diff --git a/thirdparty/openssl/patches/uwp_fix.patch b/thirdparty/openssl/patches/uwp_fix.patch
index 54aeb1f80d..89f6790c85 100644
--- a/thirdparty/openssl/patches/uwp_fix.patch
+++ b/thirdparty/openssl/patches/uwp_fix.patch
@@ -1,5 +1,5 @@
diff --git a/thirdparty/openssl/crypto/rand/rand_win.c b/thirdparty/openssl/crypto/rand/rand_win.c
-index 06670ae01..cb4093128 100644
+index b4be3097e..bc2a7d201 100644
--- a/thirdparty/openssl/crypto/rand/rand_win.c
+++ b/thirdparty/openssl/crypto/rand/rand_win.c
@@ -118,8 +118,10 @@
@@ -22,15 +22,15 @@ index 06670ae01..cb4093128 100644
typedef BOOL(WINAPI *CRYPTACQUIRECONTEXTW) (HCRYPTPROV *, LPCWSTR, LPCWSTR,
DWORD, DWORD);
typedef BOOL(WINAPI *CRYPTGENRANDOM) (HCRYPTPROV, DWORD, BYTE *);
-@@ -196,6 +198,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE);
- # endif /* 1 */
- # endif /* !OPENSSL_SYS_WINCE */
+@@ -198,6 +200,7 @@ typedef NET_API_STATUS(NET_API_FUNCTION *NETFREE) (LPBYTE);
+
+ #define NOTTOOLONG(start) ((GetTickCount() - (start)) < MAXDELAY)
+#if !defined(UWP_ENABLED) // -- GODOT --
int RAND_poll(void)
{
MEMORYSTATUS m;
-@@ -580,6 +583,8 @@ int RAND_poll(void)
+@@ -576,6 +579,8 @@ int RAND_poll(void)
return (1);
}
@@ -39,7 +39,7 @@ index 06670ae01..cb4093128 100644
int RAND_event(UINT iMsg, WPARAM wParam, LPARAM lParam)
{
double add_entropy = 0;
-@@ -682,7 +687,7 @@ static void readtimer(void)
+@@ -678,7 +683,7 @@ static void readtimer(void)
static void readscreen(void)
{
diff --git a/thirdparty/openssl/ssl/s23_clnt.c b/thirdparty/openssl/ssl/s23_clnt.c
index b80d1fd8ce..add8c9916c 100644
--- a/thirdparty/openssl/ssl/s23_clnt.c
+++ b/thirdparty/openssl/ssl/s23_clnt.c
@@ -735,7 +735,37 @@ static int ssl23_get_server_hello(SSL *s)
s->version = TLS1_2_VERSION;
s->method = TLSv1_2_client_method();
} else {
+ /*
+ * Unrecognised version, we'll send a protocol version alert using
+ * our preferred version.
+ */
+ switch(s->client_version) {
+ default:
+ /*
+ * Shouldn't happen
+ * Fall through
+ */
+ case TLS1_2_VERSION:
+ s->version = TLS1_2_VERSION;
+ s->method = TLSv1_2_client_method();
+ break;
+ case TLS1_1_VERSION:
+ s->version = TLS1_1_VERSION;
+ s->method = TLSv1_1_client_method();
+ break;
+ case TLS1_VERSION:
+ s->version = TLS1_VERSION;
+ s->method = TLSv1_client_method();
+ break;
+#ifndef OPENSSL_NO_SSL3
+ case SSL3_VERSION:
+ s->version = SSL3_VERSION;
+ s->method = SSLv3_client_method();
+ break;
+#endif
+ }
SSLerr(SSL_F_SSL23_GET_SERVER_HELLO, SSL_R_UNSUPPORTED_PROTOCOL);
+ ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_PROTOCOL_VERSION);
goto err;
}
diff --git a/thirdparty/openssl/ssl/s3_pkt.c b/thirdparty/openssl/ssl/s3_pkt.c
index 0290c991d8..b914568430 100644
--- a/thirdparty/openssl/ssl/s3_pkt.c
+++ b/thirdparty/openssl/ssl/s3_pkt.c
@@ -1324,10 +1324,16 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
}
#ifndef OPENSSL_NO_HEARTBEATS
else if (rr->type == TLS1_RT_HEARTBEAT) {
- tls1_process_heartbeat(s);
+ i = tls1_process_heartbeat(s);
+
+ if (i < 0)
+ return i;
- /* Exit and notify application to read again */
rr->length = 0;
+ if (s->mode & SSL_MODE_AUTO_RETRY)
+ goto start;
+
+ /* Exit and notify application to read again */
s->rwstate = SSL_READING;
BIO_clear_retry_flags(SSL_get_rbio(s));
BIO_set_retry_read(SSL_get_rbio(s));
@@ -1427,7 +1433,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
(s->s3->handshake_fragment_len >= 4) &&
(s->s3->handshake_fragment[0] == SSL3_MT_CLIENT_HELLO) &&
(s->session != NULL) && (s->session->cipher != NULL) &&
- !(s->ctx->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)) {
+ !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION)) {
/*
* s->s3->handshake_fragment_len = 0;
*/
diff --git a/thirdparty/openssl/ssl/s3_srvr.c b/thirdparty/openssl/ssl/s3_srvr.c
index ba17f1b562..0fb4845d44 100644
--- a/thirdparty/openssl/ssl/s3_srvr.c
+++ b/thirdparty/openssl/ssl/s3_srvr.c
@@ -2202,7 +2202,7 @@ int ssl3_get_client_key_exchange(SSL *s)
unsigned char rand_premaster_secret[SSL_MAX_MASTER_KEY_LENGTH];
int decrypt_len;
unsigned char decrypt_good, version_good;
- size_t j;
+ size_t j, padding_len;
/* FIX THIS UP EAY EAY EAY EAY */
if (s->s3->tmp.use_rsa_tmp) {
@@ -2270,16 +2270,38 @@ int ssl3_get_client_key_exchange(SSL *s)
if (RAND_bytes(rand_premaster_secret,
sizeof(rand_premaster_secret)) <= 0)
goto err;
+
+ /*
+ * Decrypt with no padding. PKCS#1 padding will be removed as part of
+ * the timing-sensitive code below.
+ */
decrypt_len =
- RSA_private_decrypt((int)n, p, p, rsa, RSA_PKCS1_PADDING);
- ERR_clear_error();
+ RSA_private_decrypt((int)n, p, p, rsa, RSA_NO_PADDING);
+ if (decrypt_len < 0)
+ goto err;
+
+ /* Check the padding. See RFC 3447, section 7.2.2. */
/*
- * decrypt_len should be SSL_MAX_MASTER_KEY_LENGTH. decrypt_good will
- * be 0xff if so and zero otherwise.
+ * The smallest padded premaster is 11 bytes of overhead. Small keys
+ * are publicly invalid, so this may return immediately. This ensures
+ * PS is at least 8 bytes.
*/
- decrypt_good =
- constant_time_eq_int_8(decrypt_len, SSL_MAX_MASTER_KEY_LENGTH);
+ if (decrypt_len < 11 + SSL_MAX_MASTER_KEY_LENGTH) {
+ al = SSL_AD_DECRYPT_ERROR;
+ SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
+ SSL_R_DECRYPTION_FAILED);
+ goto f_err;
+ }
+
+ padding_len = decrypt_len - SSL_MAX_MASTER_KEY_LENGTH;
+ decrypt_good = constant_time_eq_int_8(p[0], 0) &
+ constant_time_eq_int_8(p[1], 2);
+ for (j = 2; j < padding_len - 1; j++) {
+ decrypt_good &= ~constant_time_is_zero_8(p[j]);
+ }
+ decrypt_good &= constant_time_is_zero_8(p[padding_len - 1]);
+ p += padding_len;
/*
* If the version in the decrypted pre-master secret is correct then
diff --git a/thirdparty/openssl/ssl/ssl_ciph.c b/thirdparty/openssl/ssl/ssl_ciph.c
index 40021329a9..ccdf00fa1b 100644
--- a/thirdparty/openssl/ssl/ssl_ciph.c
+++ b/thirdparty/openssl/ssl/ssl_ciph.c
@@ -1205,7 +1205,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
((ch >= '0') && (ch <= '9')) ||
((ch >= 'a') && (ch <= 'z')) || (ch == '-') || (ch == '.'))
#else
- while (isalnum(ch) || (ch == '-') || (ch == '.'))
+ while (isalnum((unsigned char)ch) || (ch == '-') || (ch == '.'))
#endif
{
ch = *(++l);
diff --git a/thirdparty/openssl/ssl/ssl_lib.c b/thirdparty/openssl/ssl/ssl_lib.c
index 24be376c9f..3539f4b8d2 100644
--- a/thirdparty/openssl/ssl/ssl_lib.c
+++ b/thirdparty/openssl/ssl/ssl_lib.c
@@ -1825,15 +1825,15 @@ void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data,
int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen,
const char *label, size_t llen,
- const unsigned char *p, size_t plen,
+ const unsigned char *context, size_t contextlen,
int use_context)
{
if (s->version < TLS1_VERSION && s->version != DTLS1_BAD_VER)
return -1;
return s->method->ssl3_enc->export_keying_material(s, out, olen, label,
- llen, p, plen,
- use_context);
+ llen, context,
+ contextlen, use_context);
}
static unsigned long ssl_session_hash(const SSL_SESSION *a)
@@ -3180,6 +3180,7 @@ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx)
#endif
ssl->cert = ssl_cert_dup(ctx->cert);
if (ocert) {
+ int i;
/* Preserve any already negotiated parameters */
if (ssl->server) {
ssl->cert->peer_sigalgs = ocert->peer_sigalgs;
@@ -3189,6 +3190,9 @@ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx)
ssl->cert->ciphers_rawlen = ocert->ciphers_rawlen;
ocert->ciphers_raw = NULL;
}
+ for (i = 0; i < SSL_PKEY_NUM; i++) {
+ ssl->cert->pkeys[i].digest = ocert->pkeys[i].digest;
+ }
#ifndef OPENSSL_NO_TLSEXT
ssl->cert->alpn_proposed = ocert->alpn_proposed;
ssl->cert->alpn_proposed_len = ocert->alpn_proposed_len;
diff --git a/thirdparty/openssl/ssl/ssl_sess.c b/thirdparty/openssl/ssl/ssl_sess.c
index f50f514212..23dd3e7a01 100644
--- a/thirdparty/openssl/ssl/ssl_sess.c
+++ b/thirdparty/openssl/ssl/ssl_sess.c
@@ -261,7 +261,6 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
#ifndef OPENSSL_NO_SRP
dest->srp_username = NULL;
#endif
- memset(&dest->ex_data, 0, sizeof(dest->ex_data));
/* We deliberately don't copy the prev and next pointers */
dest->prev = NULL;
@@ -275,6 +274,9 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
if (src->peer != NULL)
CRYPTO_add(&src->peer->references, 1, CRYPTO_LOCK_X509);
+ if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, dest, &dest->ex_data))
+ goto err;
+
#ifndef OPENSSL_NO_PSK
if (src->psk_identity_hint) {
dest->psk_identity_hint = BUF_strdup(src->psk_identity_hint);
@@ -325,7 +327,7 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket)
}
# endif
- if (ticket != 0) {
+ if (ticket != 0 && src->tlsext_tick != NULL) {
dest->tlsext_tick = BUF_memdup(src->tlsext_tick, src->tlsext_ticklen);
if(dest->tlsext_tick == NULL)
goto err;
diff --git a/thirdparty/openssl/ssl/t1_lib.c b/thirdparty/openssl/ssl/t1_lib.c
index 6587e8bb68..1a4387b78e 100644
--- a/thirdparty/openssl/ssl/t1_lib.c
+++ b/thirdparty/openssl/ssl/t1_lib.c
@@ -1916,7 +1916,7 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *buf,
s2n(TLSEXT_TYPE_application_layer_protocol_negotiation, ret);
s2n(3 + len, ret);
s2n(1 + len, ret);
- *ret++ = len;
+ *ret++ = (unsigned char)len;
memcpy(ret, selected, len);
ret += len;
}
diff --git a/thirdparty/thekla_atlas/godot-changes.patch b/thirdparty/thekla_atlas/godot-changes.patch
new file mode 100644
index 0000000000..0e56403336
--- /dev/null
+++ b/thirdparty/thekla_atlas/godot-changes.patch
@@ -0,0 +1,154 @@
+diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
+index 5ce452c..11e635d 100644
+--- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
++++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
+@@ -142,9 +142,11 @@ AtlasPacker::AtlasPacker(Atlas * atlas) : m_atlas(atlas), m_bitmap(256, 256)
+ {
+ m_width = 0;
+ m_height = 0;
+-
+- m_debug_bitmap.allocate(256, 256);
+- m_debug_bitmap.fill(Color32(0,0,0,0));
++
++ // -- GODOT start --
++ //m_debug_bitmap.allocate(256, 256);
++ //m_debug_bitmap.fill(Color32(0,0,0,0));
++ // -- GODOT end --
+ }
+
+ AtlasPacker::~AtlasPacker()
+@@ -465,7 +467,11 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned
+ nvDebug("origin: %f %f\n", origin.x, origin.y);
+ nvDebug("majorAxis: %f %f\n", majorAxis.x, majorAxis.y);
+ nvDebug("minorAxis: %f %f\n", minorAxis.x, minorAxis.y);
+- nvDebugBreak();
++ // -- GODOT start --
++ //nvDebugBreak();
++ m_atlas->setFailed();
++ return;
++ // -- GODOT end --
+ }
+ //nvCheck(tmp.x >= 0 && tmp.y >= 0);
+
+@@ -597,8 +603,10 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned
+ m_bitmap.clearAll();
+ if (approximateExtent > m_bitmap.width()) {
+ m_bitmap.resize(approximateExtent, approximateExtent, false);
+- m_debug_bitmap.resize(approximateExtent, approximateExtent);
+- m_debug_bitmap.fill(Color32(0,0,0,0));
++ // -- GODOT start --
++ //m_debug_bitmap.resize(approximateExtent, approximateExtent);
++ //m_debug_bitmap.fill(Color32(0,0,0,0));
++ // -- GODOT end --
+ }
+
+
+@@ -680,20 +688,24 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned
+ {
+ //nvDebug("Resize bitmap (%d, %d).\n", nextPowerOfTwo(w), nextPowerOfTwo(h));
+ m_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h)), false);
+- m_debug_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h)));
++ // -- GODOT start --
++ //m_debug_bitmap.resize(nextPowerOfTwo(U32(w)), nextPowerOfTwo(U32(h)));
++ // -- GODOT end --
+ }
+
+ //nvDebug("Add chart at (%d, %d).\n", best_x, best_y);
+
+ addChart(&chart_bitmap, w, h, best_x, best_y, best_r, /*debugOutput=*/NULL);
+
++ // -- GODOT start --
+ // IC: Output chart again to debug bitmap.
+- if (chart->isVertexMapped()) {
++ /*if (chart->isVertexMapped()) {
+ addChart(&chart_bitmap, w, h, best_x, best_y, best_r, &m_debug_bitmap);
+ }
+ else {
+ addChart(chart, w, h, best_x, best_y, best_r, &m_debug_bitmap);
+- }
++ }*/
++ // -- GODOT end --
+
+ //float best_angle = 2 * PI * best_r;
+
+@@ -842,8 +854,10 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned
+ nvCheck(isAligned(m_width, 4));
+ nvCheck(isAligned(m_height, 4));
+
+- m_debug_bitmap.resize(m_width, m_height);
+- m_debug_bitmap.setFormat(Image::Format_ARGB);
++ // -- GODOT start --
++ //m_debug_bitmap.resize(m_width, m_height);
++ //m_debug_bitmap.setFormat(Image::Format_ARGB);
++ // -- GODOT end --
+
+ #if DEBUG_OUTPUT
+ //outputDebugBitmap("debug_packer_final.tga", m_bitmap, w, h);
+diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h
+index 2d305f3..845dbfb 100644
+--- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h
++++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.h
+@@ -48,7 +48,9 @@ namespace nv
+
+ Atlas * m_atlas;
+ BitMap m_bitmap;
+- Image m_debug_bitmap;
++ // -- GODOT start --
++ //Image m_debug_bitmap;
++ // -- GODOT end --
+ RadixSort m_radix;
+
+ uint m_width;
+diff --git a/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp b/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp
+index d6f0acc..de1953d 100644
+--- a/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp
++++ b/thirdparty/thekla_atlas/thekla/thekla_atlas.cpp
+@@ -2,6 +2,9 @@
+ #include "thekla_atlas.h"
+
+ #include <cfloat>
++// -- GODOT start --
++#include <stdio.h>
++// -- GODOT end --
+
+ #include "nvmesh/halfedge/Edge.h"
+ #include "nvmesh/halfedge/Mesh.h"
+@@ -112,6 +115,8 @@ static Atlas_Output_Mesh * mesh_atlas_to_output(const HalfEdge::Mesh * mesh, con
+ output->index_count = face_count * 3;
+ output->index_array = new int[face_count * 3];
+
++ // -- GODOT start --
++ int face_ofs = 0;
+ // Set face indices.
+ for (int f = 0; f < face_count; f++) {
+ uint c = charts->faceChartAt(f);
+@@ -121,14 +126,26 @@ static Atlas_Output_Mesh * mesh_atlas_to_output(const HalfEdge::Mesh * mesh, con
+ const Chart * chart = charts->chartAt(c);
+ nvDebugCheck(chart->faceAt(i) == f);
+
++ if (i >= chart->chartMesh()->faceCount()) {
++ printf("WARNING: Faces may be missing in the final vertex, which could not be packed\n");
++ continue;
++ }
++
+ const HalfEdge::Face * face = chart->chartMesh()->faceAt(i);
+ const HalfEdge::Edge * edge = face->edge;
+
+- output->index_array[3*f+0] = vertexOffset + edge->vertex->id;
+- output->index_array[3*f+1] = vertexOffset + edge->next->vertex->id;
+- output->index_array[3*f+2] = vertexOffset + edge->next->next->vertex->id;
++ //output->index_array[3*f+0] = vertexOffset + edge->vertex->id;
++ //output->index_array[3*f+1] = vertexOffset + edge->next->vertex->id;
++ //output->index_array[3*f+2] = vertexOffset + edge->next->next->vertex->id;
++ output->index_array[3 * face_ofs + 0] = vertexOffset + edge->vertex->id;
++ output->index_array[3 * face_ofs + 1] = vertexOffset + edge->next->vertex->id;
++ output->index_array[3 * face_ofs + 2] = vertexOffset + edge->next->next->vertex->id;
++ face_ofs++;
+ }
+
++ output->index_count = face_ofs * 3;
++ // -- GODOT end --
++
+ *error = Atlas_Error_Success;
+ output->atlas_width = w;
+ output->atlas_height = h;
diff --git a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
index fd37b8c59c..11e635db17 100644
--- a/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
+++ b/thirdparty/thekla_atlas/nvmesh/param/AtlasPacker.cpp
@@ -467,7 +467,11 @@ void AtlasPacker::packCharts(int quality, float texelsPerUnit, bool blockAligned
nvDebug("origin: %f %f\n", origin.x, origin.y);
nvDebug("majorAxis: %f %f\n", majorAxis.x, majorAxis.y);
nvDebug("minorAxis: %f %f\n", minorAxis.x, minorAxis.y);
- nvDebugBreak();
+ // -- GODOT start --
+ //nvDebugBreak();
+ m_atlas->setFailed();
+ return;
+ // -- GODOT end --
}
//nvCheck(tmp.x >= 0 && tmp.y >= 0);
diff --git a/thirdparty/tinyexr/tinyexr.h b/thirdparty/tinyexr/tinyexr.h
index 606c19756a..107c22ffb3 100644
--- a/thirdparty/tinyexr/tinyexr.h
+++ b/thirdparty/tinyexr/tinyexr.h
@@ -410,8 +410,8 @@ extern int LoadDeepEXR(DeepImage *out_image, const char *filename,
// Returns negative value and may set error string in `err` when there's an
// error
extern int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
- const unsigned char *memory, size_t size,
- const char **err);
+ const unsigned char *memory, size_t size,
+ const char **err);
#ifdef __cplusplus
}
@@ -444,7 +444,8 @@ extern int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
#if TINYEXR_USE_MINIZ
#else
-// Issue #46. Please include your own zlib-compatible API header before including `tinyexr.h`
+// Issue #46. Please include your own zlib-compatible API header before
+// including `tinyexr.h`
//#include "zlib.h"
#endif
@@ -488,6 +489,12 @@ namespace miniz {
#if __has_warning("-Wcomma")
#pragma clang diagnostic ignored "-Wcomma"
#endif
+#if __has_warning("-Wmacro-redefined")
+#pragma clang diagnostic ignored "-Wmacro-redefined"
+#endif
+#if __has_warning("-Wcast-qual")
+#pragma clang diagnostic ignored "-Wcast-qual"
+#endif
#endif
/* miniz.c v1.15 - public domain deflate/inflate, zlib-subset, ZIP
@@ -6887,8 +6894,6 @@ void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename,
#ifdef _MSC_VER
#pragma warning(pop)
#endif
-
-
}
#else
@@ -7079,11 +7084,18 @@ static FP16 float_to_half_full(FP32 f) {
// #define IMF_B44_COMPRESSION 6
// #define IMF_B44A_COMPRESSION 7
-static const char *ReadString(std::string *s, const char *ptr) {
+static const char *ReadString(std::string *s, const char *ptr, size_t len) {
// Read untile NULL(\0).
const char *p = ptr;
const char *q = ptr;
- while ((*q) != 0) q++;
+ while ((size_t(q - ptr) < len) && (*q) != 0) {
+ q++;
+ }
+
+ if (size_t(q - ptr) >= len) {
+ (*s) = std::string();
+ return NULL;
+ }
(*s) = std::string(p, q);
@@ -7120,6 +7132,10 @@ static bool ReadAttribute(std::string *name, std::string *type,
memcpy(&data_len, marker, sizeof(uint32_t));
tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len));
+ if (data_len == 0) {
+ return false;
+ }
+
marker += sizeof(uint32_t);
size -= sizeof(uint32_t);
@@ -7210,7 +7226,7 @@ typedef struct {
}
} HeaderInfo;
-static void ReadChannelInfo(std::vector<ChannelInfo> &channels,
+static bool ReadChannelInfo(std::vector<ChannelInfo> &channels,
const std::vector<unsigned char> &data) {
const char *p = reinterpret_cast<const char *>(&data.at(0));
@@ -7219,7 +7235,18 @@ static void ReadChannelInfo(std::vector<ChannelInfo> &channels,
break;
}
ChannelInfo info;
- p = ReadString(&info.name, p);
+
+ tinyexr_int64 data_len = static_cast<tinyexr_int64>(data.size()) - (p - reinterpret_cast<const char *>(data.data()));
+ if (data_len < 0) {
+ return false;
+ }
+
+ p = ReadString(
+ &info.name, p, size_t(data_len));
+ if ((p == NULL) && (info.name.empty())) {
+ // Buffer overrun. Issue #51.
+ return false;
+ }
memcpy(&info.pixel_type, p, sizeof(int));
p += 4;
@@ -7236,6 +7263,8 @@ static void ReadChannelInfo(std::vector<ChannelInfo> &channels,
channels.push_back(info);
}
+
+ return true;
}
static void WriteChannelInfo(std::vector<unsigned char> &data,
@@ -7361,25 +7390,27 @@ static void CompressZip(unsigned char *dst,
}
}
-static void DecompressZip(unsigned char *dst,
+static bool DecompressZip(unsigned char *dst,
unsigned long *uncompressed_size /* inout */,
const unsigned char *src, unsigned long src_size) {
if ((*uncompressed_size) == src_size) {
// Data is not compressed(Issue 40).
memcpy(dst, src, src_size);
- return;
+ return true;
}
std::vector<unsigned char> tmpBuf(*uncompressed_size);
#if TINYEXR_USE_MINIZ
int ret =
miniz::mz_uncompress(&tmpBuf.at(0), uncompressed_size, src, src_size);
- assert(ret == miniz::MZ_OK);
- (void)ret;
+ if (miniz::MZ_OK != ret) {
+ return false;
+ }
#else
int ret = uncompress(&tmpBuf.at(0), uncompressed_size, src, src_size);
- assert(ret == Z_OK);
- (void)ret;
+ if (Z_OK != ret) {
+ return false;
+ }
#endif
//
@@ -7419,6 +7450,8 @@ static void DecompressZip(unsigned char *dst,
break;
}
}
+
+ return true;
}
// RLE code from OpenEXR --------------------------------------
@@ -7443,7 +7476,6 @@ static void DecompressZip(unsigned char *dst,
// conformant name: _strdup.
#endif
-
const int MIN_RUN_LENGTH = 3;
const int MAX_RUN_LENGTH = 127;
@@ -7673,6 +7705,11 @@ static void DecompressRle(unsigned char *dst,
#pragma clang diagnostic ignored "-Wsign-conversion"
#pragma clang diagnostic ignored "-Wc++11-extensions"
#pragma clang diagnostic ignored "-Wconversion"
+
+#if __has_warning("-Wcast-qual")
+#pragma clang diagnostic ignored "-Wcast-qual"
+#endif
+
#endif
//
@@ -8934,7 +8971,6 @@ static void applyLut(const unsigned short lut[USHORT_RANGE],
#pragma warning(pop)
#endif
-
static bool CompressPiz(unsigned char *outPtr, unsigned int *outSize,
const unsigned char *inPtr, size_t inSize,
const std::vector<ChannelInfo> &channelInfo,
@@ -9373,7 +9409,7 @@ bool CompressZfp(std::vector<unsigned char> *outBuf, unsigned int *outSize,
// -----------------------------------------------------------------
//
-static void DecodePixelData(/* out */ unsigned char **out_images,
+static bool DecodePixelData(/* out */ unsigned char **out_images,
const int *requested_pixel_types,
const unsigned char *data_ptr, size_t data_len,
int compression_type, int line_order, int width,
@@ -9509,6 +9545,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
#else
assert(0 && "PIZ is enabled in this build");
+ return false;
#endif
} else if (compression_type == TINYEXR_COMPRESSIONTYPE_ZIPS ||
@@ -9520,9 +9557,11 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
unsigned long dstLen = static_cast<unsigned long>(outBuf.size());
assert(dstLen > 0);
- tinyexr::DecompressZip(reinterpret_cast<unsigned char *>(&outBuf.at(0)),
+ if (!tinyexr::DecompressZip(reinterpret_cast<unsigned char *>(&outBuf.at(0)),
&dstLen, data_ptr,
- static_cast<unsigned long>(data_len));
+ static_cast<unsigned long>(data_len))) {
+ return false;
+ }
// For ZIP_COMPRESSION:
// pixel sample data for channel 0 for scanline 0
@@ -9633,6 +9672,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
} else {
assert(0);
+ return false;
}
}
} else if (compression_type == TINYEXR_COMPRESSIONTYPE_RLE) {
@@ -9756,6 +9796,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
} else {
assert(0);
+ return false;
}
}
} else if (compression_type == TINYEXR_COMPRESSIONTYPE_ZFP) {
@@ -9764,7 +9805,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
if (!FindZFPCompressionParam(&zfp_compression_param, attributes,
num_attributes)) {
assert(0);
- return;
+ return false;
}
// Allocate original data size.
@@ -9818,6 +9859,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
} else {
assert(0);
+ return false;
}
}
#else
@@ -9825,6 +9867,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
(void)num_attributes;
(void)num_channels;
assert(0);
+ return false;
#endif
} else if (compression_type == TINYEXR_COMPRESSIONTYPE_NONE) {
for (size_t c = 0; c < num_channels; c++) {
@@ -9873,6 +9916,7 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
} else {
assert(0);
+ return false;
}
} else if (channels[c].pixel_type == TINYEXR_PIXELTYPE_FLOAT) {
const float *line_ptr = reinterpret_cast<const float *>(
@@ -9913,6 +9957,8 @@ static void DecodePixelData(/* out */ unsigned char **out_images,
}
}
}
+
+ return true;
}
static void DecodeTiledPixelData(
@@ -10161,7 +10207,12 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header,
// xSampling: int
// ySampling: int
- ReadChannelInfo(info->channels, data);
+ if (!ReadChannelInfo(info->channels, data)) {
+ if (err) {
+ (*err) = "Failed to parse channel info.";
+ }
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
if (info->channels.size() < 1) {
if (err) {
@@ -10173,16 +10224,19 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header,
has_channels = true;
} else if (attr_name.compare("dataWindow") == 0) {
- memcpy(&info->data_window[0], &data.at(0), sizeof(int));
- memcpy(&info->data_window[1], &data.at(4), sizeof(int));
- memcpy(&info->data_window[2], &data.at(8), sizeof(int));
- memcpy(&info->data_window[3], &data.at(12), sizeof(int));
- tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[0]));
- tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[1]));
- tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[2]));
- tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[3]));
-
- has_data_window = true;
+ if (data.size() < 16) {
+ // Corrupsed file(Issue #50).
+ } else {
+ memcpy(&info->data_window[0], &data.at(0), sizeof(int));
+ memcpy(&info->data_window[1], &data.at(4), sizeof(int));
+ memcpy(&info->data_window[2], &data.at(8), sizeof(int));
+ memcpy(&info->data_window[3], &data.at(12), sizeof(int));
+ tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[0]));
+ tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[1]));
+ tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[2]));
+ tinyexr::swap4(reinterpret_cast<unsigned int *>(&info->data_window[3]));
+ has_data_window = true;
+ }
} else if (attr_name.compare("displayWindow") == 0) {
memcpy(&info->display_window[0], &data.at(0), sizeof(int));
memcpy(&info->display_window[1], &data.at(4), sizeof(int));
@@ -10268,7 +10322,7 @@ static int ParseEXRHeader(HeaderInfo *info, bool *empty_header,
}
if (!has_data_window) {
- ss_err << "\"dataWindow\" attribute not found in the header."
+ ss_err << "\"dataWindow\" attribute not found in the header or invalid."
<< std::endl;
}
@@ -10333,7 +10387,7 @@ static void ConvertHeader(EXRHeader *exr_header, const HeaderInfo &info) {
#else
strncpy(exr_header->channels[c].name, info.channels[c].name.c_str(), 255);
#endif
- // manually add '\0' for safety.
+ // manually add '\0' for safety.
exr_header->channels[c].name[255] = '\0';
exr_header->channels[c].pixel_type = info.channels[c].pixel_type;
@@ -10371,7 +10425,7 @@ static void ConvertHeader(EXRHeader *exr_header, const HeaderInfo &info) {
static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header,
const std::vector<tinyexr::tinyexr_uint64> &offsets,
- const unsigned char *head) {
+ const unsigned char *head, const size_t size) {
int num_channels = exr_header->num_channels;
int num_scanline_blocks = 1;
@@ -10412,6 +10466,11 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header,
// 16 byte: tile coordinates
// 4 byte : data size
// ~ : data(uncompressed or compressed)
+ if (offsets[tile_idx] + sizeof(int) * 5 > size) {
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
+
+ size_t data_size = size - (offsets[tile_idx] + sizeof(int) * 5);
const unsigned char *data_ptr =
reinterpret_cast<const unsigned char *>(head + offsets[tile_idx]);
@@ -10430,7 +10489,10 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header,
memcpy(&data_len, data_ptr + 16,
sizeof(int)); // 16 = sizeof(tile_coordinates)
tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len));
- assert(data_len >= 4);
+
+ if (data_len < 4 || size_t(data_len) > data_size) {
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
// Move to data addr: 20 = 16 + 4;
data_ptr += 20;
@@ -10467,11 +10529,18 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header,
#endif
for (int y = 0; y < static_cast<int>(num_blocks); y++) {
size_t y_idx = static_cast<size_t>(y);
- const unsigned char *data_ptr =
- reinterpret_cast<const unsigned char *>(head + offsets[y_idx]);
+
+ if (offsets[y_idx] + sizeof(int) * 2 > size) {
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
+
// 4 byte: scan line
// 4 byte: data size
// ~ : pixel data(uncompressed or compressed)
+ size_t data_size = size - (offsets[y_idx] + sizeof(int) * 2);
+ const unsigned char *data_ptr =
+ reinterpret_cast<const unsigned char *>(head + offsets[y_idx]);
+
int line_no;
memcpy(&line_no, data_ptr, sizeof(int));
int data_len;
@@ -10479,30 +10548,41 @@ static int DecodeChunk(EXRImage *exr_image, const EXRHeader *exr_header,
tinyexr::swap4(reinterpret_cast<unsigned int *>(&line_no));
tinyexr::swap4(reinterpret_cast<unsigned int *>(&data_len));
+ if (size_t(data_len) > data_size) {
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
+
int end_line_no = (std::min)(line_no + num_scanline_blocks,
(exr_header->data_window[3] + 1));
int num_lines = end_line_no - line_no;
- assert(num_lines > 0);
-
- // Move to data addr: 8 = 4 + 4;
- data_ptr += 8;
-
- // Adjust line_no with data_window.bmin.y
- line_no -= exr_header->data_window[1];
+ //assert(num_lines > 0);
- if (line_no < 0) {
+ if (num_lines <= 0) {
invalid_data = true;
} else {
- tinyexr::DecodePixelData(
- exr_image->images, exr_header->requested_pixel_types, data_ptr,
- static_cast<size_t>(data_len), exr_header->compression_type,
- exr_header->line_order, data_width, data_height, data_width, y,
- line_no, num_lines, static_cast<size_t>(pixel_data_size),
- static_cast<size_t>(exr_header->num_custom_attributes),
- exr_header->custom_attributes,
- static_cast<size_t>(exr_header->num_channels), exr_header->channels,
- channel_offset_list);
+
+ // Move to data addr: 8 = 4 + 4;
+ data_ptr += 8;
+
+ // Adjust line_no with data_window.bmin.y
+ line_no -= exr_header->data_window[1];
+
+ if (line_no < 0) {
+ invalid_data = true;
+ } else {
+ if (!tinyexr::DecodePixelData(
+ exr_image->images, exr_header->requested_pixel_types, data_ptr,
+ static_cast<size_t>(data_len), exr_header->compression_type,
+ exr_header->line_order, data_width, data_height, data_width, y,
+ line_no, num_lines, static_cast<size_t>(pixel_data_size),
+ static_cast<size_t>(exr_header->num_custom_attributes),
+ exr_header->custom_attributes,
+ static_cast<size_t>(exr_header->num_channels), exr_header->channels,
+ channel_offset_list)) {
+ invalid_data = true;
+ }
+ }
}
} // omp parallel
}
@@ -10537,7 +10617,7 @@ static bool ReconstructLineOffsets(
for (size_t i = 0; i < n; i++) {
size_t offset = static_cast<size_t>(marker - head);
// Offset should not exceed whole EXR file/data size.
- if (offset >= size) {
+ if ((offset + sizeof(tinyexr::tinyexr_uint64)) >= size) {
return false;
}
@@ -10586,8 +10666,15 @@ static int DecodeEXRImage(EXRImage *exr_image, const EXRHeader *exr_header,
int data_width = exr_header->data_window[2] - exr_header->data_window[0] + 1;
int data_height = exr_header->data_window[3] - exr_header->data_window[1] + 1;
+ if ((data_width < 0) || (data_height < 0)) {
+ if (err) {
+ (*err) = "Invalid data window value.";
+ }
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
+
// Read offset tables.
- size_t num_blocks;
+ size_t num_blocks = 0;
if (exr_header->chunk_count > 0) {
// Use `chunkCount` attribute.
@@ -10657,7 +10744,7 @@ static int DecodeEXRImage(EXRImage *exr_image, const EXRHeader *exr_header,
}
}
- return DecodeChunk(exr_image, exr_header, offsets, head);
+ return DecodeChunk(exr_image, exr_header, offsets, head, size);
}
} // namespace tinyexr
@@ -10842,8 +10929,8 @@ int ParseEXRHeaderFromMemory(EXRHeader *exr_header, const EXRVersion *version,
}
int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
- const unsigned char *memory, size_t size,
- const char **err) {
+ const unsigned char *memory, size_t size,
+ const char **err) {
if (out_rgba == NULL || memory == NULL) {
if (err) {
(*err) = "Invalid argument.\n";
@@ -10866,13 +10953,13 @@ int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
if (ret != TINYEXR_SUCCESS) {
return ret;
}
-
+
// Read HALF channel as FLOAT.
for (int i = 0; i < exr_header.num_channels; i++) {
if (exr_header.pixel_types[i] == TINYEXR_PIXELTYPE_HALF) {
exr_header.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
}
- }
+ }
InitEXRImage(&exr_image);
ret = LoadEXRImageFromMemory(&exr_image, &exr_header, memory, size, err);
@@ -10923,23 +11010,22 @@ int LoadEXRFromMemory(float **out_rgba, int *width, int *height,
}
(*out_rgba) = reinterpret_cast<float *>(
- malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) *
- static_cast<size_t>(exr_image.height)));
+ malloc(4 * sizeof(float) * static_cast<size_t>(exr_image.width) *
+ static_cast<size_t>(exr_image.height)));
for (int i = 0; i < exr_image.width * exr_image.height; i++) {
- (*out_rgba)[4 * i + 0] =
- reinterpret_cast<float **>(exr_image.images)[idxR][i];
- (*out_rgba)[4 * i + 1] =
- reinterpret_cast<float **>(exr_image.images)[idxG][i];
- (*out_rgba)[4 * i + 2] =
- reinterpret_cast<float **>(exr_image.images)[idxB][i];
- if (idxA != -1) {
- (*out_rgba)[4 * i + 3] =
- reinterpret_cast<float **>(exr_image.images)[idxA][i];
- }
- else {
- (*out_rgba)[4 * i + 3] = 1.0;
- }
+ (*out_rgba)[4 * i + 0] =
+ reinterpret_cast<float **>(exr_image.images)[idxR][i];
+ (*out_rgba)[4 * i + 1] =
+ reinterpret_cast<float **>(exr_image.images)[idxG][i];
+ (*out_rgba)[4 * i + 2] =
+ reinterpret_cast<float **>(exr_image.images)[idxB][i];
+ if (idxA != -1) {
+ (*out_rgba)[4 * i + 3] =
+ reinterpret_cast<float **>(exr_image.images)[idxA][i];
+ } else {
+ (*out_rgba)[4 * i + 3] = 1.0;
+ }
}
(*width) = exr_image.width;
@@ -11707,7 +11793,12 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {
// xSampling: int
// ySampling: int
- tinyexr::ReadChannelInfo(channels, data);
+ if (!tinyexr::ReadChannelInfo(channels, data)) {
+ if (err) {
+ (*err) = "Failed to parse channel info.";
+ }
+ return TINYEXR_ERROR_INVALID_DATA;
+ }
num_channels = static_cast<int>(channels.size());
@@ -11844,9 +11935,11 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {
{
unsigned long dstLen =
static_cast<unsigned long>(pixelOffsetTable.size() * sizeof(int));
- tinyexr::DecompressZip(
+ if (!tinyexr::DecompressZip(
reinterpret_cast<unsigned char *>(&pixelOffsetTable.at(0)), &dstLen,
- data_ptr + 28, static_cast<unsigned long>(packedOffsetTableSize));
+ data_ptr + 28, static_cast<unsigned long>(packedOffsetTableSize))) {
+ return false;
+ }
assert(dstLen == pixelOffsetTable.size() * sizeof(int));
for (size_t i = 0; i < static_cast<size_t>(data_width); i++) {
@@ -11861,10 +11954,12 @@ int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {
{
unsigned long dstLen = static_cast<unsigned long>(unpackedSampleDataSize);
if (dstLen) {
- tinyexr::DecompressZip(
+ if (!tinyexr::DecompressZip(
reinterpret_cast<unsigned char *>(&sample_data.at(0)), &dstLen,
data_ptr + 28 + packedOffsetTableSize,
- static_cast<unsigned long>(packedSampleDataSize));
+ static_cast<unsigned long>(packedSampleDataSize))) {
+ return false;
+ }
assert(dstLen == static_cast<unsigned long>(unpackedSampleDataSize));
}
}
@@ -12390,7 +12485,7 @@ int LoadEXRMultipartImageFromMemory(EXRImage *exr_images,
}
int ret = tinyexr::DecodeChunk(&exr_images[i], exr_headers[i], offset_table,
- memory);
+ memory, size);
if (ret != TINYEXR_SUCCESS) {
return ret;
}
diff --git a/thirdparty/zstd/common/bitstream.h b/thirdparty/zstd/common/bitstream.h
index 2094823fe2..fcf3843079 100644
--- a/thirdparty/zstd/common/bitstream.h
+++ b/thirdparty/zstd/common/bitstream.h
@@ -167,7 +167,7 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
/*-**************************************************************
* Internal functions
****************************************************************/
-MEM_STATIC unsigned BIT_highbit32 (register U32 val)
+MEM_STATIC unsigned BIT_highbit32 (U32 val)
{
assert(val != 0);
{
diff --git a/thirdparty/zstd/common/mem.h b/thirdparty/zstd/common/mem.h
index 23335c3146..47d2300177 100644
--- a/thirdparty/zstd/common/mem.h
+++ b/thirdparty/zstd/common/mem.h
@@ -56,8 +56,6 @@ MEM_STATIC void MEM_check(void) { MEM_STATIC_ASSERT((sizeof(size_t)==4) || (size
typedef int32_t S32;
typedef uint64_t U64;
typedef int64_t S64;
- typedef intptr_t iPtrDiff;
- typedef uintptr_t uPtrDiff;
#else
typedef unsigned char BYTE;
typedef unsigned short U16;
@@ -66,8 +64,6 @@ MEM_STATIC void MEM_check(void) { MEM_STATIC_ASSERT((sizeof(size_t)==4) || (size
typedef signed int S32;
typedef unsigned long long U64;
typedef signed long long S64;
- typedef ptrdiff_t iPtrDiff;
- typedef size_t uPtrDiff;
#endif
@@ -123,20 +119,26 @@ MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
/* currently only defined for gcc and icc */
#if defined(_MSC_VER) || (defined(__INTEL_COMPILER) && defined(WIN32))
__pragma( pack(push, 1) )
- typedef union { U16 u16; U32 u32; U64 u64; size_t st; } unalign;
+ typedef struct { U16 v; } unalign16;
+ typedef struct { U32 v; } unalign32;
+ typedef struct { U64 v; } unalign64;
+ typedef struct { size_t v; } unalignArch;
__pragma( pack(pop) )
#else
- typedef union { U16 u16; U32 u32; U64 u64; size_t st; } __attribute__((packed)) unalign;
+ typedef struct { U16 v; } __attribute__((packed)) unalign16;
+ typedef struct { U32 v; } __attribute__((packed)) unalign32;
+ typedef struct { U64 v; } __attribute__((packed)) unalign64;
+ typedef struct { size_t v; } __attribute__((packed)) unalignArch;
#endif
-MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
-MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
-MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }
-MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalign*)ptr)->st; }
+MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; }
+MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign32*)ptr)->v; }
+MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign64*)ptr)->v; }
+MEM_STATIC size_t MEM_readST(const void* ptr) { return ((const unalignArch*)ptr)->v; }
-MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; }
-MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; }
-MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign*)memPtr)->u64 = value; }
+MEM_STATIC void MEM_write16(void* memPtr, U16 value) { ((unalign16*)memPtr)->v = value; }
+MEM_STATIC void MEM_write32(void* memPtr, U32 value) { ((unalign32*)memPtr)->v = value; }
+MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign64*)memPtr)->v = value; }
#else
diff --git a/thirdparty/zstd/common/pool.c b/thirdparty/zstd/common/pool.c
index 1b0fe1035d..98b109e72a 100644
--- a/thirdparty/zstd/common/pool.c
+++ b/thirdparty/zstd/common/pool.c
@@ -11,7 +11,6 @@
/* ====== Dependencies ======= */
#include <stddef.h> /* size_t */
-#include <stdlib.h> /* malloc, calloc, free */
#include "pool.h"
/* ====== Compiler specifics ====== */
@@ -115,7 +114,7 @@ POOL_ctx* POOL_create_advanced(size_t numThreads, size_t queueSize, ZSTD_customM
* and full queues.
*/
ctx->queueSize = queueSize + 1;
- ctx->queue = (POOL_job*) malloc(ctx->queueSize * sizeof(POOL_job));
+ ctx->queue = (POOL_job*)ZSTD_malloc(ctx->queueSize * sizeof(POOL_job), customMem);
ctx->queueHead = 0;
ctx->queueTail = 0;
ctx->numThreadsBusy = 0;
diff --git a/thirdparty/zstd/common/zstd_common.c b/thirdparty/zstd/common/zstd_common.c
index c2041053be..bccc948892 100644
--- a/thirdparty/zstd/common/zstd_common.c
+++ b/thirdparty/zstd/common/zstd_common.c
@@ -31,21 +31,27 @@ const char* ZSTD_versionString(void) { return ZSTD_VERSION_STRING; }
* ZSTD Error Management
******************************************/
/*! ZSTD_isError() :
-* tells if a return value is an error code */
+ * tells if a return value is an error code */
unsigned ZSTD_isError(size_t code) { return ERR_isError(code); }
/*! ZSTD_getErrorName() :
-* provides error code string from function result (useful for debugging) */
+ * provides error code string from function result (useful for debugging) */
const char* ZSTD_getErrorName(size_t code) { return ERR_getErrorName(code); }
/*! ZSTD_getError() :
-* convert a `size_t` function result into a proper ZSTD_errorCode enum */
+ * convert a `size_t` function result into a proper ZSTD_errorCode enum */
ZSTD_ErrorCode ZSTD_getErrorCode(size_t code) { return ERR_getErrorCode(code); }
/*! ZSTD_getErrorString() :
-* provides error code string from enum */
+ * provides error code string from enum */
const char* ZSTD_getErrorString(ZSTD_ErrorCode code) { return ERR_getErrorString(code); }
+/*! g_debuglog_enable :
+ * turn on/off debug traces (global switch) */
+#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 2)
+int g_debuglog_enable = 1;
+#endif
+
/*=**************************************************************
* Custom allocator
diff --git a/thirdparty/zstd/common/zstd_internal.h b/thirdparty/zstd/common/zstd_internal.h
index e91cd20baa..5d2900eb76 100644
--- a/thirdparty/zstd/common/zstd_internal.h
+++ b/thirdparty/zstd/common/zstd_internal.h
@@ -11,6 +11,10 @@
#ifndef ZSTD_CCOMMON_H_MODULE
#define ZSTD_CCOMMON_H_MODULE
+/* this module contains definitions which must be identical
+ * across compression, decompression and dictBuilder.
+ * It also contains a few functions useful to at least 2 of them
+ * and which benefit from being inlined */
/*-*************************************
* Dependencies
@@ -50,21 +54,26 @@ extern "C" {
#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG>=2)
# include <stdio.h>
+extern int g_debuglog_enable;
/* recommended values for ZSTD_DEBUG display levels :
* 1 : no display, enables assert() only
- * 2 : reserved for currently active debugging path
- * 3 : events once per object lifetime (CCtx, CDict)
+ * 2 : reserved for currently active debug path
+ * 3 : events once per object lifetime (CCtx, CDict, etc.)
* 4 : events once per frame
* 5 : events once per block
* 6 : events once per sequence (*very* verbose) */
-# define DEBUGLOG(l, ...) { \
- if (l<=ZSTD_DEBUG) { \
- fprintf(stderr, __FILE__ ": "); \
- fprintf(stderr, __VA_ARGS__); \
- fprintf(stderr, " \n"); \
+# define RAWLOG(l, ...) { \
+ if ((g_debuglog_enable) & (l<=ZSTD_DEBUG)) { \
+ fprintf(stderr, __VA_ARGS__); \
+ } }
+# define DEBUGLOG(l, ...) { \
+ if ((g_debuglog_enable) & (l<=ZSTD_DEBUG)) { \
+ fprintf(stderr, __FILE__ ": " __VA_ARGS__); \
+ fprintf(stderr, " \n"); \
} }
#else
-# define DEBUGLOG(l, ...) {} /* disabled */
+# define RAWLOG(l, ...) {} /* disabled */
+# define DEBUGLOG(l, ...) {} /* disabled */
#endif
@@ -85,9 +94,7 @@ extern "C" {
#define ZSTD_OPT_NUM (1<<12)
#define ZSTD_REP_NUM 3 /* number of repcodes */
-#define ZSTD_REP_CHECK (ZSTD_REP_NUM) /* number of repcodes to check by the optimal parser */
#define ZSTD_REP_MOVE (ZSTD_REP_NUM-1)
-#define ZSTD_REP_MOVE_OPT (ZSTD_REP_NUM)
static const U32 repStartValue[ZSTD_REP_NUM] = { 1, 4, 8 };
#define KB *(1 <<10)
@@ -134,28 +141,40 @@ typedef enum { set_basic, set_rle, set_compressed, set_repeat } symbolEncodingTy
#define LLFSELog 9
#define OffFSELog 8
-static const U32 LL_bits[MaxLL+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 2, 2, 3, 3, 4, 6, 7, 8, 9,10,11,12,
+static const U32 LL_bits[MaxLL+1] = { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 2, 2, 3, 3,
+ 4, 6, 7, 8, 9,10,11,12,
13,14,15,16 };
-static const S16 LL_defaultNorm[MaxLL+1] = { 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1,
+static const S16 LL_defaultNorm[MaxLL+1] = { 4, 3, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 3, 2, 1, 1, 1, 1, 1,
-1,-1,-1,-1 };
#define LL_DEFAULTNORMLOG 6 /* for static allocation */
static const U32 LL_defaultNormLog = LL_DEFAULTNORMLOG;
-static const U32 ML_bits[MaxML+1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 7, 8, 9,10,11,
+static const U32 ML_bits[MaxML+1] = { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 2, 2, 3, 3,
+ 4, 4, 5, 7, 8, 9,10,11,
12,13,14,15,16 };
-static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,
+static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1,-1,-1,
-1,-1,-1,-1,-1 };
#define ML_DEFAULTNORMLOG 6 /* for static allocation */
static const U32 ML_defaultNormLog = ML_DEFAULTNORMLOG;
-static const S16 OF_defaultNorm[DefaultMaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1 };
+static const S16 OF_defaultNorm[DefaultMaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ -1,-1,-1,-1,-1 };
#define OF_DEFAULTNORMLOG 5 /* for static allocation */
static const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG;
@@ -167,7 +186,7 @@ static void ZSTD_copy8(void* dst, const void* src) { memcpy(dst, src, 8); }
#define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; }
/*! ZSTD_wildcopy() :
-* custom version of memcpy(), can copy up to 7 bytes too many (8 bytes if length==0) */
+ * custom version of memcpy(), can overwrite up to WILDCOPY_OVERLENGTH bytes (if length==0) */
#define WILDCOPY_OVERLENGTH 8
MEM_STATIC void ZSTD_wildcopy(void* dst, const void* src, ptrdiff_t length)
{
@@ -191,17 +210,14 @@ MEM_STATIC void ZSTD_wildcopy_e(void* dst, const void* src, void* dstEnd) /* s
/*-*******************************************
-* Private interfaces
+* Private declarations
*********************************************/
-typedef struct ZSTD_stats_s ZSTD_stats_t;
-
typedef struct seqDef_s {
U32 offset;
U16 litLength;
U16 matchLength;
} seqDef;
-
typedef struct {
seqDef* sequencesStart;
seqDef* sequences;
@@ -216,100 +232,8 @@ typedef struct {
U32 repToConfirm[ZSTD_REP_NUM];
} seqStore_t;
-typedef struct {
- U32 off;
- U32 len;
-} ZSTD_match_t;
-
-typedef struct {
- U32 price;
- U32 off;
- U32 mlen;
- U32 litlen;
- U32 rep[ZSTD_REP_NUM];
-} ZSTD_optimal_t;
-
-typedef struct {
- U32* litFreq;
- U32* litLengthFreq;
- U32* matchLengthFreq;
- U32* offCodeFreq;
- ZSTD_match_t* matchTable;
- ZSTD_optimal_t* priceTable;
-
- U32 matchLengthSum;
- U32 matchSum;
- U32 litLengthSum;
- U32 litSum;
- U32 offCodeSum;
- U32 log2matchLengthSum;
- U32 log2matchSum;
- U32 log2litLengthSum;
- U32 log2litSum;
- U32 log2offCodeSum;
- U32 factor;
- U32 staticPrices;
- U32 cachedPrice;
- U32 cachedLitLength;
- const BYTE* cachedLiterals;
-} optState_t;
-
-typedef struct {
- U32 offset;
- U32 checksum;
-} ldmEntry_t;
-
-typedef struct {
- ldmEntry_t* hashTable;
- BYTE* bucketOffsets; /* Next position in bucket to insert entry */
- U64 hashPower; /* Used to compute the rolling hash.
- * Depends on ldmParams.minMatchLength */
-} ldmState_t;
-
-typedef struct {
- U32 enableLdm; /* 1 if enable long distance matching */
- U32 hashLog; /* Log size of hashTable */
- U32 bucketSizeLog; /* Log bucket size for collision resolution, at most 8 */
- U32 minMatchLength; /* Minimum match length */
- U32 hashEveryLog; /* Log number of entries to skip */
-} ldmParams_t;
-
-typedef struct {
- U32 hufCTable[HUF_CTABLE_SIZE_U32(255)];
- FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)];
- FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)];
- FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)];
- U32 workspace[HUF_WORKSPACE_SIZE_U32];
- HUF_repeat hufCTable_repeatMode;
- FSE_repeat offcode_repeatMode;
- FSE_repeat matchlength_repeatMode;
- FSE_repeat litlength_repeatMode;
-} ZSTD_entropyCTables_t;
-
-struct ZSTD_CCtx_params_s {
- ZSTD_format_e format;
- ZSTD_compressionParameters cParams;
- ZSTD_frameParameters fParams;
-
- int compressionLevel;
- U32 forceWindow; /* force back-references to respect limit of
- * 1<<wLog, even for dictionary */
-
- /* Multithreading: used to pass parameters to mtctx */
- U32 nbThreads;
- unsigned jobSize;
- unsigned overlapSizeLog;
-
- /* Long distance matching parameters */
- ldmParams_t ldmParams;
-
- /* For use with createCCtxParams() and freeCCtxParams() only */
- ZSTD_customMem customMem;
-
-}; /* typedef'd to ZSTD_CCtx_params within "zstd.h" */
-
-const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
-void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
+const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx); /* compress & dictBuilder */
+void ZSTD_seqToCodes(const seqStore_t* seqStorePtr); /* compress, dictBuilder, decodeCorpus (shouldn't get its definition from here) */
/* custom memory allocation functions */
void* ZSTD_malloc(size_t size, ZSTD_customMem customMem);
@@ -317,9 +241,7 @@ void* ZSTD_calloc(size_t size, ZSTD_customMem customMem);
void ZSTD_free(void* ptr, ZSTD_customMem customMem);
-/*====== common function ======*/
-
-MEM_STATIC U32 ZSTD_highbit32(U32 val)
+MEM_STATIC U32 ZSTD_highbit32(U32 val) /* compress, dictBuilder, decodeCorpus */
{
assert(val != 0);
{
@@ -330,66 +252,25 @@ MEM_STATIC U32 ZSTD_highbit32(U32 val)
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
return 31 - __builtin_clz(val);
# else /* Software version */
- static const int DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
+ static const U32 DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
U32 v = val;
- int r;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
- r = DeBruijnClz[(U32)(v * 0x07C4ACDDU) >> 27];
- return r;
+ return DeBruijnClz[(v * 0x07C4ACDDU) >> 27];
# endif
}
}
-/* hidden functions */
-
/* ZSTD_invalidateRepCodes() :
* ensures next compression will not use repcodes from previous block.
* Note : only works with regular variant;
* do not use with extDict variant ! */
-void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx);
-
-
-/*! ZSTD_initCStream_internal() :
- * Private use only. Init streaming operation.
- * expects params to be valid.
- * must receive dict, or cdict, or none, but not both.
- * @return : 0, or an error code */
-size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
- const void* dict, size_t dictSize,
- const ZSTD_CDict* cdict,
- ZSTD_CCtx_params params, unsigned long long pledgedSrcSize);
-
-/*! ZSTD_compressStream_generic() :
- * Private use only. To be called from zstdmt_compress.c in single-thread mode. */
-size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
- ZSTD_outBuffer* output,
- ZSTD_inBuffer* input,
- ZSTD_EndDirective const flushMode);
-
-/*! ZSTD_getCParamsFromCDict() :
- * as the name implies */
-ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict);
-
-/* ZSTD_compressBegin_advanced_internal() :
- * Private use only. To be called from zstdmt_compress.c. */
-size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx,
- const void* dict, size_t dictSize,
- ZSTD_dictMode_e dictMode,
- ZSTD_CCtx_params params,
- unsigned long long pledgedSrcSize);
-
-/* ZSTD_compress_advanced_internal() :
- * Private use only. To be called from zstdmt_compress.c. */
-size_t ZSTD_compress_advanced_internal(ZSTD_CCtx* cctx,
- void* dst, size_t dstCapacity,
- const void* src, size_t srcSize,
- const void* dict,size_t dictSize,
- ZSTD_CCtx_params params);
+void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx); /* zstdmt, adaptive_compression (shouldn't get this definition from here) */
+
typedef struct {
blockType_e blockType;
@@ -398,7 +279,8 @@ typedef struct {
} blockProperties_t;
/*! ZSTD_getcBlockSize() :
-* Provides the size of compressed block from block header `src` */
+ * Provides the size of compressed block from block header `src` */
+/* Used by: decompress, fullbench (does not get its definition from here) */
size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
blockProperties_t* bpPtr);
diff --git a/thirdparty/zstd/compress/zstd_compress.c b/thirdparty/zstd/compress/zstd_compress.c
index 2c46c79f1c..8d1629246d 100644
--- a/thirdparty/zstd/compress/zstd_compress.c
+++ b/thirdparty/zstd/compress/zstd_compress.c
@@ -26,7 +26,7 @@
#include "fse.h"
#define HUF_STATIC_LINKING_ONLY
#include "huf.h"
-#include "zstd_compress.h"
+#include "zstd_compress_internal.h"
#include "zstd_fast.h"
#include "zstd_double_fast.h"
#include "zstd_lazy.h"
@@ -43,17 +43,6 @@ size_t ZSTD_compressBound(size_t srcSize) {
/*-*************************************
-* Sequence storage
-***************************************/
-static void ZSTD_resetSeqStore(seqStore_t* ssPtr)
-{
- ssPtr->lit = ssPtr->litStart;
- ssPtr->sequences = ssPtr->sequencesStart;
- ssPtr->longLengthID = 0;
-}
-
-
-/*-*************************************
* Context memory management
***************************************/
struct ZSTD_CDict_s {
@@ -78,6 +67,7 @@ ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem)
if (!cctx) return NULL;
cctx->customMem = customMem;
cctx->requestedParams.compressionLevel = ZSTD_CLEVEL_DEFAULT;
+ cctx->requestedParams.fParams.contentSizeFlag = 1;
ZSTD_STATIC_ASSERT(zcss_init==0);
ZSTD_STATIC_ASSERT(ZSTD_CONTENTSIZE_UNKNOWN==(0ULL - 1));
return cctx;
@@ -152,28 +142,34 @@ const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx) { return &(ctx->seqStor
#define ZSTD_CLEVEL_CUSTOM 999
static ZSTD_compressionParameters ZSTD_getCParamsFromCCtxParams(
- ZSTD_CCtx_params params, U64 srcSizeHint, size_t dictSize)
+ ZSTD_CCtx_params CCtxParams, U64 srcSizeHint, size_t dictSize)
{
- return (params.compressionLevel == ZSTD_CLEVEL_CUSTOM ?
- params.cParams :
- ZSTD_getCParams(params.compressionLevel, srcSizeHint, dictSize));
+ DEBUGLOG(4, "ZSTD_getCParamsFromCCtxParams: srcSize = %u, dictSize = %u",
+ (U32)srcSizeHint, (U32)dictSize);
+ return (CCtxParams.compressionLevel == ZSTD_CLEVEL_CUSTOM) ?
+ CCtxParams.cParams :
+ ZSTD_getCParams(CCtxParams.compressionLevel, srcSizeHint, dictSize);
}
-static void ZSTD_cLevelToCCtxParams_srcSize(ZSTD_CCtx_params* params, U64 srcSize)
+static void ZSTD_cLevelToCCtxParams_srcSize(ZSTD_CCtx_params* CCtxParams, U64 srcSize)
{
- params->cParams = ZSTD_getCParamsFromCCtxParams(*params, srcSize, 0);
- params->compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ DEBUGLOG(4, "ZSTD_cLevelToCCtxParams_srcSize: srcSize = %u",
+ (U32)srcSize);
+ CCtxParams->cParams = ZSTD_getCParamsFromCCtxParams(*CCtxParams, srcSize, 0);
+ CCtxParams->compressionLevel = ZSTD_CLEVEL_CUSTOM;
}
static void ZSTD_cLevelToCParams(ZSTD_CCtx* cctx)
{
+ DEBUGLOG(4, "ZSTD_cLevelToCParams: level=%i", cctx->requestedParams.compressionLevel);
ZSTD_cLevelToCCtxParams_srcSize(
&cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1);
}
-static void ZSTD_cLevelToCCtxParams(ZSTD_CCtx_params* params)
+static void ZSTD_cLevelToCCtxParams(ZSTD_CCtx_params* CCtxParams)
{
- ZSTD_cLevelToCCtxParams_srcSize(params, 0);
+ DEBUGLOG(4, "ZSTD_cLevelToCCtxParams");
+ ZSTD_cLevelToCCtxParams_srcSize(CCtxParams, ZSTD_CONTENTSIZE_UNKNOWN);
}
static ZSTD_CCtx_params ZSTD_makeCCtxParamsFromCParams(
@@ -251,6 +247,7 @@ static ZSTD_CCtx_params ZSTD_assignParamsToCCtxParams(
size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value)
{
+ DEBUGLOG(4, "ZSTD_CCtx_setParameter (%u, %u)", (U32)param, value);
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
switch(param)
@@ -259,7 +256,6 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_compressionLevel:
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
if (cctx->cdict) return ERROR(stage_wrong);
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
@@ -270,9 +266,8 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
case ZSTD_p_minMatch:
case ZSTD_p_targetLength:
case ZSTD_p_compressionStrategy:
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
if (cctx->cdict) return ERROR(stage_wrong);
- ZSTD_cLevelToCParams(cctx); /* Can optimize if srcSize is known */
+ if (value>0) ZSTD_cLevelToCParams(cctx); /* Can optimize if srcSize is known */
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_contentSizeFlag:
@@ -281,15 +276,12 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_forceMaxWindow : /* Force back-references to remain < windowSize,
- * even when referencing into Dictionary content
+ * even when referencing into Dictionary content.
* default : 0 when using a CDict, 1 when using a Prefix */
- cctx->loadedDictEnd = 0;
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_nbThreads:
- if (value==0) return 0;
- DEBUGLOG(5, " setting nbThreads : %u", value);
- if (value > 1 && cctx->staticSize) {
+ if ((value > 1) && cctx->staticSize) {
return ERROR(parameter_unsupported); /* MT not compatible with static alloc */
}
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
@@ -298,22 +290,15 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_overlapSizeLog:
- DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->requestedParams.nbThreads);
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_enableLongDistanceMatching:
if (cctx->cdict) return ERROR(stage_wrong);
- if (value != 0) {
- ZSTD_cLevelToCParams(cctx);
- }
+ if (value>0) ZSTD_cLevelToCParams(cctx);
return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
case ZSTD_p_ldmHashLog:
case ZSTD_p_ldmMinMatch:
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
- return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
-
case ZSTD_p_ldmBucketSizeLog:
case ZSTD_p_ldmHashEveryLog:
if (cctx->cdict) return ERROR(stage_wrong);
@@ -324,160 +309,167 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
}
size_t ZSTD_CCtxParam_setParameter(
- ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value)
+ ZSTD_CCtx_params* CCtxParams, ZSTD_cParameter param, unsigned value)
{
+ DEBUGLOG(4, "ZSTD_CCtxParam_setParameter (%u, %u)", (U32)param, value);
switch(param)
{
case ZSTD_p_format :
if (value > (unsigned)ZSTD_f_zstd1_magicless)
return ERROR(parameter_unsupported);
- params->format = (ZSTD_format_e)value;
- return 0;
+ CCtxParams->format = (ZSTD_format_e)value;
+ return (size_t)CCtxParams->format;
case ZSTD_p_compressionLevel :
if ((int)value > ZSTD_maxCLevel()) value = ZSTD_maxCLevel();
- if (value == 0) return 0;
- params->compressionLevel = value;
- return 0;
+ if (value) /* 0 : does not change current level */
+ CCtxParams->compressionLevel = value;
+ return CCtxParams->compressionLevel;
case ZSTD_p_windowLog :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_WINDOWLOG_MIN, ZSTD_WINDOWLOG_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.windowLog = value;
- return 0;
+ DEBUGLOG(4, "ZSTD_CCtxParam_setParameter: set windowLog=%u", value);
+ if (value) { /* 0 : does not change current windowLog */
+ CLAMPCHECK(value, ZSTD_WINDOWLOG_MIN, ZSTD_WINDOWLOG_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.windowLog = value;
+ }
+ return CCtxParams->cParams.windowLog;
case ZSTD_p_hashLog :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.hashLog = value;
- return 0;
+ if (value) { /* 0 : does not change current hashLog */
+ CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.hashLog = value;
+ }
+ return CCtxParams->cParams.hashLog;
case ZSTD_p_chainLog :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_CHAINLOG_MIN, ZSTD_CHAINLOG_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.chainLog = value;
- return 0;
+ if (value) { /* 0 : does not change current chainLog */
+ CLAMPCHECK(value, ZSTD_CHAINLOG_MIN, ZSTD_CHAINLOG_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.chainLog = value;
+ }
+ return CCtxParams->cParams.chainLog;
case ZSTD_p_searchLog :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.searchLog = value;
- return 0;
+ if (value) { /* 0 : does not change current searchLog */
+ CLAMPCHECK(value, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.searchLog = value;
+ }
+ return value;
case ZSTD_p_minMatch :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.searchLength = value;
- return 0;
+ if (value) { /* 0 : does not change current minMatch length */
+ CLAMPCHECK(value, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.searchLength = value;
+ }
+ return CCtxParams->cParams.searchLength;
case ZSTD_p_targetLength :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.targetLength = value;
- return 0;
+ if (value) { /* 0 : does not change current sufficient_len */
+ CLAMPCHECK(value, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.targetLength = value;
+ }
+ return CCtxParams->cParams.targetLength;
case ZSTD_p_compressionStrategy :
- if (value == 0) return 0;
- CLAMPCHECK(value, (unsigned)ZSTD_fast, (unsigned)ZSTD_btultra);
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.strategy = (ZSTD_strategy)value;
- return 0;
+ if (value) { /* 0 : does not change currentstrategy */
+ CLAMPCHECK(value, (unsigned)ZSTD_fast, (unsigned)ZSTD_btultra);
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.strategy = (ZSTD_strategy)value;
+ }
+ return (size_t)CCtxParams->cParams.strategy;
case ZSTD_p_contentSizeFlag :
/* Content size written in frame header _when known_ (default:1) */
- DEBUGLOG(5, "set content size flag = %u", (value>0));
- params->fParams.contentSizeFlag = value > 0;
- return 0;
+ DEBUGLOG(4, "set content size flag = %u", (value>0));
+ CCtxParams->fParams.contentSizeFlag = value > 0;
+ return CCtxParams->fParams.contentSizeFlag;
case ZSTD_p_checksumFlag :
/* A 32-bits content checksum will be calculated and written at end of frame (default:0) */
- params->fParams.checksumFlag = value > 0;
- return 0;
+ CCtxParams->fParams.checksumFlag = value > 0;
+ return CCtxParams->fParams.checksumFlag;
case ZSTD_p_dictIDFlag : /* When applicable, dictionary's dictID is provided in frame header (default:1) */
- DEBUGLOG(5, "set dictIDFlag = %u", (value>0));
- params->fParams.noDictIDFlag = (value == 0);
- return 0;
+ DEBUGLOG(4, "set dictIDFlag = %u", (value>0));
+ CCtxParams->fParams.noDictIDFlag = (value == 0);
+ return !CCtxParams->fParams.noDictIDFlag;
case ZSTD_p_forceMaxWindow :
- params->forceWindow = value > 0;
- return 0;
+ CCtxParams->forceWindow = (value > 0);
+ return CCtxParams->forceWindow;
case ZSTD_p_nbThreads :
- if (value == 0) return 0;
+ if (value == 0) return CCtxParams->nbThreads;
#ifndef ZSTD_MULTITHREAD
if (value > 1) return ERROR(parameter_unsupported);
- return 0;
+ return 1;
#else
- return ZSTDMT_initializeCCtxParameters(params, value);
+ return ZSTDMT_CCtxParam_setNbThreads(CCtxParams, value);
#endif
case ZSTD_p_jobSize :
#ifndef ZSTD_MULTITHREAD
return ERROR(parameter_unsupported);
#else
- if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
- return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_sectionSize, value);
+ if (CCtxParams->nbThreads <= 1) return ERROR(parameter_unsupported);
+ return ZSTDMT_CCtxParam_setMTCtxParameter(CCtxParams, ZSTDMT_p_jobSize, value);
#endif
case ZSTD_p_overlapSizeLog :
#ifndef ZSTD_MULTITHREAD
return ERROR(parameter_unsupported);
#else
- if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
- return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_overlapSectionLog, value);
+ if (CCtxParams->nbThreads <= 1) return ERROR(parameter_unsupported);
+ return ZSTDMT_CCtxParam_setMTCtxParameter(CCtxParams, ZSTDMT_p_overlapSectionLog, value);
#endif
case ZSTD_p_enableLongDistanceMatching :
- if (value != 0) {
- ZSTD_cLevelToCCtxParams(params);
- params->cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG;
+ if (value) {
+ ZSTD_cLevelToCCtxParams(CCtxParams);
+ CCtxParams->cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG;
}
- return ZSTD_ldm_initializeParameters(&params->ldmParams, value);
+ return ZSTD_ldm_initializeParameters(&CCtxParams->ldmParams, value);
case ZSTD_p_ldmHashLog :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
- params->ldmParams.hashLog = value;
- return 0;
+ if (value) { /* 0 : does not change current ldmHashLog */
+ CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
+ CCtxParams->ldmParams.hashLog = value;
+ }
+ return CCtxParams->ldmParams.hashLog;
case ZSTD_p_ldmMinMatch :
- if (value == 0) return 0;
- CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX);
- params->ldmParams.minMatchLength = value;
- return 0;
+ if (value) { /* 0 : does not change current ldmMinMatch */
+ CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX);
+ CCtxParams->ldmParams.minMatchLength = value;
+ }
+ return CCtxParams->ldmParams.minMatchLength;
case ZSTD_p_ldmBucketSizeLog :
if (value > ZSTD_LDM_BUCKETSIZELOG_MAX) {
return ERROR(parameter_outOfBound);
}
- params->ldmParams.bucketSizeLog = value;
- return 0;
+ CCtxParams->ldmParams.bucketSizeLog = value;
+ return value;
case ZSTD_p_ldmHashEveryLog :
if (value > ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN) {
return ERROR(parameter_outOfBound);
}
- params->ldmParams.hashEveryLog = value;
- return 0;
+ CCtxParams->ldmParams.hashEveryLog = value;
+ return value;
default: return ERROR(parameter_unsupported);
}
}
-/**
- * This function should be updated whenever ZSTD_CCtx_params is updated.
- * Parameters are copied manually before the dictionary is loaded.
- * The multithreading parameters jobSize and overlapSizeLog are set only if
- * nbThreads > 1.
- *
- * Pledged srcSize is treated as unknown.
+/** ZSTD_CCtx_setParametersUsingCCtxParams() :
+ * just applies `params` into `cctx`
+ * no action is performed, parameters are merely stored.
*/
size_t ZSTD_CCtx_setParametersUsingCCtxParams(
ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params)
@@ -485,33 +477,14 @@ size_t ZSTD_CCtx_setParametersUsingCCtxParams(
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
if (cctx->cdict) return ERROR(stage_wrong);
- /* Assume the compression and frame parameters are validated */
- cctx->requestedParams.cParams = params->cParams;
- cctx->requestedParams.fParams = params->fParams;
- cctx->requestedParams.compressionLevel = params->compressionLevel;
-
- /* Set force window explicitly since it sets cctx->loadedDictEnd */
- CHECK_F( ZSTD_CCtx_setParameter(
- cctx, ZSTD_p_forceMaxWindow, params->forceWindow) );
-
- /* Set multithreading parameters explicitly */
- CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_nbThreads, params->nbThreads) );
- if (params->nbThreads > 1) {
- CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_jobSize, params->jobSize) );
- CHECK_F( ZSTD_CCtx_setParameter(
- cctx, ZSTD_p_overlapSizeLog, params->overlapSizeLog) );
- }
+ cctx->requestedParams = *params;
- /* Copy long distance matching parameters */
- cctx->requestedParams.ldmParams = params->ldmParams;
-
- /* customMem is used only for create/free params and can be ignored */
return 0;
}
ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize)
{
- DEBUGLOG(4, " setting pledgedSrcSize to %u", (U32)pledgedSrcSize);
+ DEBUGLOG(4, "ZSTD_CCtx_setPledgedSrcSize to %u bytes", (U32)pledgedSrcSize);
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1;
return 0;
@@ -523,14 +496,14 @@ size_t ZSTD_CCtx_loadDictionary_advanced(
{
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
if (cctx->staticSize) return ERROR(memory_allocation); /* no malloc for static CCtx */
- DEBUGLOG(4, "load dictionary of size %u", (U32)dictSize);
+ DEBUGLOG(4, "ZSTD_CCtx_loadDictionary_advanced (size: %u)", (U32)dictSize);
ZSTD_freeCDict(cctx->cdictLocal); /* in case one already exists */
if (dict==NULL || dictSize==0) { /* no dictionary mode */
cctx->cdictLocal = NULL;
cctx->cdict = NULL;
} else {
ZSTD_compressionParameters const cParams =
- ZSTD_getCParamsFromCCtxParams(cctx->requestedParams, 0, dictSize);
+ ZSTD_getCParamsFromCCtxParams(cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, dictSize);
cctx->cdictLocal = ZSTD_createCDict_advanced(
dict, dictSize,
dictLoadMethod, dictMode,
@@ -756,10 +729,7 @@ size_t ZSTD_estimateCStreamSize(int compressionLevel) {
static U32 ZSTD_equivalentCParams(ZSTD_compressionParameters cParams1,
ZSTD_compressionParameters cParams2)
{
- U32 bslog1 = MIN(cParams1.windowLog, ZSTD_BLOCKSIZELOG_MAX);
- U32 bslog2 = MIN(cParams2.windowLog, ZSTD_BLOCKSIZELOG_MAX);
- return (bslog1 == bslog2) /* same block size */
- & (cParams1.hashLog == cParams2.hashLog)
+ return (cParams1.hashLog == cParams2.hashLog)
& (cParams1.chainLog == cParams2.chainLog)
& (cParams1.strategy == cParams2.strategy) /* opt parser space */
& ((cParams1.searchLength==3) == (cParams2.searchLength==3)); /* hashlog3 space */
@@ -778,12 +748,38 @@ static U32 ZSTD_equivalentLdmParams(ldmParams_t ldmParams1,
ldmParams1.hashEveryLog == ldmParams2.hashEveryLog);
}
+typedef enum { ZSTDb_not_buffered, ZSTDb_buffered } ZSTD_buffered_policy_e;
+
+/* ZSTD_sufficientBuff() :
+ * check internal buffers exist for streaming if buffPol == ZSTDb_buffered .
+ * Note : they are assumed to be correctly sized if ZSTD_equivalentCParams()==1 */
+static U32 ZSTD_sufficientBuff(size_t bufferSize1, size_t blockSize1,
+ ZSTD_buffered_policy_e buffPol2,
+ ZSTD_compressionParameters cParams2,
+ U64 pledgedSrcSize)
+{
+ size_t const windowSize2 = MAX(1, (size_t)MIN(((U64)1 << cParams2.windowLog), pledgedSrcSize));
+ size_t const blockSize2 = MIN(ZSTD_BLOCKSIZE_MAX, windowSize2);
+ size_t const neededBufferSize2 = (buffPol2==ZSTDb_buffered) ? windowSize2 + blockSize2 : 0;
+ DEBUGLOG(4, "ZSTD_sufficientBuff: windowSize2=%u from wlog=%u",
+ (U32)windowSize2, cParams2.windowLog);
+ DEBUGLOG(4, "ZSTD_sufficientBuff: blockSize2 %u <=? blockSize1 %u",
+ (U32)blockSize2, (U32)blockSize1);
+ return (blockSize2 <= blockSize1) /* seqStore space depends on blockSize */
+ & (neededBufferSize2 <= bufferSize1);
+}
+
/** Equivalence for resetCCtx purposes */
static U32 ZSTD_equivalentParams(ZSTD_CCtx_params params1,
- ZSTD_CCtx_params params2)
+ ZSTD_CCtx_params params2,
+ size_t buffSize1, size_t blockSize1,
+ ZSTD_buffered_policy_e buffPol2,
+ U64 pledgedSrcSize)
{
+ DEBUGLOG(4, "ZSTD_equivalentParams: pledgedSrcSize=%u", (U32)pledgedSrcSize);
return ZSTD_equivalentCParams(params1.cParams, params2.cParams) &&
- ZSTD_equivalentLdmParams(params1.ldmParams, params2.ldmParams);
+ ZSTD_equivalentLdmParams(params1.ldmParams, params2.ldmParams) &&
+ ZSTD_sufficientBuff(buffSize1, blockSize1, buffPol2, params2.cParams, pledgedSrcSize);
}
/*! ZSTD_continueCCtx() :
@@ -791,7 +787,11 @@ static U32 ZSTD_equivalentParams(ZSTD_CCtx_params params1,
static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_CCtx_params params, U64 pledgedSrcSize)
{
U32 const end = (U32)(cctx->nextSrc - cctx->base);
- DEBUGLOG(4, "continue mode");
+ size_t const windowSize = MAX(1, (size_t)MIN(((U64)1 << params.cParams.windowLog), pledgedSrcSize));
+ size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, windowSize);
+ DEBUGLOG(4, "ZSTD_continueCCtx");
+
+ cctx->blockSize = blockSize; /* previous block size could be different even for same windowLog, due to pledgedSrcSize */
cctx->appliedParams = params;
cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1;
cctx->consumedSrcSize = 0;
@@ -812,7 +812,6 @@ static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_CCtx_params params, U64 pl
}
typedef enum { ZSTDcrp_continue, ZSTDcrp_noMemset } ZSTD_compResetPolicy_e;
-typedef enum { ZSTDb_not_buffered, ZSTDb_buffered } ZSTD_buffered_policy_e;
/*! ZSTD_resetCCtx_internal() :
note : `params` are assumed fully validated at this stage */
@@ -821,13 +820,16 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
ZSTD_compResetPolicy_e const crp,
ZSTD_buffered_policy_e const zbuff)
{
- DEBUGLOG(4, "ZSTD_resetCCtx_internal");
+ DEBUGLOG(4, "ZSTD_resetCCtx_internal: pledgedSrcSize=%u, wlog=%u",
+ (U32)pledgedSrcSize, params.cParams.windowLog);
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
- DEBUGLOG(4, "pledgedSrcSize: %u", (U32)pledgedSrcSize);
if (crp == ZSTDcrp_continue) {
- if (ZSTD_equivalentParams(params, zc->appliedParams)) {
- DEBUGLOG(4, "ZSTD_equivalentParams()==1");
+ if (ZSTD_equivalentParams(zc->appliedParams, params,
+ zc->inBuffSize, zc->blockSize,
+ zbuff, pledgedSrcSize)) {
+ DEBUGLOG(4, "ZSTD_equivalentParams()==1 -> continue mode (wLog1=%u, blockSize1=%u)",
+ zc->appliedParams.cParams.windowLog, (U32)zc->blockSize);
assert(!(params.ldmParams.enableLdm &&
params.ldmParams.hashEveryLog == ZSTD_LDM_HASHEVERYLOG_NOTSET));
zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
@@ -836,6 +838,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
zc->entropy->litlength_repeatMode = FSE_repeat_none;
return ZSTD_continueCCtx(zc, params, pledgedSrcSize);
} }
+ DEBUGLOG(4, "ZSTD_equivalentParams()==0 -> reset CCtx");
if (params.ldmParams.enableLdm) {
/* Adjust long distance matching parameters */
@@ -846,7 +849,8 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
ZSTD_ldm_getHashPower(params.ldmParams.minMatchLength);
}
- { size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << params.cParams.windowLog);
+ { size_t const windowSize = MAX(1, (size_t)MIN(((U64)1 << params.cParams.windowLog), pledgedSrcSize));
+ size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, windowSize);
U32 const divider = (params.cParams.searchLength==3) ? 3 : 4;
size_t const maxNbSeq = blockSize / divider;
size_t const tokenSpace = blockSize + 11*maxNbSeq;
@@ -858,7 +862,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
size_t const h3Size = ((size_t)1) << hashLog3;
size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
size_t const buffOutSize = (zbuff==ZSTDb_buffered) ? ZSTD_compressBound(blockSize)+1 : 0;
- size_t const buffInSize = (zbuff==ZSTDb_buffered) ? ((size_t)1 << params.cParams.windowLog) + blockSize : 0;
+ size_t const buffInSize = (zbuff==ZSTDb_buffered) ? windowSize + blockSize : 0;
void* ptr;
/* Check if workSpace is large enough, alloc a new one if needed */
@@ -874,11 +878,15 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
: 0;
size_t const neededSpace = entropySpace + optSpace + ldmSpace +
tableSpace + tokenSpace + bufferSpace;
+ DEBUGLOG(4, "Need %uKB workspace, including %uKB for tables, and %uKB for buffers",
+ (U32)(neededSpace>>10), (U32)(tableSpace>>10), (U32)(bufferSpace>>10));
+ DEBUGLOG(4, "chainSize: %u - hSize: %u - h3Size: %u - windowSize: %u - blockSize: %u",
+ (U32)chainSize, (U32)hSize, (U32)h3Size, (U32)windowSize, (U32)blockSize);
if (zc->workSpaceSize < neededSpace) { /* too small : resize */
- DEBUGLOG(5, "Need to update workSpaceSize from %uK to %uK \n",
- (unsigned)zc->workSpaceSize>>10,
- (unsigned)neededSpace>>10);
+ DEBUGLOG(4, "Need to update workSpaceSize from %uK to %uK",
+ (unsigned)(zc->workSpaceSize>>10),
+ (unsigned)(neededSpace>>10));
/* static cctx : no resize, error out */
if (zc->staticSize) return ERROR(memory_allocation);
@@ -901,7 +909,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
zc->consumedSrcSize = 0;
if (pledgedSrcSize == ZSTD_CONTENTSIZE_UNKNOWN)
zc->appliedParams.fParams.contentSizeFlag = 0;
- DEBUGLOG(5, "pledged content size : %u ; flag : %u",
+ DEBUGLOG(4, "pledged content size : %u ; flag : %u",
(U32)pledgedSrcSize, zc->appliedParams.fParams.contentSizeFlag);
zc->blockSize = blockSize;
@@ -927,7 +935,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
/* opt parser space */
if ((params.cParams.strategy == ZSTD_btopt) || (params.cParams.strategy == ZSTD_btultra)) {
- DEBUGLOG(5, "reserving optimal parser space");
+ DEBUGLOG(4, "reserving optimal parser space");
assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */
zc->optState.litFreq = (U32*)ptr;
zc->optState.litLengthFreq = zc->optState.litFreq + (1<<Litbits);
@@ -951,6 +959,7 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
}
/* table Space */
+ DEBUGLOG(4, "reset table : %u", crp!=ZSTDcrp_noMemset);
if (crp!=ZSTDcrp_noMemset) memset(ptr, 0, tableSpace); /* reset tables only */
assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */
zc->hashTable = (U32*)(ptr);
@@ -999,15 +1008,16 @@ void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx) {
/*! ZSTD_copyCCtx_internal() :
* Duplicate an existing context `srcCCtx` into another one `dstCCtx`.
- * The "context", in this case, refers to the hash and chain tables, entropy
- * tables, and dictionary offsets.
* Only works during stage ZSTDcs_init (i.e. after creation, but before first call to ZSTD_compressContinue()).
- * pledgedSrcSize=0 means "empty" if fParams.contentSizeFlag=1
- * @return : 0, or an error code */
+ * The "context", in this case, refers to the hash and chain tables,
+ * entropy tables, and dictionary references.
+ * `windowLog` value is enforced if != 0, otherwise value is copied from srcCCtx.
+ * @return : 0, or an error code */
static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
const ZSTD_CCtx* srcCCtx,
+ unsigned windowLog,
ZSTD_frameParameters fParams,
- unsigned long long pledgedSrcSize,
+ U64 pledgedSrcSize,
ZSTD_buffered_policy_e zbuff)
{
DEBUGLOG(5, "ZSTD_copyCCtx_internal");
@@ -1017,6 +1027,7 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
{ ZSTD_CCtx_params params = dstCCtx->requestedParams;
/* Copy only compression parameters related to tables. */
params.cParams = srcCCtx->appliedParams.cParams;
+ if (windowLog) params.cParams.windowLog = windowLog;
params.fParams = fParams;
ZSTD_resetCCtx_internal(dstCCtx, params, pledgedSrcSize,
ZSTDcrp_noMemset, zbuff);
@@ -1045,6 +1056,12 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
/* copy entropy tables */
memcpy(dstCCtx->entropy, srcCCtx->entropy, sizeof(ZSTD_entropyCTables_t));
+ /* copy repcodes */
+ {
+ int i;
+ for (i = 0; i < ZSTD_REP_NUM; ++i)
+ dstCCtx->seqStore.rep[i] = srcCCtx->seqStore.rep[i];
+ }
return 0;
}
@@ -1059,9 +1076,12 @@ size_t ZSTD_copyCCtx(ZSTD_CCtx* dstCCtx, const ZSTD_CCtx* srcCCtx, unsigned long
ZSTD_frameParameters fParams = { 1 /*content*/, 0 /*checksum*/, 0 /*noDictID*/ };
ZSTD_buffered_policy_e const zbuff = (ZSTD_buffered_policy_e)(srcCCtx->inBuffSize>0);
ZSTD_STATIC_ASSERT((U32)ZSTDb_buffered==1);
- fParams.contentSizeFlag = pledgedSrcSize>0;
+ if (pledgedSrcSize==0) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN;
+ fParams.contentSizeFlag = (pledgedSrcSize != ZSTD_CONTENTSIZE_UNKNOWN);
- return ZSTD_copyCCtx_internal(dstCCtx, srcCCtx, fParams, pledgedSrcSize, zbuff);
+ return ZSTD_copyCCtx_internal(dstCCtx, srcCCtx,
+ 0 /*windowLog from srcCCtx*/, fParams, pledgedSrcSize,
+ zbuff);
}
@@ -1238,7 +1258,7 @@ static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy,
ostart[4] = (BYTE)(cLitSize >> 10);
break;
}
- default: /* not possible : lhSize is {3,4,5} */
+ default: /* not possible : lhSize is {3,4,5} */
assert(0);
}
return lhSize+cLitSize;
@@ -1247,8 +1267,6 @@ static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy,
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
{
- BYTE const LL_deltaCode = 19;
- BYTE const ML_deltaCode = 36;
const seqDef* const sequences = seqStorePtr->sequencesStart;
BYTE* const llCodeTable = seqStorePtr->llCode;
BYTE* const ofCodeTable = seqStorePtr->ofCode;
@@ -1258,9 +1276,9 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
for (u=0; u<nbSeq; u++) {
U32 const llv = sequences[u].litLength;
U32 const mlv = sequences[u].matchLength;
- llCodeTable[u] = (llv> 63) ? (BYTE)ZSTD_highbit32(llv) + LL_deltaCode : LL_Code[llv];
+ llCodeTable[u] = (BYTE)ZSTD_LLcode(llv);
ofCodeTable[u] = (BYTE)ZSTD_highbit32(sequences[u].offset);
- mlCodeTable[u] = (mlv>127) ? (BYTE)ZSTD_highbit32(mlv) + ML_deltaCode : ML_Code[mlv];
+ mlCodeTable[u] = (BYTE)ZSTD_MLcode(mlv);
}
if (seqStorePtr->longLengthID==1)
llCodeTable[seqStorePtr->longLengthPos] = MaxLL;
@@ -1273,7 +1291,8 @@ typedef enum {
ZSTD_defaultAllowed = 1
} ZSTD_defaultPolicy_e;
-MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(
+MEM_STATIC
+symbolEncodingType_e ZSTD_selectEncodingType(
FSE_repeat* repeatMode, size_t const mostFrequent, size_t nbSeq,
U32 defaultNormLog, ZSTD_defaultPolicy_e const isDefaultAllowed)
{
@@ -1281,6 +1300,7 @@ MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(
#define MAX_SEQ_FOR_STATIC_FSE 1000
ZSTD_STATIC_ASSERT(ZSTD_defaultDisallowed == 0 && ZSTD_defaultAllowed != 0);
if ((mostFrequent == nbSeq) && (!isDefaultAllowed || nbSeq > 2)) {
+ DEBUGLOG(5, "Selected set_rle");
/* Prefer set_basic over set_rle when there are 2 or less symbols,
* since RLE uses 1 byte, but set_basic uses 5-6 bits per symbol.
* If basic encoding isn't possible, always choose RLE.
@@ -1288,18 +1308,30 @@ MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(
*repeatMode = FSE_repeat_check;
return set_rle;
}
- if (isDefaultAllowed && (*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
+ if ( isDefaultAllowed
+ && (*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
+ DEBUGLOG(5, "Selected set_repeat");
return set_repeat;
}
- if (isDefaultAllowed && ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1))))) {
- *repeatMode = FSE_repeat_valid;
+ if ( isDefaultAllowed
+ && ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1)))) ) {
+ DEBUGLOG(5, "Selected set_basic");
+ /* The format allows default tables to be repeated, but it isn't useful.
+ * When using simple heuristics to select encoding type, we don't want
+ * to confuse these tables with dictionaries. When running more careful
+ * analysis, we don't need to waste time checking both repeating tables
+ * and default tables.
+ */
+ *repeatMode = FSE_repeat_none;
return set_basic;
}
+ DEBUGLOG(5, "Selected set_compressed");
*repeatMode = FSE_repeat_check;
return set_compressed;
}
-MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
+MEM_STATIC
+size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
FSE_CTable* CTable, U32 FSELog, symbolEncodingType_e type,
U32* count, U32 max,
BYTE const* codeTable, size_t nbSeq,
@@ -1317,7 +1349,7 @@ MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
case set_repeat:
return 0;
case set_basic:
- CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize));
+ CHECK_F(FSE_buildCTable_wksp(CTable, defaultNorm, defaultMax, defaultNormLog, workspace, workspaceSize)); /* note : could be pre-calculated */
return 0;
case set_compressed: {
S16 norm[MaxSeq + 1];
@@ -1339,11 +1371,13 @@ MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
}
}
-MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
- FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
- FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
- FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
- seqDef const* sequences, size_t nbSeq, int longOffsets)
+MEM_STATIC
+size_t ZSTD_encodeSequences(
+ void* dst, size_t dstCapacity,
+ FSE_CTable const* CTable_MatchLength, BYTE const* mlCodeTable,
+ FSE_CTable const* CTable_OffsetBits, BYTE const* ofCodeTable,
+ FSE_CTable const* CTable_LitLength, BYTE const* llCodeTable,
+ seqDef const* sequences, size_t nbSeq, int longOffsets)
{
BIT_CStream_t blockStream;
FSE_CState_t stateMatchLength;
@@ -1380,8 +1414,12 @@ MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
BYTE const ofCode = ofCodeTable[n];
BYTE const mlCode = mlCodeTable[n];
U32 const llBits = LL_bits[llCode];
- U32 const ofBits = ofCode; /* 32b*/ /* 64b*/
+ U32 const ofBits = ofCode;
U32 const mlBits = ML_bits[mlCode];
+ DEBUGLOG(6, "encoding: litlen:%2u - matchlen:%2u - offCode:%7u",
+ sequences[n].litLength,
+ sequences[n].matchLength + MINMATCH,
+ sequences[n].offset); /* 32b*/ /* 64b*/
/* (7)*/ /* (7)*/
FSE_encodeSymbol(&blockStream, &stateOffsetBits, ofCode); /* 15 */ /* 15 */
FSE_encodeSymbol(&blockStream, &stateMatchLength, mlCode); /* 24 */ /* 24 */
@@ -1447,14 +1485,18 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
entropy, cParams->strategy, op, dstCapacity, literals, litSize);
if (ZSTD_isError(cSize))
return cSize;
+ assert(cSize <= dstCapacity);
op += cSize;
}
/* Sequences Header */
- if ((oend-op) < 3 /*max nbSeq Size*/ + 1 /*seqHead */) return ERROR(dstSize_tooSmall);
- if (nbSeq < 0x7F) *op++ = (BYTE)nbSeq;
- else if (nbSeq < LONGNBSEQ) op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
- else op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
+ if ((oend-op) < 3 /*max nbSeq Size*/ + 1 /*seqHead*/) return ERROR(dstSize_tooSmall);
+ if (nbSeq < 0x7F)
+ *op++ = (BYTE)nbSeq;
+ else if (nbSeq < LONGNBSEQ)
+ op[0] = (BYTE)((nbSeq>>8) + 0x80), op[1] = (BYTE)nbSeq, op+=2;
+ else
+ op[0]=0xFF, MEM_writeLE16(op+1, (U16)(nbSeq - LONGNBSEQ)), op+=3;
if (nbSeq==0) return op - ostart;
/* seqHead : flags for FSE encoding type */
@@ -1462,9 +1504,10 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
/* convert length/distances into codes */
ZSTD_seqToCodes(seqStorePtr);
- /* CTable for Literal Lengths */
+ /* build CTable for Literal Lengths */
{ U32 max = MaxLL;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, entropy->workspace);
+ DEBUGLOG(5, "Building LL table");
LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog, ZSTD_defaultAllowed);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_LitLength, LLFSELog, (symbolEncodingType_e)LLtype,
count, max, llCodeTable, nbSeq, LL_defaultNorm, LL_defaultNormLog, MaxLL,
@@ -1472,11 +1515,12 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
if (ZSTD_isError(countSize)) return countSize;
op += countSize;
} }
- /* CTable for Offsets */
+ /* build CTable for Offsets */
{ U32 max = MaxOff;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, entropy->workspace);
/* We can only use the basic table if max <= DefaultMaxOff, otherwise the offsets are too large */
- ZSTD_defaultPolicy_e const defaultPolicy = max <= DefaultMaxOff ? ZSTD_defaultAllowed : ZSTD_defaultDisallowed;
+ ZSTD_defaultPolicy_e const defaultPolicy = (max <= DefaultMaxOff) ? ZSTD_defaultAllowed : ZSTD_defaultDisallowed;
+ DEBUGLOG(5, "Building OF table");
Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog, defaultPolicy);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_OffsetBits, OffFSELog, (symbolEncodingType_e)Offtype,
count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, DefaultMaxOff,
@@ -1484,9 +1528,10 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
if (ZSTD_isError(countSize)) return countSize;
op += countSize;
} }
- /* CTable for MatchLengths */
+ /* build CTable for MatchLengths */
{ U32 max = MaxML;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, entropy->workspace);
+ DEBUGLOG(5, "Building ML table");
MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog, ZSTD_defaultAllowed);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_MatchLength, MLFSELog, (symbolEncodingType_e)MLtype,
count, max, mlCodeTable, nbSeq, ML_defaultNorm, ML_defaultNormLog, MaxML,
@@ -1497,13 +1542,15 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
*seqHead = (BYTE)((LLtype<<6) + (Offtype<<4) + (MLtype<<2));
- { size_t const streamSize = ZSTD_encodeSequences(op, oend - op,
- CTable_MatchLength, mlCodeTable,
- CTable_OffsetBits, ofCodeTable,
- CTable_LitLength, llCodeTable,
- sequences, nbSeq, longOffsets);
- if (ZSTD_isError(streamSize)) return streamSize;
- op += streamSize;
+ { size_t const bitstreamSize = ZSTD_encodeSequences(
+ op, oend - op,
+ CTable_MatchLength, mlCodeTable,
+ CTable_OffsetBits, ofCodeTable,
+ CTable_LitLength, llCodeTable,
+ sequences, nbSeq,
+ longOffsets);
+ if (ZSTD_isError(bitstreamSize)) return bitstreamSize;
+ op += bitstreamSize;
}
return op - ostart;
@@ -1517,27 +1564,33 @@ MEM_STATIC size_t ZSTD_compressSequences(seqStore_t* seqStorePtr,
{
size_t const cSize = ZSTD_compressSequences_internal(seqStorePtr, entropy, cParams,
dst, dstCapacity);
- size_t const minGain = ZSTD_minGain(srcSize);
- size_t const maxCSize = srcSize - minGain;
/* If the srcSize <= dstCapacity, then there is enough space to write a
* raw uncompressed block. Since we ran out of space, the block must not
* be compressible, so fall back to a raw uncompressed block.
*/
- int const uncompressibleError = cSize == ERROR(dstSize_tooSmall) && srcSize <= dstCapacity;
-
+ int const uncompressibleError = (cSize == ERROR(dstSize_tooSmall)) && (srcSize <= dstCapacity);
if (ZSTD_isError(cSize) && !uncompressibleError)
return cSize;
+ /* We check that dictionaries have offset codes available for the first
+ * block. After the first block, the offcode table might not have large
+ * enough codes to represent the offsets in the data.
+ */
+ if (entropy->offcode_repeatMode == FSE_repeat_valid)
+ entropy->offcode_repeatMode = FSE_repeat_check;
+
/* Check compressibility */
- if (cSize >= maxCSize || uncompressibleError) {
- entropy->hufCTable_repeatMode = HUF_repeat_none;
- entropy->offcode_repeatMode = FSE_repeat_none;
- entropy->matchlength_repeatMode = FSE_repeat_none;
- entropy->litlength_repeatMode = FSE_repeat_none;
- return 0;
- }
+ { size_t const minGain = ZSTD_minGain(srcSize); /* note : fixed formula, maybe should depend on compression level, or strategy */
+ size_t const maxCSize = srcSize - minGain;
+ if (cSize >= maxCSize || uncompressibleError) {
+ entropy->hufCTable_repeatMode = HUF_repeat_none;
+ entropy->offcode_repeatMode = FSE_repeat_none;
+ entropy->matchlength_repeatMode = FSE_repeat_none;
+ entropy->litlength_repeatMode = FSE_repeat_none;
+ return 0; /* block not compressed */
+ } }
assert(!ZSTD_isError(cSize));
- /* confirm repcodes */
+ /* block is compressed => confirm repcodes in history */
{ int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->rep[i] = seqStorePtr->repToConfirm[i]; }
return cSize;
}
@@ -1559,9 +1612,9 @@ ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict
ZSTD_compressBlock_btopt_extDict, ZSTD_compressBlock_btultra_extDict }
};
ZSTD_STATIC_ASSERT((unsigned)ZSTD_fast == 1);
+
assert((U32)strat >= (U32)ZSTD_fast);
assert((U32)strat <= (U32)ZSTD_btultra);
-
return blockCompressor[extDict!=0][(U32)strat];
}
@@ -1572,30 +1625,38 @@ static void ZSTD_storeLastLiterals(seqStore_t* seqStorePtr,
seqStorePtr->lit += lastLLSize;
}
+static void ZSTD_resetSeqStore(seqStore_t* ssPtr)
+{
+ ssPtr->lit = ssPtr->litStart;
+ ssPtr->sequences = ssPtr->sequencesStart;
+ ssPtr->longLengthID = 0;
+}
+
static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCapacity, const void* src, size_t srcSize)
{
- const BYTE* const base = zc->base;
- const BYTE* const istart = (const BYTE*)src;
- const U32 current = (U32)(istart-base);
- size_t lastLLSize;
- const BYTE* anchor;
- U32 const extDict = zc->lowLimit < zc->dictLimit;
- const ZSTD_blockCompressor blockCompressor =
- zc->appliedParams.ldmParams.enableLdm
- ? (extDict ? ZSTD_compressBlock_ldm_extDict : ZSTD_compressBlock_ldm)
- : ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, extDict);
-
- if (srcSize < MIN_CBLOCK_SIZE+ZSTD_blockHeaderSize+1) return 0; /* don't even attempt compression below a certain srcSize */
+ DEBUGLOG(5, "ZSTD_compressBlock_internal : dstCapacity = %u", (U32)dstCapacity);
+ if (srcSize < MIN_CBLOCK_SIZE+ZSTD_blockHeaderSize+1)
+ return 0; /* don't even attempt compression below a certain srcSize */
ZSTD_resetSeqStore(&(zc->seqStore));
- if (current > zc->nextToUpdate + 384)
- zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384)); /* limited update after finding a very long match */
-
- lastLLSize = blockCompressor(zc, src, srcSize);
-
- /* Last literals */
- anchor = (const BYTE*)src + srcSize - lastLLSize;
- ZSTD_storeLastLiterals(&zc->seqStore, anchor, lastLLSize);
+ /* limited update after a very long match */
+ { const BYTE* const base = zc->base;
+ const BYTE* const istart = (const BYTE*)src;
+ const U32 current = (U32)(istart-base);
+ if (current > zc->nextToUpdate + 384)
+ zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384));
+ }
+ /* find and store sequences */
+ { U32 const extDict = zc->lowLimit < zc->dictLimit;
+ const ZSTD_blockCompressor blockCompressor =
+ zc->appliedParams.ldmParams.enableLdm
+ ? (extDict ? ZSTD_compressBlock_ldm_extDict : ZSTD_compressBlock_ldm)
+ : ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, extDict);
+ size_t const lastLLSize = blockCompressor(zc, src, srcSize);
+ const BYTE* const anchor = (const BYTE*)src + srcSize - lastLLSize;
+ ZSTD_storeLastLiterals(&zc->seqStore, anchor, lastLLSize);
+ }
+ /* encode */
return ZSTD_compressSequences(&zc->seqStore, zc->entropy, &zc->appliedParams.cParams, dst, dstCapacity, srcSize);
}
@@ -1618,13 +1679,14 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
BYTE* const ostart = (BYTE*)dst;
BYTE* op = ostart;
U32 const maxDist = (U32)1 << cctx->appliedParams.cParams.windowLog;
+ assert(cctx->appliedParams.cParams.windowLog <= 31);
+ DEBUGLOG(5, "ZSTD_compress_frameChunk (blockSize=%u)", (U32)blockSize);
if (cctx->appliedParams.fParams.checksumFlag && srcSize)
XXH64_update(&cctx->xxhState, src, srcSize);
while (remaining) {
U32 const lastBlock = lastFrameChunk & (blockSize >= remaining);
- size_t cSize;
if (dstCapacity < ZSTD_blockHeaderSize + MIN_CBLOCK_SIZE)
return ERROR(dstSize_tooSmall); /* not enough space to store compressed block */
@@ -1666,34 +1728,39 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
else cctx->nextToUpdate -= correction;
DEBUGLOG(4, "Correction of 0x%x bytes to lowLimit=0x%x\n", correction, cctx->lowLimit);
}
-
+ /* enforce maxDist */
if ((U32)(ip+blockSize - cctx->base) > cctx->loadedDictEnd + maxDist) {
- /* enforce maxDist */
U32 const newLowLimit = (U32)(ip+blockSize - cctx->base) - maxDist;
if (cctx->lowLimit < newLowLimit) cctx->lowLimit = newLowLimit;
if (cctx->dictLimit < cctx->lowLimit) cctx->dictLimit = cctx->lowLimit;
}
- cSize = ZSTD_compressBlock_internal(cctx, op+ZSTD_blockHeaderSize, dstCapacity-ZSTD_blockHeaderSize, ip, blockSize);
- if (ZSTD_isError(cSize)) return cSize;
-
- if (cSize == 0) { /* block is not compressible */
- U32 const cBlockHeader24 = lastBlock + (((U32)bt_raw)<<1) + (U32)(blockSize << 3);
- if (blockSize + ZSTD_blockHeaderSize > dstCapacity) return ERROR(dstSize_tooSmall);
- MEM_writeLE32(op, cBlockHeader24); /* no pb, 4th byte will be overwritten */
- memcpy(op + ZSTD_blockHeaderSize, ip, blockSize);
- cSize = ZSTD_blockHeaderSize+blockSize;
- } else {
- U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3);
- MEM_writeLE24(op, cBlockHeader24);
- cSize += ZSTD_blockHeaderSize;
- }
+ { size_t cSize = ZSTD_compressBlock_internal(cctx,
+ op+ZSTD_blockHeaderSize, dstCapacity-ZSTD_blockHeaderSize,
+ ip, blockSize);
+ if (ZSTD_isError(cSize)) return cSize;
+
+ if (cSize == 0) { /* block is not compressible */
+ U32 const cBlockHeader24 = lastBlock + (((U32)bt_raw)<<1) + (U32)(blockSize << 3);
+ if (blockSize + ZSTD_blockHeaderSize > dstCapacity) return ERROR(dstSize_tooSmall);
+ MEM_writeLE32(op, cBlockHeader24); /* 4th byte will be overwritten */
+ memcpy(op + ZSTD_blockHeaderSize, ip, blockSize);
+ cSize = ZSTD_blockHeaderSize + blockSize;
+ } else {
+ U32 const cBlockHeader24 = lastBlock + (((U32)bt_compressed)<<1) + (U32)(cSize << 3);
+ MEM_writeLE24(op, cBlockHeader24);
+ cSize += ZSTD_blockHeaderSize;
+ }
- remaining -= blockSize;
- dstCapacity -= cSize;
- ip += blockSize;
- op += cSize;
- }
+ ip += blockSize;
+ assert(remaining >= blockSize);
+ remaining -= blockSize;
+ op += cSize;
+ assert(dstCapacity >= cSize);
+ dstCapacity -= cSize;
+ DEBUGLOG(5, "ZSTD_compress_frameChunk: adding a block of size %u",
+ (U32)cSize);
+ } }
if (lastFrameChunk && (op>ostart)) cctx->stage = ZSTDcs_ending;
return op-ostart;
@@ -1719,7 +1786,6 @@ static size_t ZSTD_writeFrameHeader(void* dst, size_t dstCapacity,
!params.fParams.noDictIDFlag, dictID, dictIDSizeCode);
if (params.format == ZSTD_f_zstd1) {
- DEBUGLOG(4, "writing zstd magic number");
MEM_writeLE32(dst, ZSTD_MAGICNUMBER);
pos = 4;
}
@@ -1753,8 +1819,7 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
const BYTE* const ip = (const BYTE*) src;
size_t fhSize = 0;
- DEBUGLOG(5, "ZSTD_compressContinue_internal");
- DEBUGLOG(5, "stage: %u", cctx->stage);
+ DEBUGLOG(5, "ZSTD_compressContinue_internal, stage: %u", cctx->stage);
if (cctx->stage==ZSTDcs_created) return ERROR(stage_wrong); /* missing init (ZSTD_compressBegin) */
if (frame && (cctx->stage==ZSTDcs_init)) {
@@ -1766,17 +1831,21 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
cctx->stage = ZSTDcs_ongoing;
}
+ if (!srcSize) return fhSize; /* do not generate an empty block if no input */
+
/* Check if blocks follow each other */
if (src != cctx->nextSrc) {
/* not contiguous */
- ptrdiff_t const delta = cctx->nextSrc - ip;
+ size_t const distanceFromBase = (size_t)(cctx->nextSrc - cctx->base);
cctx->lowLimit = cctx->dictLimit;
- cctx->dictLimit = (U32)(cctx->nextSrc - cctx->base);
+ assert(distanceFromBase == (size_t)(U32)distanceFromBase); /* should never overflow */
+ cctx->dictLimit = (U32)distanceFromBase;
cctx->dictBase = cctx->base;
- cctx->base -= delta;
+ cctx->base = ip - distanceFromBase;
cctx->nextToUpdate = cctx->dictLimit;
if (cctx->dictLimit - cctx->lowLimit < HASH_READ_SIZE) cctx->lowLimit = cctx->dictLimit; /* too small extDict */
}
+ cctx->nextSrc = ip + srcSize;
/* if input and dictionary overlap : reduce dictionary (area presumed modified by input) */
if ((ip+srcSize > cctx->dictBase + cctx->lowLimit) & (ip < cctx->dictBase + cctx->dictLimit)) {
@@ -1785,17 +1854,14 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
cctx->lowLimit = lowLimitMax;
}
- cctx->nextSrc = ip + srcSize;
-
- if (srcSize) {
- size_t const cSize = frame ?
+ DEBUGLOG(5, "ZSTD_compressContinue_internal (blockSize=%u)", (U32)cctx->blockSize);
+ { size_t const cSize = frame ?
ZSTD_compress_frameChunk (cctx, dst, dstCapacity, src, srcSize, lastFrameChunk) :
ZSTD_compressBlock_internal (cctx, dst, dstCapacity, src, srcSize);
if (ZSTD_isError(cSize)) return cSize;
cctx->consumedSrcSize += srcSize;
return cSize + fhSize;
- } else
- return fhSize;
+ }
}
size_t ZSTD_compressContinue (ZSTD_CCtx* cctx,
@@ -1832,7 +1898,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t
zc->lowLimit = zc->dictLimit;
zc->dictLimit = (U32)(zc->nextSrc - zc->base);
zc->dictBase = zc->base;
- zc->base += ip - zc->nextSrc;
+ zc->base = ip - zc->dictLimit;
zc->nextToUpdate = zc->dictLimit;
zc->loadedDictEnd = zc->appliedParams.forceWindow ? 0 : (U32)(iend - zc->base);
@@ -1983,7 +2049,7 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx,
const void* dict, size_t dictSize,
ZSTD_dictMode_e dictMode)
{
- DEBUGLOG(5, "ZSTD_compress_insertDictionary");
+ DEBUGLOG(4, "ZSTD_compress_insertDictionary (dictSize=%u)", (U32)dictSize);
if ((dict==NULL) || (dictSize<=8)) return 0;
/* dict restricted modes */
@@ -1992,7 +2058,7 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx,
if (MEM_readLE32(dict) != ZSTD_MAGIC_DICTIONARY) {
if (dictMode == ZSTD_dm_auto) {
- DEBUGLOG(5, "raw content dictionary detected");
+ DEBUGLOG(4, "raw content dictionary detected");
return ZSTD_loadDictionaryContent(cctx, dict, dictSize);
}
if (dictMode == ZSTD_dm_fullDict)
@@ -2006,21 +2072,22 @@ static size_t ZSTD_compress_insertDictionary(ZSTD_CCtx* cctx,
/*! ZSTD_compressBegin_internal() :
* @return : 0, or an error code */
-static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx,
+size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx,
const void* dict, size_t dictSize,
ZSTD_dictMode_e dictMode,
const ZSTD_CDict* cdict,
- ZSTD_CCtx_params params, U64 pledgedSrcSize,
- ZSTD_buffered_policy_e zbuff)
+ ZSTD_CCtx_params params, U64 pledgedSrcSize,
+ ZSTD_buffered_policy_e zbuff)
{
- DEBUGLOG(4, "ZSTD_compressBegin_internal");
+ DEBUGLOG(4, "ZSTD_compressBegin_internal: wlog=%u", params.cParams.windowLog);
/* params are supposed to be fully validated at this point */
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
if (cdict && cdict->dictContentSize>0) {
+ cctx->requestedParams = params;
return ZSTD_copyCCtx_internal(cctx, cdict->refContext,
- params.fParams, pledgedSrcSize,
+ params.cParams.windowLog, params.fParams, pledgedSrcSize,
zbuff);
}
@@ -2029,16 +2096,19 @@ static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx,
return ZSTD_compress_insertDictionary(cctx, dict, dictSize, dictMode);
}
-size_t ZSTD_compressBegin_advanced_internal(
- ZSTD_CCtx* cctx,
+size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx,
const void* dict, size_t dictSize,
ZSTD_dictMode_e dictMode,
+ const ZSTD_CDict* cdict,
ZSTD_CCtx_params params,
unsigned long long pledgedSrcSize)
{
+ DEBUGLOG(4, "ZSTD_compressBegin_advanced_internal: wlog=%u", params.cParams.windowLog);
/* compression parameters verification and optimization */
CHECK_F( ZSTD_checkCParams(params.cParams) );
- return ZSTD_compressBegin_internal(cctx, dict, dictSize, dictMode, NULL,
+ return ZSTD_compressBegin_internal(cctx,
+ dict, dictSize, dictMode,
+ cdict,
params, pledgedSrcSize,
ZSTDb_not_buffered);
}
@@ -2051,9 +2121,10 @@ size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx,
{
ZSTD_CCtx_params const cctxParams =
ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
- return ZSTD_compressBegin_advanced_internal(cctx, dict, dictSize, ZSTD_dm_auto,
- cctxParams,
- pledgedSrcSize);
+ return ZSTD_compressBegin_advanced_internal(cctx,
+ dict, dictSize, ZSTD_dm_auto,
+ NULL /*cdict*/,
+ cctxParams, pledgedSrcSize);
}
size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel)
@@ -2061,8 +2132,9 @@ size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t di
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize);
ZSTD_CCtx_params const cctxParams =
ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
+ DEBUGLOG(4, "ZSTD_compressBegin_usingDict");
return ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
- cctxParams, 0, ZSTDb_not_buffered);
+ cctxParams, ZSTD_CONTENTSIZE_UNKNOWN, ZSTDb_not_buffered);
}
size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel)
@@ -2143,6 +2215,7 @@ static size_t ZSTD_compress_internal (ZSTD_CCtx* cctx,
{
ZSTD_CCtx_params const cctxParams =
ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
+ DEBUGLOG(4, "ZSTD_compress_internal");
return ZSTD_compress_advanced_internal(cctx,
dst, dstCapacity,
src, srcSize,
@@ -2156,6 +2229,7 @@ size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx,
const void* dict,size_t dictSize,
ZSTD_parameters params)
{
+ DEBUGLOG(4, "ZSTD_compress_advanced");
CHECK_F(ZSTD_checkCParams(params.cParams));
return ZSTD_compress_internal(ctx, dst, dstCapacity, src, srcSize, dict, dictSize, params);
}
@@ -2168,6 +2242,7 @@ size_t ZSTD_compress_advanced_internal(
const void* dict,size_t dictSize,
ZSTD_CCtx_params params)
{
+ DEBUGLOG(4, "ZSTD_compress_advanced_internal");
CHECK_F( ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
params, srcSize, ZSTDb_not_buffered) );
return ZSTD_compressEnd(cctx, dst, dstCapacity, src, srcSize);
@@ -2176,8 +2251,10 @@ size_t ZSTD_compress_advanced_internal(
size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize,
const void* dict, size_t dictSize, int compressionLevel)
{
- ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize, dict ? dictSize : 0);
+ ZSTD_parameters params = ZSTD_getParams(compressionLevel, srcSize ? srcSize : 1, dict ? dictSize : 0);
params.fParams.contentSizeFlag = 1;
+ DEBUGLOG(4, "ZSTD_compress_usingDict (level=%i, srcSize=%u, dictSize=%u)",
+ compressionLevel, (U32)srcSize, (U32)dictSize);
return ZSTD_compress_internal(ctx, dst, dstCapacity, src, srcSize, dict, dictSize, params);
}
@@ -2234,7 +2311,7 @@ static size_t ZSTD_initCDict_internal(
ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams)
{
- DEBUGLOG(5, "ZSTD_initCDict_internal, mode %u", (U32)dictMode);
+ DEBUGLOG(3, "ZSTD_initCDict_internal, mode %u", (U32)dictMode);
if ((dictLoadMethod == ZSTD_dlm_byRef) || (!dictBuffer) || (!dictSize)) {
cdict->dictBuffer = NULL;
cdict->dictContent = dictBuffer;
@@ -2264,7 +2341,7 @@ ZSTD_CDict* ZSTD_createCDict_advanced(const void* dictBuffer, size_t dictSize,
ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams, ZSTD_customMem customMem)
{
- DEBUGLOG(5, "ZSTD_createCDict_advanced, mode %u", (U32)dictMode);
+ DEBUGLOG(3, "ZSTD_createCDict_advanced, mode %u", (U32)dictMode);
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
{ ZSTD_CDict* const cdict = (ZSTD_CDict*)ZSTD_malloc(sizeof(ZSTD_CDict), customMem);
@@ -2339,9 +2416,9 @@ ZSTD_CDict* ZSTD_initStaticCDict(void* workspace, size_t workspaceSize,
+ cctxSize;
ZSTD_CDict* const cdict = (ZSTD_CDict*) workspace;
void* ptr;
- DEBUGLOG(5, "(size_t)workspace & 7 : %u", (U32)(size_t)workspace & 7);
+ DEBUGLOG(4, "(size_t)workspace & 7 : %u", (U32)(size_t)workspace & 7);
if ((size_t)workspace & 7) return NULL; /* 8-aligned */
- DEBUGLOG(5, "(workspaceSize < neededSize) : (%u < %u) => %u",
+ DEBUGLOG(4, "(workspaceSize < neededSize) : (%u < %u) => %u",
(U32)workspaceSize, (U32)neededSize, (U32)(workspaceSize < neededSize));
if (workspaceSize < neededSize) return NULL;
@@ -2373,11 +2450,11 @@ size_t ZSTD_compressBegin_usingCDict_advanced(
ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict,
ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize)
{
+ DEBUGLOG(4, "ZSTD_compressBegin_usingCDict_advanced");
if (cdict==NULL) return ERROR(dictionary_wrong);
{ ZSTD_CCtx_params params = cctx->requestedParams;
params.cParams = ZSTD_getCParamsFromCDict(cdict);
params.fParams = fParams;
- DEBUGLOG(5, "ZSTD_compressBegin_usingCDict_advanced");
return ZSTD_compressBegin_internal(cctx,
NULL, 0, ZSTD_dm_auto,
cdict,
@@ -2392,7 +2469,7 @@ size_t ZSTD_compressBegin_usingCDict_advanced(
size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict)
{
ZSTD_frameParameters const fParams = { 0 /*content*/, 0 /*checksum*/, 0 /*noDictID*/ };
- DEBUGLOG(5, "ZSTD_compressBegin_usingCDict : dictIDFlag == %u", !fParams.noDictIDFlag);
+ DEBUGLOG(4, "ZSTD_compressBegin_usingCDict : dictIDFlag == %u", !fParams.noDictIDFlag);
return ZSTD_compressBegin_usingCDict_advanced(cctx, cdict, fParams, 0);
}
@@ -2427,6 +2504,7 @@ size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx,
ZSTD_CStream* ZSTD_createCStream(void)
{
+ DEBUGLOG(3, "ZSTD_createCStream");
return ZSTD_createCStream_advanced(ZSTD_defaultCMem);
}
@@ -2457,9 +2535,9 @@ size_t ZSTD_CStreamOutSize(void)
}
static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs,
- const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode,
- const ZSTD_CDict* cdict,
- const ZSTD_CCtx_params params, unsigned long long pledgedSrcSize)
+ const void* const dict, size_t const dictSize, ZSTD_dictMode_e const dictMode,
+ const ZSTD_CDict* const cdict,
+ ZSTD_CCtx_params const params, unsigned long long const pledgedSrcSize)
{
DEBUGLOG(4, "ZSTD_resetCStream_internal");
/* params are supposed to be fully validated at this point */
@@ -2467,31 +2545,35 @@ static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs,
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
CHECK_F( ZSTD_compressBegin_internal(zcs,
- dict, dictSize, dictMode,
- cdict,
- params, pledgedSrcSize,
- ZSTDb_buffered) );
+ dict, dictSize, dictMode,
+ cdict,
+ params, pledgedSrcSize,
+ ZSTDb_buffered) );
zcs->inToCompress = 0;
zcs->inBuffPos = 0;
- zcs->inBuffTarget = zcs->blockSize;
+ zcs->inBuffTarget = zcs->blockSize
+ + (zcs->blockSize == pledgedSrcSize); /* for small input: avoid automatic flush on reaching end of block, since it would require to add a 3-bytes null block to end frame */
zcs->outBuffContentSize = zcs->outBuffFlushedSize = 0;
zcs->streamStage = zcss_load;
zcs->frameEnded = 0;
return 0; /* ready to go */
}
+/* ZSTD_resetCStream():
+ * pledgedSrcSize == 0 means "unknown" */
size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize)
{
ZSTD_CCtx_params params = zcs->requestedParams;
- params.fParams.contentSizeFlag = (pledgedSrcSize > 0);
+ DEBUGLOG(4, "ZSTD_resetCStream: pledgedSrcSize = %u", (U32)pledgedSrcSize);
+ if (pledgedSrcSize==0) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN;
+ params.fParams.contentSizeFlag = 1;
params.cParams = ZSTD_getCParamsFromCCtxParams(params, pledgedSrcSize, 0);
- DEBUGLOG(4, "ZSTD_resetCStream");
return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize);
}
/*! ZSTD_initCStream_internal() :
- * Note : not static, but hidden (not exposed). Used by zstdmt_compress.c
+ * Note : for lib/compress only. Used by zstdmt_compress.c.
* Assumption 1 : params are valid
* Assumption 2 : either dict, or cdict, is defined, not both */
size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
@@ -2503,7 +2585,7 @@ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
if (dict && dictSize >= 8) {
- DEBUGLOG(5, "loading dictionary of size %u", (U32)dictSize);
+ DEBUGLOG(4, "loading dictionary of size %u", (U32)dictSize);
if (zcs->staticSize) { /* static CCtx : never uses malloc */
/* incompatible with internal cdict creation */
return ERROR(memory_allocation);
@@ -2516,14 +2598,14 @@ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
if (zcs->cdictLocal == NULL) return ERROR(memory_allocation);
} else {
if (cdict) {
- params.cParams = ZSTD_getCParamsFromCDict(cdict); /* cParams are enforced from cdict */
+ params.cParams = ZSTD_getCParamsFromCDict(cdict); /* cParams are enforced from cdict; it includes windowLog */
}
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = NULL;
zcs->cdict = cdict;
}
- params.compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ params.compressionLevel = ZSTD_CLEVEL_CUSTOM; /* enforce usage of cParams, instead of a dynamic derivation from cLevel (but does that happen ?) */
zcs->requestedParams = params;
return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize);
@@ -2535,8 +2617,9 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs,
const ZSTD_CDict* cdict,
ZSTD_frameParameters fParams,
unsigned long long pledgedSrcSize)
-{ /* cannot handle NULL cdict (does not know what to do) */
- if (!cdict) return ERROR(dictionary_wrong);
+{
+ DEBUGLOG(4, "ZSTD_initCStream_usingCDict_advanced");
+ if (!cdict) return ERROR(dictionary_wrong); /* cannot handle NULL cdict (does not know what to do) */
{ ZSTD_CCtx_params params = zcs->requestedParams;
params.cParams = ZSTD_getCParamsFromCDict(cdict);
params.fParams = fParams;
@@ -2549,18 +2632,25 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs,
/* note : cdict must outlive compression session */
size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict)
{
- ZSTD_frameParameters const fParams = { 0 /* contentSize */, 0 /* checksum */, 0 /* hideDictID */ };
- return ZSTD_initCStream_usingCDict_advanced(zcs, cdict, fParams, 0); /* note : will check that cdict != NULL */
+ ZSTD_frameParameters const fParams = { 0 /* contentSizeFlag */, 0 /* checksum */, 0 /* hideDictID */ };
+ DEBUGLOG(4, "ZSTD_initCStream_usingCDict");
+ return ZSTD_initCStream_usingCDict_advanced(zcs, cdict, fParams, ZSTD_CONTENTSIZE_UNKNOWN); /* note : will check that cdict != NULL */
}
+/* ZSTD_initCStream_advanced() :
+ * pledgedSrcSize must be correct.
+ * if srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN.
+ * dict is loaded with default parameters ZSTD_dm_auto and ZSTD_dlm_byCopy. */
size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs,
const void* dict, size_t dictSize,
ZSTD_parameters params, unsigned long long pledgedSrcSize)
{
- ZSTD_CCtx_params const cctxParams =
- ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
+ ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
+ DEBUGLOG(4, "ZSTD_initCStream_advanced: pledgedSrcSize=%u, flag=%u",
+ (U32)pledgedSrcSize, params.fParams.contentSizeFlag);
CHECK_F( ZSTD_checkCParams(params.cParams) );
- return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, pledgedSrcSize);
+ if ((pledgedSrcSize==0) && (params.fParams.contentSizeFlag==0)) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN; /* for compatibility with older programs relying on this behavior. Users should now specify ZSTD_CONTENTSIZE_UNKNOWN. This line will be removed in the future. */
+ return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL /*cdict*/, cctxParams, pledgedSrcSize);
}
size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel)
@@ -2568,21 +2658,21 @@ size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t di
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize);
ZSTD_CCtx_params const cctxParams =
ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
- return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, 0);
+ return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, ZSTD_CONTENTSIZE_UNKNOWN);
}
-size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize)
+size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pss)
{
- ZSTD_CCtx_params cctxParams;
+ U64 const pledgedSrcSize = (pss==0) ? ZSTD_CONTENTSIZE_UNKNOWN : pss; /* temporary : 0 interpreted as "unknown" during transition period. Users willing to specify "unknown" **must** use ZSTD_CONTENTSIZE_UNKNOWN. `0` will be interpreted as "empty" in the future */
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, pledgedSrcSize, 0);
- cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
- cctxParams.fParams.contentSizeFlag = (pledgedSrcSize>0);
+ ZSTD_CCtx_params const cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
return ZSTD_initCStream_internal(zcs, NULL, 0, NULL, cctxParams, pledgedSrcSize);
}
size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel)
{
- return ZSTD_initCStream_srcSize(zcs, compressionLevel, 0);
+ DEBUGLOG(4, "ZSTD_initCStream");
+ return ZSTD_initCStream_srcSize(zcs, compressionLevel, ZSTD_CONTENTSIZE_UNKNOWN);
}
/*====== Compression ======*/
@@ -2615,9 +2705,9 @@ size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
/* check expectations */
DEBUGLOG(5, "ZSTD_compressStream_generic, flush=%u", (U32)flushMode);
assert(zcs->inBuff != NULL);
- assert(zcs->inBuffSize>0);
- assert(zcs->outBuff!= NULL);
- assert(zcs->outBuffSize>0);
+ assert(zcs->inBuffSize > 0);
+ assert(zcs->outBuff != NULL);
+ assert(zcs->outBuffSize > 0);
assert(output->pos <= output->size);
assert(input->pos <= input->size);
@@ -2757,7 +2847,7 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
ZSTD_inBuffer* input,
ZSTD_EndDirective endOp)
{
- DEBUGLOG(5, "ZSTD_compress_generic");
+ DEBUGLOG(5, "ZSTD_compress_generic, endOp=%u ", (U32)endOp);
/* check conditions */
if (output->pos > output->size) return ERROR(GENERIC);
if (input->pos > input->size) return ERROR(GENERIC);
@@ -2765,42 +2855,47 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
/* transparent initialization stage */
if (cctx->streamStage == zcss_init) {
- ZSTD_prefixDict const prefixDict = cctx->prefixDict;
ZSTD_CCtx_params params = cctx->requestedParams;
- params.cParams = ZSTD_getCParamsFromCCtxParams(
- cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/);
+ ZSTD_prefixDict const prefixDict = cctx->prefixDict;
memset(&cctx->prefixDict, 0, sizeof(cctx->prefixDict)); /* single usage */
assert(prefixDict.dict==NULL || cctx->cdict==NULL); /* only one can be set */
DEBUGLOG(4, "ZSTD_compress_generic : transparent init stage");
+ if (endOp == ZSTD_e_end) cctx->pledgedSrcSizePlusOne = input->size + 1; /* auto-fix pledgedSrcSize */
+ params.cParams = ZSTD_getCParamsFromCCtxParams(
+ cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/);
#ifdef ZSTD_MULTITHREAD
+ if ((cctx->pledgedSrcSizePlusOne-1) <= ZSTDMT_JOBSIZE_MIN)
+ params.nbThreads = 1; /* do not invoke multi-threading when src size is too small */
if (params.nbThreads > 1) {
- if (cctx->mtctx == NULL || cctx->appliedParams.nbThreads != params.nbThreads) {
+ if (cctx->mtctx == NULL || (params.nbThreads != ZSTDMT_getNbThreads(cctx->mtctx))) {
+ DEBUGLOG(4, "ZSTD_compress_generic: creating new mtctx for nbThreads=%u (previous: %u)",
+ params.nbThreads, ZSTDMT_getNbThreads(cctx->mtctx));
ZSTDMT_freeCCtx(cctx->mtctx);
cctx->mtctx = ZSTDMT_createCCtx_advanced(params.nbThreads, cctx->customMem);
if (cctx->mtctx == NULL) return ERROR(memory_allocation);
}
DEBUGLOG(4, "call ZSTDMT_initCStream_internal as nbThreads=%u", params.nbThreads);
CHECK_F( ZSTDMT_initCStream_internal(
- cctx->mtctx,
- prefixDict.dict, prefixDict.dictSize, ZSTD_dm_rawContent,
- cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) );
+ cctx->mtctx,
+ prefixDict.dict, prefixDict.dictSize, ZSTD_dm_rawContent,
+ cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) );
cctx->streamStage = zcss_load;
cctx->appliedParams.nbThreads = params.nbThreads;
} else
#endif
- {
- CHECK_F( ZSTD_resetCStream_internal(
+ { CHECK_F( ZSTD_resetCStream_internal(
cctx, prefixDict.dict, prefixDict.dictSize,
prefixDict.dictMode, cctx->cdict, params,
cctx->pledgedSrcSizePlusOne-1) );
+ assert(cctx->streamStage == zcss_load);
+ assert(cctx->appliedParams.nbThreads <= 1);
} }
/* compression stage */
#ifdef ZSTD_MULTITHREAD
if (cctx->appliedParams.nbThreads > 1) {
size_t const flushMin = ZSTDMT_compressStream_generic(cctx->mtctx, output, input, endOp);
- DEBUGLOG(5, "ZSTDMT_compressStream_generic result : %u", (U32)flushMin);
if ( ZSTD_isError(flushMin)
|| (endOp == ZSTD_e_end && flushMin == 0) ) { /* compression completed */
ZSTD_startNewCompression(cctx);
@@ -2850,8 +2945,7 @@ size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output)
{ size_t const lastBlockSize = zcs->frameEnded ? 0 : ZSTD_BLOCKHEADERSIZE;
size_t const checksumSize = zcs->frameEnded ? 0 : zcs->appliedParams.fParams.checksumFlag * 4;
size_t const toFlush = zcs->outBuffContentSize - zcs->outBuffFlushedSize + lastBlockSize + checksumSize;
- DEBUGLOG(5, "ZSTD_endStream : remaining to flush : %u",
- (unsigned)toFlush);
+ DEBUGLOG(4, "ZSTD_endStream : remaining to flush : %u", (U32)toFlush);
return toFlush;
}
}
@@ -2880,12 +2974,12 @@ static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEV
{ 22, 20, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 12 */
{ 22, 21, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 13 */
{ 22, 21, 22, 6, 5, 16, ZSTD_lazy2 }, /* level 14 */
- { 22, 21, 22, 5, 5, 16, ZSTD_btlazy2 }, /* level 15 */
- { 23, 22, 22, 5, 5, 16, ZSTD_btlazy2 }, /* level 16 */
- { 23, 22, 22, 4, 5, 24, ZSTD_btopt }, /* level 17 */
- { 23, 22, 22, 5, 4, 32, ZSTD_btopt }, /* level 18 */
- { 23, 23, 22, 6, 3, 48, ZSTD_btopt }, /* level 19 */
- { 25, 25, 23, 7, 3, 64, ZSTD_btultra }, /* level 20 */
+ { 22, 21, 22, 4, 5, 16, ZSTD_btlazy2 }, /* level 15 */
+ { 22, 21, 22, 4, 5, 48, ZSTD_btopt }, /* level 16 */
+ { 23, 22, 22, 4, 4, 48, ZSTD_btopt }, /* level 17 */
+ { 23, 22, 22, 5, 3, 64, ZSTD_btopt }, /* level 18 */
+ { 23, 23, 22, 7, 3,128, ZSTD_btopt }, /* level 19 */
+ { 25, 25, 23, 7, 3,128, ZSTD_btultra }, /* level 20 */
{ 26, 26, 24, 7, 3,256, ZSTD_btultra }, /* level 21 */
{ 27, 27, 25, 9, 3,512, ZSTD_btultra }, /* level 22 */
},
@@ -3004,6 +3098,8 @@ ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long l
}
#endif
+ DEBUGLOG(4, "ZSTD_getCParams: cLevel=%i, srcSize=%u, dictSize=%u => table %u",
+ compressionLevel, (U32)srcSizeHint, (U32)dictSize, tableID);
if (compressionLevel <= 0) compressionLevel = ZSTD_CLEVEL_DEFAULT; /* 0 == default; no negative compressionLevel yet */
if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL;
{ ZSTD_compressionParameters const cp = ZSTD_defaultCParameters[tableID][compressionLevel];
@@ -3019,5 +3115,6 @@ ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long srcSizeH
ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, srcSizeHint, dictSize);
memset(&params, 0, sizeof(params));
params.cParams = cParams;
+ params.fParams.contentSizeFlag = 1;
return params;
}
diff --git a/thirdparty/zstd/compress/zstd_compress.h b/thirdparty/zstd/compress/zstd_compress_internal.h
index 94606edc93..f104fe981e 100644
--- a/thirdparty/zstd/compress/zstd_compress.h
+++ b/thirdparty/zstd/compress/zstd_compress_internal.h
@@ -8,6 +8,9 @@
* You may select, at your option, one of the above-listed licenses.
*/
+/* This header contains definitions
+ * that shall **only** be used by modules within lib/compress.
+ */
#ifndef ZSTD_COMPRESS_H
#define ZSTD_COMPRESS_H
@@ -43,6 +46,95 @@ typedef struct ZSTD_prefixDict_s {
ZSTD_dictMode_e dictMode;
} ZSTD_prefixDict;
+typedef struct {
+ U32 hufCTable[HUF_CTABLE_SIZE_U32(255)];
+ FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)];
+ FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)];
+ FSE_CTable litlengthCTable[FSE_CTABLE_SIZE_U32(LLFSELog, MaxLL)];
+ U32 workspace[HUF_WORKSPACE_SIZE_U32];
+ HUF_repeat hufCTable_repeatMode;
+ FSE_repeat offcode_repeatMode;
+ FSE_repeat matchlength_repeatMode;
+ FSE_repeat litlength_repeatMode;
+} ZSTD_entropyCTables_t;
+
+typedef struct {
+ U32 off;
+ U32 len;
+} ZSTD_match_t;
+
+typedef struct {
+ int price;
+ U32 off;
+ U32 mlen;
+ U32 litlen;
+ U32 rep[ZSTD_REP_NUM];
+} ZSTD_optimal_t;
+
+typedef struct {
+ /* All tables are allocated inside cctx->workspace by ZSTD_resetCCtx_internal() */
+ U32* litFreq; /* table of literals statistics, of size 256 */
+ U32* litLengthFreq; /* table of litLength statistics, of size (MaxLL+1) */
+ U32* matchLengthFreq; /* table of matchLength statistics, of size (MaxML+1) */
+ U32* offCodeFreq; /* table of offCode statistics, of size (MaxOff+1) */
+ ZSTD_match_t* matchTable; /* list of found matches, of size ZSTD_OPT_NUM+1 */
+ ZSTD_optimal_t* priceTable; /* All positions tracked by optimal parser, of size ZSTD_OPT_NUM+1 */
+
+ U32 litSum; /* nb of literals */
+ U32 litLengthSum; /* nb of litLength codes */
+ U32 matchLengthSum; /* nb of matchLength codes */
+ U32 offCodeSum; /* nb of offset codes */
+ /* begin updated by ZSTD_setLog2Prices */
+ U32 log2litSum; /* pow2 to compare log2(litfreq) to */
+ U32 log2litLengthSum; /* pow2 to compare log2(llfreq) to */
+ U32 log2matchLengthSum; /* pow2 to compare log2(mlfreq) to */
+ U32 log2offCodeSum; /* pow2 to compare log2(offreq) to */
+ /* end : updated by ZSTD_setLog2Prices */
+ U32 staticPrices; /* prices follow a pre-defined cost structure, statistics are irrelevant */
+} optState_t;
+
+typedef struct {
+ U32 offset;
+ U32 checksum;
+} ldmEntry_t;
+
+typedef struct {
+ ldmEntry_t* hashTable;
+ BYTE* bucketOffsets; /* Next position in bucket to insert entry */
+ U64 hashPower; /* Used to compute the rolling hash.
+ * Depends on ldmParams.minMatchLength */
+} ldmState_t;
+
+typedef struct {
+ U32 enableLdm; /* 1 if enable long distance matching */
+ U32 hashLog; /* Log size of hashTable */
+ U32 bucketSizeLog; /* Log bucket size for collision resolution, at most 8 */
+ U32 minMatchLength; /* Minimum match length */
+ U32 hashEveryLog; /* Log number of entries to skip */
+} ldmParams_t;
+
+struct ZSTD_CCtx_params_s {
+ ZSTD_format_e format;
+ ZSTD_compressionParameters cParams;
+ ZSTD_frameParameters fParams;
+
+ int compressionLevel;
+ U32 forceWindow; /* force back-references to respect limit of
+ * 1<<wLog, even for dictionary */
+
+ /* Multithreading: used to pass parameters to mtctx */
+ U32 nbThreads;
+ unsigned jobSize;
+ unsigned overlapSizeLog;
+
+ /* Long distance matching parameters */
+ ldmParams_t ldmParams;
+
+ /* For use with createCCtxParams() and freeCCtxParams() only */
+ ZSTD_customMem customMem;
+
+}; /* typedef'd to ZSTD_CCtx_params within "zstd.h" */
+
struct ZSTD_CCtx_s {
const BYTE* nextSrc; /* next block here to continue on current prefix */
const BYTE* base; /* All regular indexes relative to this position */
@@ -99,38 +191,51 @@ struct ZSTD_CCtx_s {
};
-static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 16, 17, 17, 18, 18, 19, 19,
- 20, 20, 20, 20, 21, 21, 21, 21,
- 22, 22, 22, 22, 22, 22, 22, 22,
- 23, 23, 23, 23, 23, 23, 23, 23,
- 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24, 24, 24 };
-
-static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
- 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39,
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
- 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 };
+MEM_STATIC U32 ZSTD_LLcode(U32 litLength)
+{
+ static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 16, 17, 17, 18, 18, 19, 19,
+ 20, 20, 20, 20, 21, 21, 21, 21,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24 };
+ static const U32 LL_deltaCode = 19;
+ return (litLength > 63) ? ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
+}
+
+/* ZSTD_MLcode() :
+ * note : mlBase = matchLength - MINMATCH;
+ * because it's the format it's stored in seqStore->sequences */
+MEM_STATIC U32 ZSTD_MLcode(U32 mlBase)
+{
+ static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
+ 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 };
+ static const U32 ML_deltaCode = 36;
+ return (mlBase > 127) ? ZSTD_highbit32(mlBase) + ML_deltaCode : ML_Code[mlBase];
+}
/*! ZSTD_storeSeq() :
- Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.
- `offsetCode` : distance to match, or 0 == repCode.
- `matchCode` : matchLength - MINMATCH
+ * Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.
+ * `offsetCode` : distance to match + 3 (values 1-3 are repCodes).
+ * `mlBase` : matchLength - MINMATCH
*/
-MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t matchCode)
+MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t mlBase)
{
#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 6)
static const BYTE* g_start = NULL;
- U32 const pos = (U32)((const BYTE*)literals - g_start);
- if (g_start==NULL) g_start = (const BYTE*)literals;
- if ((pos > 0) && (pos < 1000000000))
- DEBUGLOG(6, "Cpos %6u :%5u literals & match %3u bytes at distance %6u",
- pos, (U32)litLength, (U32)matchCode+MINMATCH, (U32)offsetCode);
+ if (g_start==NULL) g_start = (const BYTE*)literals; /* note : index only works for compression within a single segment */
+ { U32 const pos = (U32)((const BYTE*)literals - g_start);
+ DEBUGLOG(6, "Cpos%7u :%3u literals, match%3u bytes at dist.code%7u",
+ pos, (U32)litLength, (U32)mlBase+MINMATCH, (U32)offsetCode);
+ }
#endif
/* copy Literals */
assert(seqStorePtr->lit + litLength <= seqStorePtr->litStart + 128 KB);
@@ -139,6 +244,7 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v
/* literal Length */
if (litLength>0xFFFF) {
+ assert(seqStorePtr->longLengthID == 0); /* there can only be a single long length */
seqStorePtr->longLengthID = 1;
seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
}
@@ -148,11 +254,12 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v
seqStorePtr->sequences[0].offset = offsetCode + 1;
/* match Length */
- if (matchCode>0xFFFF) {
+ if (mlBase>0xFFFF) {
+ assert(seqStorePtr->longLengthID == 0); /* there can only be a single long length */
seqStorePtr->longLengthID = 2;
seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
}
- seqStorePtr->sequences[0].matchLength = (U16)matchCode;
+ seqStorePtr->sequences[0].matchLength = (U16)mlBase;
seqStorePtr->sequences++;
}
@@ -161,7 +268,7 @@ MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const v
/*-*************************************
* Match length counter
***************************************/
-static unsigned ZSTD_NbCommonBytes (register size_t val)
+static unsigned ZSTD_NbCommonBytes (size_t val)
{
if (MEM_isLittleEndian()) {
if (MEM_64bits()) {
@@ -235,13 +342,17 @@ MEM_STATIC size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* co
const BYTE* const pStart = pIn;
const BYTE* const pInLoopLimit = pInLimit - (sizeof(size_t)-1);
- while (pIn < pInLoopLimit) {
- size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
- if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
- pIn += ZSTD_NbCommonBytes(diff);
- return (size_t)(pIn - pStart);
- }
- if (MEM_64bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
+ if (pIn < pInLoopLimit) {
+ { size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
+ if (diff) return ZSTD_NbCommonBytes(diff); }
+ pIn+=sizeof(size_t); pMatch+=sizeof(size_t);
+ while (pIn < pInLoopLimit) {
+ size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
+ if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
+ pIn += ZSTD_NbCommonBytes(diff);
+ return (size_t)(pIn - pStart);
+ } }
+ if (MEM_64bits() && (pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; }
if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
return (size_t)(pIn - pStart);
@@ -304,4 +415,48 @@ MEM_STATIC size_t ZSTD_hashPtr(const void* p, U32 hBits, U32 mls)
}
#endif
+
+/* ==============================================================
+ * Private declarations
+ * These prototypes shall only be called from within lib/compress
+ * ============================================================== */
+
+/*! ZSTD_initCStream_internal() :
+ * Private use only. Init streaming operation.
+ * expects params to be valid.
+ * must receive dict, or cdict, or none, but not both.
+ * @return : 0, or an error code */
+size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
+ const void* dict, size_t dictSize,
+ const ZSTD_CDict* cdict,
+ ZSTD_CCtx_params params, unsigned long long pledgedSrcSize);
+
+/*! ZSTD_compressStream_generic() :
+ * Private use only. To be called from zstdmt_compress.c in single-thread mode. */
+size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
+ ZSTD_outBuffer* output,
+ ZSTD_inBuffer* input,
+ ZSTD_EndDirective const flushMode);
+
+/*! ZSTD_getCParamsFromCDict() :
+ * as the name implies */
+ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict);
+
+/* ZSTD_compressBegin_advanced_internal() :
+ * Private use only. To be called from zstdmt_compress.c. */
+size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx,
+ const void* dict, size_t dictSize,
+ ZSTD_dictMode_e dictMode,
+ const ZSTD_CDict* cdict,
+ ZSTD_CCtx_params params,
+ unsigned long long pledgedSrcSize);
+
+/* ZSTD_compress_advanced_internal() :
+ * Private use only. To be called from zstdmt_compress.c. */
+size_t ZSTD_compress_advanced_internal(ZSTD_CCtx* cctx,
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const void* dict,size_t dictSize,
+ ZSTD_CCtx_params params);
+
#endif /* ZSTD_COMPRESS_H */
diff --git a/thirdparty/zstd/compress/zstd_double_fast.c b/thirdparty/zstd/compress/zstd_double_fast.c
index 876a36042c..fee5127c35 100644
--- a/thirdparty/zstd/compress/zstd_double_fast.c
+++ b/thirdparty/zstd/compress/zstd_double_fast.c
@@ -8,6 +8,7 @@
* You may select, at your option, one of the above-listed licenses.
*/
+#include "zstd_compress_internal.h"
#include "zstd_double_fast.h"
diff --git a/thirdparty/zstd/compress/zstd_double_fast.h b/thirdparty/zstd/compress/zstd_double_fast.h
index 3dba6c7108..75e0415809 100644
--- a/thirdparty/zstd/compress/zstd_double_fast.h
+++ b/thirdparty/zstd/compress/zstd_double_fast.h
@@ -11,12 +11,13 @@
#ifndef ZSTD_DOUBLE_FAST_H
#define ZSTD_DOUBLE_FAST_H
-#include "zstd_compress.h"
-
#if defined (__cplusplus)
extern "C" {
#endif
+#include "mem.h" /* U32 */
+#include "zstd.h" /* ZSTD_CCtx, size_t */
+
void ZSTD_fillDoubleHashTable(ZSTD_CCtx* cctx, const void* end, const U32 mls);
size_t ZSTD_compressBlock_doubleFast(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
size_t ZSTD_compressBlock_doubleFast_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
diff --git a/thirdparty/zstd/compress/zstd_fast.c b/thirdparty/zstd/compress/zstd_fast.c
index 2e057017b9..7b56c3d6ad 100644
--- a/thirdparty/zstd/compress/zstd_fast.c
+++ b/thirdparty/zstd/compress/zstd_fast.c
@@ -8,6 +8,7 @@
* You may select, at your option, one of the above-listed licenses.
*/
+#include "zstd_compress_internal.h"
#include "zstd_fast.h"
diff --git a/thirdparty/zstd/compress/zstd_fast.h b/thirdparty/zstd/compress/zstd_fast.h
index 4205141a9a..d8b7771954 100644
--- a/thirdparty/zstd/compress/zstd_fast.h
+++ b/thirdparty/zstd/compress/zstd_fast.h
@@ -11,12 +11,13 @@
#ifndef ZSTD_FAST_H
#define ZSTD_FAST_H
-#include "zstd_compress.h"
-
#if defined (__cplusplus)
extern "C" {
#endif
+#include "mem.h" /* U32 */
+#include "zstd.h" /* ZSTD_CCtx, size_t */
+
void ZSTD_fillHashTable(ZSTD_CCtx* zc, const void* end, const U32 mls);
size_t ZSTD_compressBlock_fast(ZSTD_CCtx* ctx,
const void* src, size_t srcSize);
diff --git a/thirdparty/zstd/compress/zstd_lazy.c b/thirdparty/zstd/compress/zstd_lazy.c
index 2a7f6a0fe2..6d4804961d 100644
--- a/thirdparty/zstd/compress/zstd_lazy.c
+++ b/thirdparty/zstd/compress/zstd_lazy.c
@@ -8,6 +8,7 @@
* You may select, at your option, one of the above-listed licenses.
*/
+#include "zstd_compress_internal.h"
#include "zstd_lazy.h"
@@ -15,10 +16,11 @@
* Binary Tree search
***************************************/
/** ZSTD_insertBt1() : add one or multiple positions to tree.
-* ip : assumed <= iend-8 .
-* @return : nb of positions added */
-static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, const BYTE* const iend, U32 nbCompares,
- U32 extDict)
+ * ip : assumed <= iend-8 .
+ * @return : nb of positions added */
+static U32 ZSTD_insertBt1(ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iend,
+ U32 nbCompares, U32 const mls, U32 const extDict)
{
U32* const hashTable = zc->hashTable;
U32 const hashLog = zc->appliedParams.cParams.hashLog;
@@ -40,7 +42,7 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co
U32* largerPtr = smallerPtr + 1;
U32 dummy32; /* to be nullified at the end */
U32 const windowLow = zc->lowLimit;
- U32 matchEndIdx = current+8;
+ U32 matchEndIdx = current+8+1;
size_t bestLength = 8;
#ifdef ZSTD_C_PREDICT
U32 predictedSmall = *(bt + 2*((current-1)&btMask) + 0);
@@ -49,12 +51,15 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co
predictedLarge += (predictedLarge>0);
#endif /* ZSTD_C_PREDICT */
+ DEBUGLOG(8, "ZSTD_insertBt1 (%u)", current);
+
assert(ip <= iend-8); /* required for h calculation */
hashTable[h] = current; /* Update Hash Table */
while (nbCompares-- && (matchIndex > windowLow)) {
U32* const nextPtr = bt + 2*(matchIndex & btMask);
size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
+ assert(matchIndex < current);
#ifdef ZSTD_C_PREDICT /* note : can create issues when hlog small <= 11 */
const U32* predictPtr = bt + 2*((matchIndex-1) & btMask); /* written this way, as bt is a roll buffer */
@@ -76,10 +81,11 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co
continue;
}
#endif
+
if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
+ assert(matchIndex+matchLength >= dictLimit); /* might be wrong if extDict is incorrectly set to 0 */
match = base + matchIndex;
- if (match[matchLength] == ip[matchLength])
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
+ matchLength += ZSTD_count(ip+matchLength, match+matchLength, iend);
} else {
match = dictBase + matchIndex;
matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
@@ -93,16 +99,17 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co
matchEndIdx = matchIndex + (U32)matchLength;
}
- if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
+ if (ip+matchLength == iend) { /* equal : no way to know if inf or sup */
break; /* drop , to guarantee consistency ; miss a bit of compression, but other solutions can corrupt tree */
+ }
if (match[matchLength] < ip[matchLength]) { /* necessarily within buffer */
- /* match+1 is smaller than current */
+ /* match is smaller than current */
*smallerPtr = matchIndex; /* update smaller idx */
commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop searching */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ smallerPtr = nextPtr+1; /* new "candidate" => larger than match, which was smaller than target */
+ matchIndex = nextPtr[1]; /* new matchIndex, larger than previous and closer to current */
} else {
/* match is larger than current */
*largerPtr = matchIndex;
@@ -114,8 +121,38 @@ static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, co
*smallerPtr = *largerPtr = 0;
if (bestLength > 384) return MIN(192, (U32)(bestLength - 384)); /* speed optimization */
- if (matchEndIdx > current + 8) return matchEndIdx - (current + 8);
- return 1;
+ assert(matchEndIdx > current + 8);
+ return matchEndIdx - (current + 8);
+}
+
+FORCE_INLINE_TEMPLATE
+void ZSTD_updateTree_internal(ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iend,
+ const U32 nbCompares, const U32 mls, const U32 extDict)
+{
+ const BYTE* const base = zc->base;
+ U32 const target = (U32)(ip - base);
+ U32 idx = zc->nextToUpdate;
+ DEBUGLOG(7, "ZSTD_updateTree_internal, from %u to %u (extDict:%u)",
+ idx, target, extDict);
+
+ while(idx < target)
+ idx += ZSTD_insertBt1(zc, base+idx, iend, nbCompares, mls, extDict);
+ zc->nextToUpdate = target;
+}
+
+void ZSTD_updateTree(ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iend,
+ const U32 nbCompares, const U32 mls)
+{
+ ZSTD_updateTree_internal(zc, ip, iend, nbCompares, mls, 0 /*extDict*/);
+}
+
+void ZSTD_updateTree_extDict(ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iend,
+ const U32 nbCompares, const U32 mls)
+{
+ ZSTD_updateTree_internal(zc, ip, iend, nbCompares, mls, 1 /*extDict*/);
}
@@ -144,7 +181,7 @@ static size_t ZSTD_insertBtAndFindBestMatch (
const U32 windowLow = zc->lowLimit;
U32* smallerPtr = bt + 2*(current&btMask);
U32* largerPtr = bt + 2*(current&btMask) + 1;
- U32 matchEndIdx = current+8;
+ U32 matchEndIdx = current+8+1;
U32 dummy32; /* to be nullified at the end */
size_t bestLength = 0;
@@ -158,8 +195,7 @@ static size_t ZSTD_insertBtAndFindBestMatch (
if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
match = base + matchIndex;
- if (match[matchLength] == ip[matchLength])
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
+ matchLength += ZSTD_count(ip+matchLength, match+matchLength, iend);
} else {
match = dictBase + matchIndex;
matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
@@ -172,8 +208,9 @@ static size_t ZSTD_insertBtAndFindBestMatch (
matchEndIdx = matchIndex + (U32)matchLength;
if ( (4*(int)(matchLength-bestLength)) > (int)(ZSTD_highbit32(current-matchIndex+1) - ZSTD_highbit32((U32)offsetPtr[0]+1)) )
bestLength = matchLength, *offsetPtr = ZSTD_REP_MOVE + current - matchIndex;
- if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
+ if (ip+matchLength == iend) { /* equal : no way to know if inf or sup */
break; /* drop, to guarantee consistency (miss a little bit of compression) */
+ }
}
if (match[matchLength] < ip[matchLength]) {
@@ -194,21 +231,12 @@ static size_t ZSTD_insertBtAndFindBestMatch (
*smallerPtr = *largerPtr = 0;
- zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
+ assert(matchEndIdx > current+8);
+ zc->nextToUpdate = matchEndIdx - 8; /* skip repetitive patterns */
return bestLength;
}
-void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
-{
- const BYTE* const base = zc->base;
- const U32 target = (U32)(ip - base);
- U32 idx = zc->nextToUpdate;
-
- while(idx < target)
- idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 0);
-}
-
/** ZSTD_BtFindBestMatch() : Tree updater, providing best match */
static size_t ZSTD_BtFindBestMatch (
ZSTD_CCtx* zc,
@@ -239,16 +267,6 @@ static size_t ZSTD_BtFindBestMatch_selectMLS (
}
-void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
-{
- const BYTE* const base = zc->base;
- const U32 target = (U32)(ip - base);
- U32 idx = zc->nextToUpdate;
-
- while (idx < target) idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 1);
-}
-
-
/** Tree updater, providing best match */
static size_t ZSTD_BtFindBestMatch_extDict (
ZSTD_CCtx* zc,
@@ -335,14 +353,14 @@ size_t ZSTD_HcFindBestMatch_generic (
U32 matchIndex = ZSTD_insertAndFindFirstIndex (zc, ip, mls);
for ( ; (matchIndex>lowLimit) & (nbAttempts>0) ; nbAttempts--) {
- const BYTE* match;
size_t currentMl=0;
if ((!extDict) || matchIndex >= dictLimit) {
- match = base + matchIndex;
+ const BYTE* const match = base + matchIndex;
if (match[ml] == ip[ml]) /* potentially better */
currentMl = ZSTD_count(ip, match, iLimit);
} else {
- match = dictBase + matchIndex;
+ const BYTE* const match = dictBase + matchIndex;
+ assert(match+4 <= dictEnd);
if (MEM_read32(match) == MEM_read32(ip)) /* assumption : matchIndex <= dictLimit-4 (by table construction) */
currentMl = ZSTD_count_2segments(ip+4, match+4, iLimit, dictEnd, prefixStart) + 4;
}
@@ -380,10 +398,10 @@ FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS (
FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
- ZSTD_CCtx* zc,
+ ZSTD_CCtx* const zc,
const BYTE* ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 matchLengthSearch)
+ size_t* const offsetPtr,
+ U32 const maxNbAttempts, U32 const matchLengthSearch)
{
switch(matchLengthSearch)
{
@@ -502,9 +520,8 @@ size_t ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
*/
/* catch up */
if (offset) {
- while ( (start > anchor)
- && (start > base+offset-ZSTD_REP_MOVE)
- && (start[-1] == (start-offset+ZSTD_REP_MOVE)[-1]) ) /* only search for offset within prefix */
+ while ( ((start > anchor) & (start - (offset-ZSTD_REP_MOVE) > base))
+ && (start[-1] == (start-(offset-ZSTD_REP_MOVE))[-1]) ) /* only search for offset within prefix */
{ start--; matchLength++; }
offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE);
}
@@ -516,9 +533,8 @@ _storeSequence:
}
/* check immediate repcode */
- while ( (ip <= ilimit)
- && ((offset_2>0)
- & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
+ while ( ((ip <= ilimit) & (offset_2>0))
+ && (MEM_read32(ip) == MEM_read32(ip - offset_2)) ) {
/* store sequence */
matchLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap repcodes */
diff --git a/thirdparty/zstd/compress/zstd_lazy.h b/thirdparty/zstd/compress/zstd_lazy.h
index a9c4daed25..74e1fd6970 100644
--- a/thirdparty/zstd/compress/zstd_lazy.h
+++ b/thirdparty/zstd/compress/zstd_lazy.h
@@ -11,12 +11,13 @@
#ifndef ZSTD_LAZY_H
#define ZSTD_LAZY_H
-#include "zstd_compress.h"
-
#if defined (__cplusplus)
extern "C" {
#endif
+#include "mem.h" /* U32 */
+#include "zstd.h" /* ZSTD_CCtx, size_t */
+
U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls);
void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls);
void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls);
diff --git a/thirdparty/zstd/compress/zstd_ldm.h b/thirdparty/zstd/compress/zstd_ldm.h
index d6d3d42c33..8f12c677aa 100644
--- a/thirdparty/zstd/compress/zstd_ldm.h
+++ b/thirdparty/zstd/compress/zstd_ldm.h
@@ -10,12 +10,13 @@
#ifndef ZSTD_LDM_H
#define ZSTD_LDM_H
-#include "zstd_compress.h"
-
#if defined (__cplusplus)
extern "C" {
#endif
+#include "zstd_compress_internal.h" /* ldmParams_t, U32 */
+#include "zstd.h" /* ZSTD_CCtx, size_t */
+
/*-*************************************
* Long distance matching
***************************************/
diff --git a/thirdparty/zstd/compress/zstd_opt.c b/thirdparty/zstd/compress/zstd_opt.c
index c47ce23ad5..7171ff5373 100644
--- a/thirdparty/zstd/compress/zstd_opt.c
+++ b/thirdparty/zstd/compress/zstd_opt.c
@@ -8,36 +8,35 @@
* You may select, at your option, one of the above-listed licenses.
*/
+#include "zstd_compress_internal.h"
#include "zstd_opt.h"
-#include "zstd_lazy.h"
+#include "zstd_lazy.h" /* ZSTD_updateTree, ZSTD_updateTree_extDict */
-#define ZSTD_LITFREQ_ADD 2
-#define ZSTD_FREQ_DIV 4
-#define ZSTD_MAX_PRICE (1<<30)
+#define ZSTD_LITFREQ_ADD 2 /* scaling factor for litFreq, so that frequencies adapt faster to new stats. Also used for matchSum (?) */
+#define ZSTD_FREQ_DIV 4 /* log factor when using previous stats to init next stats */
+#define ZSTD_MAX_PRICE (1<<30)
+
/*-*************************************
* Price functions for optimal parser
***************************************/
static void ZSTD_setLog2Prices(optState_t* optPtr)
{
- optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
- optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1);
+ optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
+ optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1);
- optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum));
}
-static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize)
+static void ZSTD_rescaleFreqs(optState_t* const optPtr,
+ const BYTE* const src, size_t const srcSize)
{
- unsigned u;
-
- optPtr->cachedLiterals = NULL;
- optPtr->cachedPrice = optPtr->cachedLitLength = 0;
optPtr->staticPrices = 0;
- if (optPtr->litLengthSum == 0) {
+ if (optPtr->litLengthSum == 0) { /* first init */
+ unsigned u;
if (srcSize <= 1024) optPtr->staticPrices = 1;
assert(optPtr->litFreq!=NULL);
@@ -45,44 +44,41 @@ static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSiz
optPtr->litFreq[u] = 0;
for (u=0; u<srcSize; u++)
optPtr->litFreq[src[u]]++;
-
optPtr->litSum = 0;
- optPtr->litLengthSum = MaxLL+1;
- optPtr->matchLengthSum = MaxML+1;
- optPtr->offCodeSum = (MaxOff+1);
- optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
-
for (u=0; u<=MaxLit; u++) {
- optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u] >> ZSTD_FREQ_DIV);
optPtr->litSum += optPtr->litFreq[u];
}
+
for (u=0; u<=MaxLL; u++)
optPtr->litLengthFreq[u] = 1;
+ optPtr->litLengthSum = MaxLL+1;
for (u=0; u<=MaxML; u++)
optPtr->matchLengthFreq[u] = 1;
+ optPtr->matchLengthSum = MaxML+1;
for (u=0; u<=MaxOff; u++)
optPtr->offCodeFreq[u] = 1;
+ optPtr->offCodeSum = (MaxOff+1);
+
} else {
- optPtr->matchLengthSum = 0;
- optPtr->litLengthSum = 0;
- optPtr->offCodeSum = 0;
- optPtr->matchSum = 0;
- optPtr->litSum = 0;
+ unsigned u;
+ optPtr->litSum = 0;
for (u=0; u<=MaxLit; u++) {
- optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u] >> (ZSTD_FREQ_DIV+1));
optPtr->litSum += optPtr->litFreq[u];
}
+ optPtr->litLengthSum = 0;
for (u=0; u<=MaxLL; u++) {
optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
optPtr->litLengthSum += optPtr->litLengthFreq[u];
}
+ optPtr->matchLengthSum = 0;
for (u=0; u<=MaxML; u++) {
optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
optPtr->matchLengthSum += optPtr->matchLengthFreq[u];
- optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3);
}
- optPtr->matchSum *= ZSTD_LITFREQ_ADD;
+ optPtr->offCodeSum = 0;
for (u=0; u<=MaxOff; u++) {
optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
optPtr->offCodeSum += optPtr->offCodeFreq[u];
@@ -93,114 +89,146 @@ static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSiz
}
-static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals)
+/* ZSTD_rawLiteralsCost() :
+ * cost of literals (only) in given segment (which length can be null)
+ * does not include cost of literalLength symbol */
+static U32 ZSTD_rawLiteralsCost(const BYTE* const literals, U32 const litLength,
+ const optState_t* const optPtr)
{
- U32 price, u;
-
- if (optPtr->staticPrices)
- return ZSTD_highbit32((U32)litLength+1) + (litLength*6);
-
- if (litLength == 0)
- return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1);
+ if (optPtr->staticPrices) return (litLength*6); /* 6 bit per literal - no statistic used */
+ if (litLength == 0) return 0;
/* literals */
- if (optPtr->cachedLiterals == literals) {
- U32 const additional = litLength - optPtr->cachedLitLength;
- const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength;
- price = optPtr->cachedPrice + additional * optPtr->log2litSum;
- for (u=0; u < additional; u++)
- price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1);
- optPtr->cachedPrice = price;
- optPtr->cachedLitLength = litLength;
- } else {
- price = litLength * optPtr->log2litSum;
+ { U32 u;
+ U32 cost = litLength * optPtr->log2litSum;
for (u=0; u < litLength; u++)
- price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
-
- if (litLength >= 12) {
- optPtr->cachedLiterals = literals;
- optPtr->cachedPrice = price;
- optPtr->cachedLitLength = litLength;
- }
+ cost -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
+ return cost;
}
+}
+
+/* ZSTD_litLengthPrice() :
+ * cost of literalLength symbol */
+static U32 ZSTD_litLengthPrice(U32 const litLength, const optState_t* const optPtr)
+{
+ if (optPtr->staticPrices) return ZSTD_highbit32((U32)litLength+1);
/* literal Length */
- { const BYTE LL_deltaCode = 19;
- const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
- price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
+ { U32 const llCode = ZSTD_LLcode(litLength);
+ U32 const price = LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
+ return price;
}
+}
- return price;
+/* ZSTD_litLengthPrice() :
+ * cost of the literal part of a sequence,
+ * including literals themselves, and literalLength symbol */
+static U32 ZSTD_fullLiteralsCost(const BYTE* const literals, U32 const litLength,
+ const optState_t* const optPtr)
+{
+ return ZSTD_rawLiteralsCost(literals, litLength, optPtr)
+ + ZSTD_litLengthPrice(litLength, optPtr);
+}
+
+/* ZSTD_litLengthContribution() :
+ * @return ( cost(litlength) - cost(0) )
+ * this value can then be added to rawLiteralsCost()
+ * to provide a cost which is directly comparable to a match ending at same position */
+static int ZSTD_litLengthContribution(U32 const litLength, const optState_t* const optPtr)
+{
+ if (optPtr->staticPrices) return ZSTD_highbit32(litLength+1);
+
+ /* literal Length */
+ { U32 const llCode = ZSTD_LLcode(litLength);
+ int const contribution = LL_bits[llCode]
+ + ZSTD_highbit32(optPtr->litLengthFreq[0]+1)
+ - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
+#if 1
+ return contribution;
+#else
+ return MAX(0, contribution); /* sometimes better, sometimes not ... */
+#endif
+ }
}
+/* ZSTD_literalsContribution() :
+ * creates a fake cost for the literals part of a sequence
+ * which can be compared to the ending cost of a match
+ * should a new match start at this position */
+static int ZSTD_literalsContribution(const BYTE* const literals, U32 const litLength,
+ const optState_t* const optPtr)
+{
+ int const contribution = ZSTD_rawLiteralsCost(literals, litLength, optPtr)
+ + ZSTD_litLengthContribution(litLength, optPtr);
+ return contribution;
+}
-FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
+/* ZSTD_getMatchPrice() :
+ * Provides the cost of the match part (offset + matchLength) of a sequence
+ * Must be combined with ZSTD_fullLiteralsCost() to get the full cost of a sequence.
+ * optLevel: when <2, favors small offset for decompression speed (improved cache efficiency) */
+FORCE_INLINE_TEMPLATE U32 ZSTD_getMatchPrice(
+ U32 const offset, U32 const matchLength,
+ const optState_t* const optPtr,
+ int const optLevel)
{
- /* offset */
U32 price;
- BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
+ U32 const offCode = ZSTD_highbit32(offset+1);
+ U32 const mlBase = matchLength - MINMATCH;
+ assert(matchLength >= MINMATCH);
- if (optPtr->staticPrices)
- return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
+ if (optPtr->staticPrices) /* fixed scheme, do not use statistics */
+ return ZSTD_highbit32((U32)mlBase+1) + 16 + offCode;
price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1);
- if (!ultra && offCode >= 20) price += (offCode-19)*2;
+ if ((optLevel<2) /*static*/ && offCode >= 20) price += (offCode-19)*2; /* handicap for long distance offsets, favor decompression speed */
/* match Length */
- { const BYTE ML_deltaCode = 36;
- const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
+ { U32 const mlCode = ZSTD_MLcode(mlBase);
price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1);
}
- return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor;
+ DEBUGLOG(8, "ZSTD_getMatchPrice(ml:%u) = %u", matchLength, price);
+ return price;
}
-
-static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
+static void ZSTD_updateStats(optState_t* const optPtr,
+ U32 litLength, const BYTE* literals,
+ U32 offsetCode, U32 matchLength)
{
- U32 u;
-
/* literals */
- optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
- for (u=0; u < litLength; u++)
- optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
+ { U32 u;
+ for (u=0; u < litLength; u++)
+ optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
+ optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
+ }
/* literal Length */
- { const BYTE LL_deltaCode = 19;
- const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
+ { U32 const llCode = ZSTD_LLcode(litLength);
optPtr->litLengthFreq[llCode]++;
optPtr->litLengthSum++;
}
- /* match offset */
- { BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
- optPtr->offCodeSum++;
+ /* match offset code (0-2=>repCode; 3+=>offset+2) */
+ { U32 const offCode = ZSTD_highbit32(offsetCode+1);
+ assert(offCode <= MaxOff);
optPtr->offCodeFreq[offCode]++;
+ optPtr->offCodeSum++;
}
/* match Length */
- { const BYTE ML_deltaCode = 36;
- const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
+ { U32 const mlBase = matchLength - MINMATCH;
+ U32 const mlCode = ZSTD_MLcode(mlBase);
optPtr->matchLengthFreq[mlCode]++;
optPtr->matchLengthSum++;
}
-
- ZSTD_setLog2Prices(optPtr);
}
-#define SET_PRICE(pos, mlen_, offset_, litlen_, price_) \
- { \
- while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; } \
- opt[pos].mlen = mlen_; \
- opt[pos].off = offset_; \
- opt[pos].litlen = litlen_; \
- opt[pos].price = price_; \
- }
-
-
-/* function safe only for comparisons */
-static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
+/* ZSTD_readMINMATCH() :
+ * function safe only for comparisons
+ * assumption : memPtr must be at least 4 bytes before end of buffer */
+MEM_STATIC U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
{
switch (length)
{
@@ -216,15 +244,14 @@ static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
/* Update hashTable3 up to ip (excluded)
Assumption : always within prefix (i.e. not within extDict) */
-static
-U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
+static U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* const cctx, const BYTE* const ip)
{
- U32* const hashTable3 = zc->hashTable3;
- U32 const hashLog3 = zc->hashLog3;
- const BYTE* const base = zc->base;
- U32 idx = zc->nextToUpdate3;
- const U32 target = zc->nextToUpdate3 = (U32)(ip - base);
- const size_t hash3 = ZSTD_hash3Ptr(ip, hashLog3);
+ U32* const hashTable3 = cctx->hashTable3;
+ U32 const hashLog3 = cctx->hashLog3;
+ const BYTE* const base = cctx->base;
+ U32 idx = cctx->nextToUpdate3;
+ U32 const target = cctx->nextToUpdate3 = (U32)(ip - base);
+ size_t const hash3 = ZSTD_hash3Ptr(ip, hashLog3);
while(idx < target) {
hashTable3[ZSTD_hash3Ptr(base+idx, hashLog3)] = idx;
@@ -238,102 +265,147 @@ U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
/*-*************************************
* Binary Tree search
***************************************/
-static U32 ZSTD_insertBtAndGetAllMatches (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- U32 nbCompares, const U32 mls,
- U32 extDict, ZSTD_match_t* matches, const U32 minMatchLen)
+FORCE_INLINE_TEMPLATE
+U32 ZSTD_insertBtAndGetAllMatches (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit, int const extDict,
+ U32 nbCompares, U32 const mls, U32 const sufficient_len,
+ U32 rep[ZSTD_REP_NUM], U32 const ll0,
+ ZSTD_match_t* matches, const U32 lengthToBeat)
{
const BYTE* const base = zc->base;
- const U32 current = (U32)(ip-base);
- const U32 hashLog = zc->appliedParams.cParams.hashLog;
- const size_t h = ZSTD_hashPtr(ip, hashLog, mls);
+ U32 const current = (U32)(ip-base);
+ U32 const hashLog = zc->appliedParams.cParams.hashLog;
+ U32 const minMatch = (mls==3) ? 3 : 4;
U32* const hashTable = zc->hashTable;
+ size_t const h = ZSTD_hashPtr(ip, hashLog, mls);
U32 matchIndex = hashTable[h];
U32* const bt = zc->chainTable;
- const U32 btLog = zc->appliedParams.cParams.chainLog - 1;
- const U32 btMask= (1U << btLog) - 1;
+ U32 const btLog = zc->appliedParams.cParams.chainLog - 1;
+ U32 const btMask= (1U << btLog) - 1;
size_t commonLengthSmaller=0, commonLengthLarger=0;
const BYTE* const dictBase = zc->dictBase;
- const U32 dictLimit = zc->dictLimit;
+ U32 const dictLimit = zc->dictLimit;
const BYTE* const dictEnd = dictBase + dictLimit;
const BYTE* const prefixStart = base + dictLimit;
- const U32 btLow = btMask >= current ? 0 : current - btMask;
- const U32 windowLow = zc->lowLimit;
+ U32 const btLow = btMask >= current ? 0 : current - btMask;
+ U32 const windowLow = zc->lowLimit;
U32* smallerPtr = bt + 2*(current&btMask);
U32* largerPtr = bt + 2*(current&btMask) + 1;
- U32 matchEndIdx = current+8;
+ U32 matchEndIdx = current+8+1; /* farthest referenced position of any match => detects repetitive patterns */
U32 dummy32; /* to be nullified at the end */
U32 mnum = 0;
- const U32 minMatch = (mls == 3) ? 3 : 4;
- size_t bestLength = minMatchLen-1;
+ size_t bestLength = lengthToBeat-1;
+ DEBUGLOG(7, "ZSTD_insertBtAndGetAllMatches");
+
+ /* check repCode */
+ { U32 const lastR = ZSTD_REP_NUM + ll0;
+ U32 repCode;
+ for (repCode = ll0; repCode < lastR; repCode++) {
+ U32 const repOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode];
+ U32 const repIndex = current - repOffset;
+ U32 repLen = 0;
+ assert(current >= dictLimit);
+ if (repOffset-1 /* intentional overflow, discards 0 and -1 */ < current-dictLimit) { /* equivalent to `current > repIndex >= dictLimit` */
+ if (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repOffset, minMatch)) {
+ repLen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repOffset, iLimit) + minMatch;
+ }
+ } else { /* repIndex < dictLimit || repIndex >= current */
+ const BYTE* const repMatch = dictBase + repIndex;
+ assert(current >= windowLow);
+ if ( extDict /* this case only valid in extDict mode */
+ && ( ((repOffset-1) /*intentional overflow*/ < current - windowLow) /* equivalent to `current > repIndex >= windowLow` */
+ & (((U32)((dictLimit-1) - repIndex) >= 3) ) /* intentional overflow : do not test positions overlapping 2 memory segments */)
+ && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
+ repLen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iLimit, dictEnd, prefixStart) + minMatch;
+ } }
+ /* save longer solution */
+ if (repLen > bestLength) {
+ DEBUGLOG(8, "found rep-match %u of length %u",
+ repCode - ll0, (U32)repLen);
+ bestLength = repLen;
+ matches[mnum].off = repCode - ll0;
+ matches[mnum].len = (U32)repLen;
+ mnum++;
+ if ( (repLen > sufficient_len)
+ | (ip+repLen == iLimit) ) { /* best possible */
+ return mnum;
+ } } } }
- if (minMatch == 3) { /* HC3 match finder */
+ /* HC3 match finder */
+ if ((mls == 3) /*static*/ && (bestLength < mls)) {
U32 const matchIndex3 = ZSTD_insertAndFindFirstIndexHash3 (zc, ip);
- if (matchIndex3>windowLow && (current - matchIndex3 < (1<<18))) {
- const BYTE* match;
- size_t currentMl=0;
- if ((!extDict) || matchIndex3 >= dictLimit) {
- match = base + matchIndex3;
- if (match[bestLength] == ip[bestLength]) currentMl = ZSTD_count(ip, match, iLimit);
+ if ((matchIndex3 > windowLow)
+ & (current - matchIndex3 < (1<<18)) /*heuristic : longer distance likely too expensive*/ ) {
+ size_t mlen;
+ if ((!extDict) /*static*/ || (matchIndex3 >= dictLimit)) {
+ const BYTE* const match = base + matchIndex3;
+ mlen = ZSTD_count(ip, match, iLimit);
} else {
- match = dictBase + matchIndex3;
- if (ZSTD_readMINMATCH(match, MINMATCH) == ZSTD_readMINMATCH(ip, MINMATCH)) /* assumption : matchIndex3 <= dictLimit-4 (by table construction) */
- currentMl = ZSTD_count_2segments(ip+MINMATCH, match+MINMATCH, iLimit, dictEnd, prefixStart) + MINMATCH;
+ const BYTE* const match = dictBase + matchIndex3;
+ mlen = ZSTD_count_2segments(ip, match, iLimit, dictEnd, prefixStart);
}
/* save best solution */
- if (currentMl > bestLength) {
- bestLength = currentMl;
- matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex3;
- matches[mnum].len = (U32)currentMl;
- mnum++;
- if (currentMl > ZSTD_OPT_NUM) goto update;
- if (ip+currentMl == iLimit) goto update; /* best possible, and avoid read overflow*/
- }
- }
- }
+ if (mlen >= mls /* == 3 > bestLength */) {
+ DEBUGLOG(8, "found small match with hlog3, of length %u",
+ (U32)mlen);
+ bestLength = mlen;
+ assert(current > matchIndex3);
+ assert(mnum==0); /* no prior solution */
+ matches[0].off = (current - matchIndex3) + ZSTD_REP_MOVE;
+ matches[0].len = (U32)mlen;
+ mnum = 1;
+ if ( (mlen > sufficient_len) |
+ (ip+mlen == iLimit) ) { /* best possible length */
+ zc->nextToUpdate = current+1; /* skip insertion */
+ return 1;
+ } } } }
hashTable[h] = current; /* Update Hash Table */
while (nbCompares-- && (matchIndex > windowLow)) {
- U32* nextPtr = bt + 2*(matchIndex & btMask);
+ U32* const nextPtr = bt + 2*(matchIndex & btMask);
size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
const BYTE* match;
+ assert(current > matchIndex);
if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
+ assert(matchIndex+matchLength >= dictLimit); /* ensure the condition is correct when !extDict */
match = base + matchIndex;
- if (match[matchLength] == ip[matchLength]) {
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iLimit) +1;
- }
+ matchLength += ZSTD_count(ip+matchLength, match+matchLength, iLimit);
} else {
match = dictBase + matchIndex;
matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iLimit, dictEnd, prefixStart);
if (matchIndex+matchLength >= dictLimit)
- match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
+ match = base + matchIndex; /* prepare for match[matchLength] */
}
if (matchLength > bestLength) {
- if (matchLength > matchEndIdx - matchIndex) matchEndIdx = matchIndex + (U32)matchLength;
+ DEBUGLOG(8, "found match of length %u at distance %u",
+ (U32)matchLength, current - matchIndex);
+ assert(matchEndIdx > matchIndex);
+ if (matchLength > matchEndIdx - matchIndex)
+ matchEndIdx = matchIndex + (U32)matchLength;
bestLength = matchLength;
- matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex;
+ matches[mnum].off = (current - matchIndex) + ZSTD_REP_MOVE;
matches[mnum].len = (U32)matchLength;
mnum++;
if (matchLength > ZSTD_OPT_NUM) break;
- if (ip+matchLength == iLimit) /* equal : no way to know if inf or sup */
- break; /* drop, to guarantee consistency (miss a little bit of compression) */
+ if (ip+matchLength == iLimit) { /* equal : no way to know if inf or sup */
+ break; /* drop, to preserve bt consistency (miss a little bit of compression) */
+ }
}
if (match[matchLength] < ip[matchLength]) {
- /* match is smaller than current */
+ /* match smaller than current */
*smallerPtr = matchIndex; /* update smaller idx */
commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ smallerPtr = nextPtr+1; /* new candidate => larger than match, which was smaller than current */
+ matchIndex = nextPtr[1]; /* new matchIndex, larger than previous, closer to current */
} else {
- /* match is larger than current */
*largerPtr = matchIndex;
commonLengthLarger = matchLength;
if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
@@ -343,65 +415,31 @@ static U32 ZSTD_insertBtAndGetAllMatches (
*smallerPtr = *largerPtr = 0;
-update:
- zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
+ assert(matchEndIdx > current+8);
+ zc->nextToUpdate = matchEndIdx - 8; /* skip repetitive patterns */
return mnum;
}
-/** Tree updater, providing best match */
-static U32 ZSTD_BtGetAllMatches (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 0, matches, minMatchLen);
-}
-
-
-static U32 ZSTD_BtGetAllMatches_selectMLS (
+FORCE_INLINE_TEMPLATE U32 ZSTD_BtGetAllMatches (
ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iHighLimit,
- const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- switch(matchLengthSearch)
- {
- case 3 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
- default :
- case 4 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
- case 5 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
- case 7 :
- case 6 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
- }
-}
-
-/** Tree updater, providing best match */
-static U32 ZSTD_BtGetAllMatches_extDict (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
+ const BYTE* ip, const BYTE* const iHighLimit, int const extDict,
+ U32 const maxNbAttempts, U32 const matchLengthSearch, U32 const sufficient_len,
+ U32 rep[ZSTD_REP_NUM], U32 const ll0,
+ ZSTD_match_t* matches, U32 const lengthToBeat)
{
+ DEBUGLOG(7, "ZSTD_BtGetAllMatches");
if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 1, matches, minMatchLen);
-}
-
-
-static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iHighLimit,
- const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
-{
+ if (extDict) ZSTD_updateTree_extDict(zc, ip, iHighLimit, maxNbAttempts, matchLengthSearch);
+ else ZSTD_updateTree(zc, ip, iHighLimit, maxNbAttempts, matchLengthSearch);
switch(matchLengthSearch)
{
- case 3 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
+ case 3 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 3, sufficient_len, rep, ll0, matches, lengthToBeat);
default :
- case 4 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
- case 5 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
+ case 4 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 4, sufficient_len, rep, ll0, matches, lengthToBeat);
+ case 5 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 5, sufficient_len, rep, ll0, matches, lengthToBeat);
case 7 :
- case 6 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
+ case 6 : return ZSTD_insertBtAndGetAllMatches(zc, ip, iHighLimit, extDict, maxNbAttempts, 6, sufficient_len, rep, ll0, matches, lengthToBeat);
}
}
@@ -409,534 +447,313 @@ static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
/*-*******************************
* Optimal parser
*********************************/
-FORCE_INLINE_TEMPLATE
-size_t ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize, const int ultra)
-{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- optState_t* optStatePtr = &(ctx->optState);
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- const BYTE* const base = ctx->base;
- const BYTE* const prefixStart = base + ctx->dictLimit;
-
- const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
- const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
-
- ZSTD_optimal_t* opt = optStatePtr->priceTable;
- ZSTD_match_t* matches = optStatePtr->matchTable;
- const BYTE* inr;
- U32 offset, rep[ZSTD_REP_NUM];
-
- /* init */
- ctx->nextToUpdate3 = ctx->nextToUpdate;
- ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
- ip += (ip==prefixStart);
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
-
- /* Match Loop */
- while (ip < ilimit) {
- U32 cur, match_num, last_pos, litlen, price;
- U32 u, mlen, best_mlen, best_off, litLength;
- memset(opt, 0, sizeof(ZSTD_optimal_t));
- last_pos = 0;
- litlen = (U32)(ip - anchor);
-
- /* check repCode */
- { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
- for (i=(ip == anchor); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
- if ( (repCur > 0) && (repCur < (S32)(ip-prefixStart))
- && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repCur, minMatch))) {
- mlen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repCur, iend) + minMatch;
- if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
- goto _storeSequence;
- }
- best_off = i - (ip == anchor);
- do {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, ip, iend, maxSearches, mls, matches, minMatch);
-
- if (!last_pos && !match_num) { ip++; continue; }
-
- if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- cur = 0;
- last_pos = 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = 0 */
- best_mlen = (last_pos) ? last_pos : minMatch;
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
- while (mlen <= best_mlen) {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, matches[u].off, litlen, price); /* note : macro modifies last_pos */
- mlen++;
- } }
-
- if (last_pos < minMatch) { ip++; continue; }
-
- /* initialize opt[0] */
- { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
- opt[0].mlen = 1;
- opt[0].litlen = litlen;
-
- /* check further positions */
- for (cur = 1; cur <= last_pos; cur++) {
- inr = ip + cur;
-
- if (opt[cur-1].mlen == 1) {
- litlen = opt[cur-1].litlen + 1;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
- } else
- price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
- } else {
- litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
- }
-
- if (cur > last_pos || price <= opt[cur].price)
- SET_PRICE(cur, 1, 0, litlen, price);
-
- if (cur == last_pos) break;
-
- if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
- continue;
-
- mlen = opt[cur].mlen;
- if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
- opt[cur].rep[2] = opt[cur-mlen].rep[1];
- opt[cur].rep[1] = opt[cur-mlen].rep[0];
- opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
- } else {
- opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
- opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
- /* If opt[cur].off == ZSTD_REP_MOVE_OPT, then mlen != 1.
- * offset ZSTD_REP_MOVE_OPT is used for the special case
- * litLength == 0, where offset 0 means something special.
- * mlen == 1 means the previous byte was stored as a literal,
- * so they are mutually exclusive.
- */
- assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1));
- opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
- }
-
- best_mlen = minMatch;
- { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
- for (i=(opt[cur].mlen != 1); i<last_i; i++) { /* check rep */
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
- if ( (repCur > 0) && (repCur < (S32)(inr-prefixStart))
- && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(inr - repCur, minMatch))) {
- mlen = (U32)ZSTD_count(inr+minMatch, inr+minMatch - repCur, iend) + minMatch;
-
- if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; last_pos = cur + 1;
- goto _storeSequence;
- }
-
- best_off = i - (opt[cur].mlen != 1);
- if (mlen > best_mlen) best_mlen = mlen;
-
- do {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
- } else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
- SET_PRICE(cur + mlen, mlen, i, litlen, price);
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, inr, iend, maxSearches, mls, matches, best_mlen);
-
- if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- last_pos = cur + 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = cur */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
-
- while (mlen <= best_mlen) {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
- else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
- SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
+typedef struct repcodes_s {
+ U32 rep[3];
+} repcodes_t;
- mlen++;
- } } }
-
- best_mlen = opt[last_pos].mlen;
- best_off = opt[last_pos].off;
- cur = last_pos - best_mlen;
-
- /* store sequence */
-_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
- opt[0].mlen = 1;
-
- while (1) {
- mlen = opt[cur].mlen;
- offset = opt[cur].off;
- opt[cur].mlen = best_mlen;
- opt[cur].off = best_off;
- best_mlen = mlen;
- best_off = offset;
- if (mlen > cur) break;
- cur -= mlen;
- }
-
- for (u = 0; u <= last_pos;) {
- u += opt[u].mlen;
+repcodes_t ZSTD_updateRep(U32 const rep[3], U32 const offset, U32 const ll0)
+{
+ repcodes_t newReps;
+ if (offset >= ZSTD_REP_NUM) { /* full offset */
+ newReps.rep[2] = rep[1];
+ newReps.rep[1] = rep[0];
+ newReps.rep[0] = offset - ZSTD_REP_MOVE;
+ } else { /* repcode */
+ U32 const repCode = offset + ll0;
+ if (repCode > 0) { /* note : if repCode==0, no change */
+ U32 const currentOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode];
+ newReps.rep[2] = (repCode >= 2) ? rep[1] : rep[2];
+ newReps.rep[1] = rep[0];
+ newReps.rep[0] = currentOffset;
+ } else { /* repCode == 0 */
+ memcpy(&newReps, rep, sizeof(newReps));
}
+ }
+ return newReps;
+}
- for (cur=0; cur < last_pos; ) {
- mlen = opt[cur].mlen;
- if (mlen == 1) { ip++; cur++; continue; }
- offset = opt[cur].off;
- cur += mlen;
- litLength = (U32)(ip - anchor);
-
- if (offset > ZSTD_REP_MOVE_OPT) {
- rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = offset - ZSTD_REP_MOVE_OPT;
- offset--;
- } else {
- if (offset != 0) {
- best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
- if (offset != 1) rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = best_off;
- }
- if (litLength==0) offset--;
- }
- ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
- anchor = ip = ip + mlen;
- } } /* for (cur=0; cur < last_pos; ) */
+typedef struct {
+ const BYTE* anchor;
+ U32 litlen;
+ U32 rawLitCost;
+} cachedLiteralPrice_t;
- /* Save reps for next block */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
+static U32 ZSTD_rawLiteralsCost_cached(
+ cachedLiteralPrice_t* const cachedLitPrice,
+ const BYTE* const anchor, U32 const litlen,
+ const optState_t* const optStatePtr)
+{
+ U32 startCost;
+ U32 remainingLength;
+ const BYTE* startPosition;
+
+ if (anchor == cachedLitPrice->anchor) {
+ startCost = cachedLitPrice->rawLitCost;
+ startPosition = anchor + cachedLitPrice->litlen;
+ assert(litlen >= cachedLitPrice->litlen);
+ remainingLength = litlen - cachedLitPrice->litlen;
+ } else {
+ startCost = 0;
+ startPosition = anchor;
+ remainingLength = litlen;
+ }
- /* Return the last literals size */
- return iend - anchor;
+ { U32 const rawLitCost = startCost + ZSTD_rawLiteralsCost(startPosition, remainingLength, optStatePtr);
+ cachedLitPrice->anchor = anchor;
+ cachedLitPrice->litlen = litlen;
+ cachedLitPrice->rawLitCost = rawLitCost;
+ return rawLitCost;
+ }
}
-
-size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+static U32 ZSTD_fullLiteralsCost_cached(
+ cachedLiteralPrice_t* const cachedLitPrice,
+ const BYTE* const anchor, U32 const litlen,
+ const optState_t* const optStatePtr)
{
- return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0);
+ return ZSTD_rawLiteralsCost_cached(cachedLitPrice, anchor, litlen, optStatePtr)
+ + ZSTD_litLengthPrice(litlen, optStatePtr);
}
-size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+static int ZSTD_literalsContribution_cached(
+ cachedLiteralPrice_t* const cachedLitPrice,
+ const BYTE* const anchor, U32 const litlen,
+ const optState_t* const optStatePtr)
{
- return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 1);
+ int const contribution = ZSTD_rawLiteralsCost_cached(cachedLitPrice, anchor, litlen, optStatePtr)
+ + ZSTD_litLengthContribution(litlen, optStatePtr);
+ return contribution;
}
-
FORCE_INLINE_TEMPLATE
-size_t ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize, const int ultra)
+size_t ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize,
+ const int optLevel, const int extDict)
{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- optState_t* optStatePtr = &(ctx->optState);
+ seqStore_t* const seqStorePtr = &(ctx->seqStore);
+ optState_t* const optStatePtr = &(ctx->optState);
const BYTE* const istart = (const BYTE*)src;
const BYTE* ip = istart;
const BYTE* anchor = istart;
const BYTE* const iend = istart + srcSize;
const BYTE* const ilimit = iend - 8;
const BYTE* const base = ctx->base;
- const U32 lowestIndex = ctx->lowLimit;
- const U32 dictLimit = ctx->dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const BYTE* const dictBase = ctx->dictBase;
- const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const prefixStart = base + ctx->dictLimit;
- const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
- const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
+ U32 const maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
+ U32 const sufficient_len = MIN(ctx->appliedParams.cParams.targetLength, ZSTD_OPT_NUM -1);
+ U32 const mls = ctx->appliedParams.cParams.searchLength;
+ U32 const minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
- ZSTD_optimal_t* opt = optStatePtr->priceTable;
- ZSTD_match_t* matches = optStatePtr->matchTable;
- const BYTE* inr;
+ ZSTD_optimal_t* const opt = optStatePtr->priceTable;
+ ZSTD_match_t* const matches = optStatePtr->matchTable;
+ cachedLiteralPrice_t cachedLitPrice;
+ U32 rep[ZSTD_REP_NUM];
/* init */
- U32 offset, rep[ZSTD_REP_NUM];
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
-
+ DEBUGLOG(5, "ZSTD_compressBlock_opt_generic");
ctx->nextToUpdate3 = ctx->nextToUpdate;
ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
ip += (ip==prefixStart);
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
+ memset(&cachedLitPrice, 0, sizeof(cachedLitPrice));
/* Match Loop */
while (ip < ilimit) {
- U32 cur, match_num, last_pos, litlen, price;
- U32 u, mlen, best_mlen, best_off, litLength;
- U32 current = (U32)(ip-base);
- memset(opt, 0, sizeof(ZSTD_optimal_t));
- last_pos = 0;
- opt[0].litlen = (U32)(ip - anchor);
-
- /* check repCode */
- { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
- for (i = (ip==anchor); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
- const U32 repIndex = (U32)(current - repCur);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if ( (repCur > 0 && repCur <= (S32)current)
- && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
- && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
- /* repcode detected we should take it */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- mlen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
-
- if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
- goto _storeSequence;
- }
-
- best_off = i - (ip==anchor);
- litlen = opt[0].litlen;
- do {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, ip, iend, maxSearches, mls, matches, minMatch); /* first search (depth 0) */
-
- if (!last_pos && !match_num) { ip++; continue; }
-
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
- opt[0].mlen = 1;
-
- if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- cur = 0;
- last_pos = 1;
- goto _storeSequence;
- }
-
- best_mlen = (last_pos) ? last_pos : minMatch;
-
- /* set prices using matches at position = 0 */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
- litlen = opt[0].litlen;
- while (mlen <= best_mlen) {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, matches[u].off, litlen, price);
- mlen++;
- } }
-
- if (last_pos < minMatch) {
- ip++; continue;
+ U32 cur, last_pos = 0;
+ U32 best_mlen, best_off;
+
+ /* find first match */
+ { U32 const litlen = (U32)(ip - anchor);
+ U32 const ll0 = !litlen;
+ U32 const nbMatches = ZSTD_BtGetAllMatches(ctx, ip, iend, extDict, maxSearches, mls, sufficient_len, rep, ll0, matches, minMatch);
+ if (!nbMatches) { ip++; continue; }
+
+ /* initialize opt[0] */
+ { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
+ opt[0].mlen = 1;
+ opt[0].litlen = litlen;
+
+ /* large match -> immediate encoding */
+ { U32 const maxML = matches[nbMatches-1].len;
+ DEBUGLOG(7, "found %u matches of maxLength=%u and offset=%u at cPos=%u => start new serie",
+ nbMatches, maxML, matches[nbMatches-1].off, (U32)(ip-prefixStart));
+
+ if (maxML > sufficient_len) {
+ best_mlen = maxML;
+ best_off = matches[nbMatches-1].off;
+ DEBUGLOG(7, "large match (%u>%u), immediate encoding",
+ best_mlen, sufficient_len);
+ cur = 0;
+ last_pos = 1;
+ goto _shortestPath;
+ } }
+
+ /* set prices for first matches starting position == 0 */
+ { U32 const literalsPrice = ZSTD_fullLiteralsCost_cached(&cachedLitPrice, anchor, litlen, optStatePtr);
+ U32 pos;
+ U32 matchNb;
+ for (pos = 0; pos < minMatch; pos++) {
+ opt[pos].mlen = 1;
+ opt[pos].price = ZSTD_MAX_PRICE;
+ }
+ for (matchNb = 0; matchNb < nbMatches; matchNb++) {
+ U32 const offset = matches[matchNb].off;
+ U32 const end = matches[matchNb].len;
+ repcodes_t const repHistory = ZSTD_updateRep(rep, offset, ll0);
+ for ( ; pos <= end ; pos++ ) {
+ U32 const matchPrice = literalsPrice + ZSTD_getMatchPrice(offset, pos, optStatePtr, optLevel);
+ DEBUGLOG(7, "rPos:%u => set initial price : %u",
+ pos, matchPrice);
+ opt[pos].mlen = pos;
+ opt[pos].off = offset;
+ opt[pos].litlen = litlen;
+ opt[pos].price = matchPrice;
+ memcpy(opt[pos].rep, &repHistory, sizeof(repHistory));
+ } }
+ last_pos = pos-1;
+ }
}
/* check further positions */
for (cur = 1; cur <= last_pos; cur++) {
- inr = ip + cur;
+ const BYTE* const inr = ip + cur;
+ assert(cur < ZSTD_OPT_NUM);
- if (opt[cur-1].mlen == 1) {
- litlen = opt[cur-1].litlen + 1;
+ /* Fix current position with one literal if cheaper */
+ { U32 const litlen = (opt[cur-1].mlen == 1) ? opt[cur-1].litlen + 1 : 1;
+ int price; /* note : contribution can be negative */
if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
- } else
- price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
- } else {
- litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
- }
-
- if (cur > last_pos || price <= opt[cur].price)
- SET_PRICE(cur, 1, 0, litlen, price);
+ price = opt[cur - litlen].price + ZSTD_literalsContribution(inr-litlen, litlen, optStatePtr);
+ } else {
+ price = ZSTD_literalsContribution_cached(&cachedLitPrice, anchor, litlen, optStatePtr);
+ }
+ assert(price < 1000000000); /* overflow check */
+ if (price <= opt[cur].price) {
+ DEBUGLOG(7, "rPos:%u : better price (%u<%u) using literal",
+ cur, price, opt[cur].price);
+ opt[cur].mlen = 1;
+ opt[cur].off = 0;
+ opt[cur].litlen = litlen;
+ opt[cur].price = price;
+ memcpy(opt[cur].rep, opt[cur-1].rep, sizeof(opt[cur].rep));
+ } }
+
+ /* last match must start at a minimum distance of 8 from oend */
+ if (inr > ilimit) continue;
if (cur == last_pos) break;
- if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
- continue;
-
- mlen = opt[cur].mlen;
- if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
- opt[cur].rep[2] = opt[cur-mlen].rep[1];
- opt[cur].rep[1] = opt[cur-mlen].rep[0];
- opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
- } else {
- opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
- opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
- assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1));
- opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
- }
+ if ( (optLevel==0) /*static*/
+ && (opt[cur+1].price <= opt[cur].price) )
+ continue; /* skip unpromising positions; about ~+6% speed, -0.01 ratio */
+
+ { U32 const ll0 = (opt[cur].mlen != 1);
+ U32 const litlen = (opt[cur].mlen == 1) ? opt[cur].litlen : 0;
+ U32 const previousPrice = (cur > litlen) ? opt[cur-litlen].price : 0;
+ U32 const basePrice = previousPrice + ZSTD_fullLiteralsCost(inr-litlen, litlen, optStatePtr);
+ U32 const nbMatches = ZSTD_BtGetAllMatches(ctx, inr, iend, extDict, maxSearches, mls, sufficient_len, opt[cur].rep, ll0, matches, minMatch);
+ U32 matchNb;
+ if (!nbMatches) continue;
+
+ { U32 const maxML = matches[nbMatches-1].len;
+ DEBUGLOG(7, "rPos:%u, found %u matches, of maxLength=%u",
+ cur, nbMatches, maxML);
+
+ if ( (maxML > sufficient_len)
+ | (cur + maxML >= ZSTD_OPT_NUM) ) {
+ best_mlen = maxML;
+ best_off = matches[nbMatches-1].off;
+ last_pos = cur + 1;
+ goto _shortestPath;
+ }
+ }
- best_mlen = minMatch;
- { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
- for (i = (mlen != 1); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
- const U32 repIndex = (U32)(current+cur - repCur);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if ( (repCur > 0 && repCur <= (S32)(current+cur))
- && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
- && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
- /* repcode detected */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- mlen = (U32)ZSTD_count_2segments(inr+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
-
- if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; last_pos = cur + 1;
- goto _storeSequence;
+ /* set prices using matches found at position == cur */
+ for (matchNb = 0; matchNb < nbMatches; matchNb++) {
+ U32 const offset = matches[matchNb].off;
+ repcodes_t const repHistory = ZSTD_updateRep(opt[cur].rep, offset, ll0);
+ U32 const lastML = matches[matchNb].len;
+ U32 const startML = (matchNb>0) ? matches[matchNb-1].len+1 : minMatch;
+ U32 mlen;
+
+ DEBUGLOG(7, "testing match %u => offCode=%u, mlen=%u, llen=%u",
+ matchNb, matches[matchNb].off, lastML, litlen);
+
+ for (mlen = lastML; mlen >= startML; mlen--) {
+ U32 const pos = cur + mlen;
+ int const price = basePrice + ZSTD_getMatchPrice(offset, mlen, optStatePtr, optLevel);
+
+ if ((pos > last_pos) || (price < opt[pos].price)) {
+ DEBUGLOG(7, "rPos:%u => new better price (%u<%u)",
+ pos, price, opt[pos].price);
+ while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; }
+ opt[pos].mlen = mlen;
+ opt[pos].off = offset;
+ opt[pos].litlen = litlen;
+ opt[pos].price = price;
+ memcpy(opt[pos].rep, &repHistory, sizeof(repHistory));
+ } else {
+ if (optLevel==0) break; /* gets ~+10% speed for about -0.01 ratio loss */
}
-
- best_off = i - (opt[cur].mlen != 1);
- if (mlen > best_mlen) best_mlen = mlen;
-
- do {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
- } else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
- SET_PRICE(cur + mlen, mlen, i, litlen, price);
- mlen--;
- } while (mlen >= minMatch);
} } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, inr, iend, maxSearches, mls, matches, minMatch);
-
- if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- last_pos = cur + 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = cur */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
-
- while (mlen <= best_mlen) {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
- else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
- SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
-
- mlen++;
- } } } /* for (cur = 1; cur <= last_pos; cur++) */
+ } /* for (cur = 1; cur <= last_pos; cur++) */
best_mlen = opt[last_pos].mlen;
best_off = opt[last_pos].off;
cur = last_pos - best_mlen;
- /* store sequence */
-_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
- opt[0].mlen = 1;
-
- while (1) {
- mlen = opt[cur].mlen;
- offset = opt[cur].off;
- opt[cur].mlen = best_mlen;
- opt[cur].off = best_off;
- best_mlen = mlen;
- best_off = offset;
- if (mlen > cur) break;
- cur -= mlen;
- }
-
- for (u = 0; u <= last_pos; ) {
- u += opt[u].mlen;
- }
+_shortestPath: /* cur, last_pos, best_mlen, best_off have to be set */
+ assert(opt[0].mlen == 1);
+
+ /* reverse traversal */
+ DEBUGLOG(7, "start reverse traversal (last_pos:%u, cur:%u)",
+ last_pos, cur);
+ { U32 selectedMatchLength = best_mlen;
+ U32 selectedOffset = best_off;
+ U32 pos = cur;
+ while (1) {
+ U32 const mlen = opt[pos].mlen;
+ U32 const off = opt[pos].off;
+ opt[pos].mlen = selectedMatchLength;
+ opt[pos].off = selectedOffset;
+ selectedMatchLength = mlen;
+ selectedOffset = off;
+ if (mlen > pos) break;
+ pos -= mlen;
+ } }
- for (cur=0; cur < last_pos; ) {
- mlen = opt[cur].mlen;
- if (mlen == 1) { ip++; cur++; continue; }
- offset = opt[cur].off;
- cur += mlen;
- litLength = (U32)(ip - anchor);
-
- if (offset > ZSTD_REP_MOVE_OPT) {
- rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = offset - ZSTD_REP_MOVE_OPT;
- offset--;
- } else {
- if (offset != 0) {
- best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
- if (offset != 1) rep[2] = rep[1];
+ /* save sequences */
+ { U32 pos;
+ for (pos=0; pos < last_pos; ) {
+ U32 const llen = (U32)(ip - anchor);
+ U32 const mlen = opt[pos].mlen;
+ U32 const offset = opt[pos].off;
+ if (mlen == 1) { ip++; pos++; continue; } /* literal position => move on */
+ pos += mlen; ip += mlen;
+
+ /* repcodes update : like ZSTD_updateRep(), but update in place */
+ if (offset >= ZSTD_REP_NUM) { /* full offset */
+ rep[2] = rep[1];
rep[1] = rep[0];
- rep[0] = best_off;
+ rep[0] = offset - ZSTD_REP_MOVE;
+ } else { /* repcode */
+ U32 const repCode = offset + (llen==0);
+ if (repCode) { /* note : if repCode==0, no change */
+ U32 const currentOffset = (repCode==ZSTD_REP_NUM) ? (rep[0] - 1) : rep[repCode];
+ if (repCode >= 2) rep[2] = rep[1];
+ rep[1] = rep[0];
+ rep[0] = currentOffset;
+ }
}
- if (litLength==0) offset--;
- }
-
- ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
- anchor = ip = ip + mlen;
- } } /* for (cur=0; cur < last_pos; ) */
+ ZSTD_updateStats(optStatePtr, llen, anchor, offset, mlen);
+ ZSTD_storeSeq(seqStorePtr, llen, anchor, offset, mlen-MINMATCH);
+ anchor = ip;
+ } }
+ ZSTD_setLog2Prices(optStatePtr);
+ } /* while (ip < ilimit) */
/* Save reps for next block */
{ int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
@@ -946,12 +763,23 @@ _storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
}
+size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ DEBUGLOG(5, "ZSTD_compressBlock_btopt");
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0 /*optLevel*/, 0 /*extDict*/);
+}
+
+size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 2 /*optLevel*/, 0 /*extDict*/);
+}
+
size_t ZSTD_compressBlock_btopt_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
{
- return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 0);
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0 /*optLevel*/, 1 /*extDict*/);
}
size_t ZSTD_compressBlock_btultra_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
{
- return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 1);
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 2 /*optLevel*/, 1 /*extDict*/);
}
diff --git a/thirdparty/zstd/compress/zstd_opt.h b/thirdparty/zstd/compress/zstd_opt.h
index 816a1fabbf..82e810c293 100644
--- a/thirdparty/zstd/compress/zstd_opt.h
+++ b/thirdparty/zstd/compress/zstd_opt.h
@@ -11,12 +11,12 @@
#ifndef ZSTD_OPT_H
#define ZSTD_OPT_H
-#include "zstd_compress.h"
-
#if defined (__cplusplus)
extern "C" {
#endif
+#include "zstd.h" /* ZSTD_CCtx, size_t */
+
size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
diff --git a/thirdparty/zstd/compress/zstdmt_compress.c b/thirdparty/zstd/compress/zstdmt_compress.c
index 7831cd3bd8..e51edf124f 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.c
+++ b/thirdparty/zstd/compress/zstdmt_compress.c
@@ -24,7 +24,7 @@
#include <string.h> /* memcpy, memset */
#include "pool.h" /* threadpool */
#include "threading.h" /* mutex */
-#include "zstd_internal.h" /* MIN, ERROR, ZSTD_*, ZSTD_highbit32 */
+#include "zstd_compress_internal.h" /* MIN, ERROR, ZSTD_*, ZSTD_highbit32 */
#include "zstdmt_compress.h"
@@ -140,9 +140,12 @@ static size_t ZSTDMT_sizeof_bufferPool(ZSTDMT_bufferPool* bufPool)
return poolSize + totalBufferSize;
}
-static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize)
+static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* const bufPool, size_t const bSize)
{
+ ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
+ DEBUGLOG(4, "ZSTDMT_setBufferSize: bSize = %u", (U32)bSize);
bufPool->bufferSize = bSize;
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
}
/** ZSTDMT_getBuffer() :
@@ -150,28 +153,31 @@ static void ZSTDMT_setBufferSize(ZSTDMT_bufferPool* bufPool, size_t bSize)
static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* bufPool)
{
size_t const bSize = bufPool->bufferSize;
- DEBUGLOG(5, "ZSTDMT_getBuffer");
+ DEBUGLOG(5, "ZSTDMT_getBuffer: bSize = %u", (U32)bufPool->bufferSize);
ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
if (bufPool->nbBuffers) { /* try to use an existing buffer */
buffer_t const buf = bufPool->bTable[--(bufPool->nbBuffers)];
size_t const availBufferSize = buf.size;
bufPool->bTable[bufPool->nbBuffers] = g_nullBuffer;
- if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize)) {
+ if ((availBufferSize >= bSize) & ((availBufferSize>>3) <= bSize)) {
/* large enough, but not too much */
+ DEBUGLOG(5, "ZSTDMT_getBuffer: provide buffer %u of size %u",
+ bufPool->nbBuffers, (U32)buf.size);
ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
return buf;
}
/* size conditions not respected : scratch this buffer, create new one */
- DEBUGLOG(5, "existing buffer does not meet size conditions => freeing");
+ DEBUGLOG(5, "ZSTDMT_getBuffer: existing buffer does not meet size conditions => freeing");
ZSTD_free(buf.start, bufPool->cMem);
}
ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
/* create new buffer */
- DEBUGLOG(5, "create a new buffer");
+ DEBUGLOG(5, "ZSTDMT_getBuffer: create a new buffer");
{ buffer_t buffer;
void* const start = ZSTD_malloc(bSize, bufPool->cMem);
buffer.start = start; /* note : start can be NULL if malloc fails ! */
buffer.size = (start==NULL) ? 0 : bSize;
+ DEBUGLOG(5, "ZSTDMT_getBuffer: created buffer of size %u", (U32)bSize);
return buffer;
}
}
@@ -184,12 +190,14 @@ static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* bufPool, buffer_t buf)
ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
if (bufPool->nbBuffers < bufPool->totalBuffers) {
bufPool->bTable[bufPool->nbBuffers++] = buf; /* stored for later use */
+ DEBUGLOG(5, "ZSTDMT_releaseBuffer: stored buffer of size %u in slot %u",
+ (U32)buf.size, (U32)(bufPool->nbBuffers-1));
ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
return;
}
ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
/* Reached bufferPool capacity (should not happen) */
- DEBUGLOG(5, "buffer pool capacity reached => freeing ");
+ DEBUGLOG(5, "ZSTDMT_releaseBuffer: pool capacity reached => freeing ");
ZSTD_free(buf.start, bufPool->cMem);
}
@@ -302,7 +310,7 @@ static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx)
typedef struct {
buffer_t src;
const void* srcStart;
- size_t dictSize;
+ size_t prefixSize;
size_t srcSize;
buffer_t dstBuff;
size_t cSize;
@@ -324,11 +332,11 @@ typedef struct {
void ZSTDMT_compressChunk(void* jobDescription)
{
ZSTDMT_jobDescription* const job = (ZSTDMT_jobDescription*)jobDescription;
- ZSTD_CCtx* cctx = ZSTDMT_getCCtx(job->cctxPool);
- const void* const src = (const char*)job->srcStart + job->dictSize;
+ ZSTD_CCtx* const cctx = ZSTDMT_getCCtx(job->cctxPool);
+ const void* const src = (const char*)job->srcStart + job->prefixSize;
buffer_t dstBuff = job->dstBuff;
- DEBUGLOG(5, "job (first:%u) (last:%u) : dictSize %u, srcSize %u",
- job->firstChunk, job->lastChunk, (U32)job->dictSize, (U32)job->srcSize);
+ DEBUGLOG(5, "ZSTDMT_compressChunk: job (first:%u) (last:%u) : prefixSize %u, srcSize %u ",
+ job->firstChunk, job->lastChunk, (U32)job->prefixSize, (U32)job->srcSize);
if (cctx==NULL) {
job->cSize = ERROR(memory_allocation);
@@ -342,38 +350,48 @@ void ZSTDMT_compressChunk(void* jobDescription)
goto _endJob;
}
job->dstBuff = dstBuff;
+ DEBUGLOG(5, "ZSTDMT_compressChunk: received dstBuff of size %u", (U32)dstBuff.size);
}
- if (job->cdict) { /* should only happen for first segment */
- size_t const initError = ZSTD_compressBegin_usingCDict_advanced(cctx, job->cdict, job->params.fParams, job->fullFrameSize);
- DEBUGLOG(5, "using CDict");
+ if (job->cdict) {
+ size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, NULL, 0, ZSTD_dm_auto, job->cdict, job->params, job->fullFrameSize);
+ DEBUGLOG(4, "ZSTDMT_compressChunk: init using CDict (windowLog=%u)", job->params.cParams.windowLog);
+ assert(job->firstChunk); /* only allowed for first job */
if (ZSTD_isError(initError)) { job->cSize = initError; goto _endJob; }
} else { /* srcStart points at reloaded section */
- if (!job->firstChunk) job->params.fParams.contentSizeFlag = 0; /* ensure no srcSize control */
- { ZSTD_CCtx_params jobParams = job->params;
- size_t const forceWindowError =
- ZSTD_CCtxParam_setParameter(&jobParams, ZSTD_p_forceMaxWindow, !job->firstChunk);
- /* Force loading dictionary in "content-only" mode (no header analysis) */
- size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, job->srcStart, job->dictSize, ZSTD_dm_rawContent, jobParams, job->fullFrameSize);
- if (ZSTD_isError(initError) || ZSTD_isError(forceWindowError)) {
+ U64 const pledgedSrcSize = job->firstChunk ? job->fullFrameSize : ZSTD_CONTENTSIZE_UNKNOWN;
+ ZSTD_CCtx_params jobParams = job->params; /* do not modify job->params ! copy it, modify the copy */
+ size_t const forceWindowError = ZSTD_CCtxParam_setParameter(&jobParams, ZSTD_p_forceMaxWindow, !job->firstChunk);
+ if (ZSTD_isError(forceWindowError)) {
+ DEBUGLOG(5, "ZSTD_CCtxParam_setParameter error : %s ", ZSTD_getErrorName(forceWindowError));
+ job->cSize = forceWindowError;
+ goto _endJob;
+ }
+ DEBUGLOG(5, "ZSTDMT_compressChunk: invoking ZSTD_compressBegin_advanced_internal with windowLog = %u ", jobParams.cParams.windowLog);
+ { size_t const initError = ZSTD_compressBegin_advanced_internal(cctx,
+ job->srcStart, job->prefixSize, ZSTD_dm_rawContent, /* load dictionary in "content-only" mode (no header analysis) */
+ NULL,
+ jobParams, pledgedSrcSize);
+ if (ZSTD_isError(initError)) {
+ DEBUGLOG(5, "ZSTD_compressBegin_advanced_internal error : %s ", ZSTD_getErrorName(initError));
job->cSize = initError;
goto _endJob;
- }
- } }
- if (!job->firstChunk) { /* flush and overwrite frame header when it's not first segment */
+ } }
+ }
+ if (!job->firstChunk) { /* flush and overwrite frame header when it's not first job */
size_t const hSize = ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, 0);
- if (ZSTD_isError(hSize)) { job->cSize = hSize; goto _endJob; }
+ if (ZSTD_isError(hSize)) { job->cSize = hSize; /* save error code */ goto _endJob; }
ZSTD_invalidateRepCodes(cctx);
}
- DEBUGLOG(5, "Compressing : ");
- DEBUG_PRINTHEX(4, job->srcStart, 12);
+ DEBUGLOG(5, "Compressing into dstBuff of size %u", (U32)dstBuff.size);
+ DEBUG_PRINTHEX(6, job->srcStart, 12);
job->cSize = (job->lastChunk) ?
ZSTD_compressEnd (cctx, dstBuff.start, dstBuff.size, src, job->srcSize) :
ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, job->srcSize);
- DEBUGLOG(5, "compressed %u bytes into %u bytes (first:%u) (last:%u)",
+ DEBUGLOG(5, "compressed %u bytes into %u bytes (first:%u) (last:%u) ",
(unsigned)job->srcSize, (unsigned)job->cSize, job->firstChunk, job->lastChunk);
- DEBUGLOG(5, "dstBuff.size : %u ; => %s", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize));
+ DEBUGLOG(5, "dstBuff.size : %u ; => %s ", (U32)dstBuff.size, ZSTD_getErrorName(job->cSize));
_endJob:
ZSTDMT_releaseCCtx(job->cctxPool, cctx);
@@ -403,13 +421,14 @@ struct ZSTDMT_CCtx_s {
ZSTDMT_CCtxPool* cctxPool;
ZSTD_pthread_mutex_t jobCompleted_mutex;
ZSTD_pthread_cond_t jobCompleted_cond;
+ ZSTD_CCtx_params params;
size_t targetSectionSize;
size_t inBuffSize;
size_t dictSize;
size_t targetDictSize;
inBuff_t inBuff;
- ZSTD_CCtx_params params;
XXH64_state_t xxhState;
+ unsigned singleThreaded;
unsigned jobIDMask;
unsigned doneJobID;
unsigned nextJobID;
@@ -430,20 +449,32 @@ static ZSTDMT_jobDescription* ZSTDMT_allocJobsTable(U32* nbJobsPtr, ZSTD_customM
nbJobs * sizeof(ZSTDMT_jobDescription), cMem);
}
-/* Internal only */
-size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads)
+/* ZSTDMT_CCtxParam_setNbThreads():
+ * Internal use only */
+size_t ZSTDMT_CCtxParam_setNbThreads(ZSTD_CCtx_params* params, unsigned nbThreads)
{
+ if (nbThreads > ZSTDMT_NBTHREADS_MAX) nbThreads = ZSTDMT_NBTHREADS_MAX;
+ if (nbThreads < 1) nbThreads = 1;
params->nbThreads = nbThreads;
params->overlapSizeLog = ZSTDMT_OVERLAPLOG_DEFAULT;
params->jobSize = 0;
- return 0;
+ return nbThreads;
+}
+
+/* ZSTDMT_getNbThreads():
+ * @return nb threads currently active in mtctx.
+ * mtctx must be valid */
+size_t ZSTDMT_getNbThreads(const ZSTDMT_CCtx* mtctx)
+{
+ assert(mtctx != NULL);
+ return mtctx->params.nbThreads;
}
ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
{
ZSTDMT_CCtx* mtctx;
U32 nbJobs = nbThreads + 2;
- DEBUGLOG(3, "ZSTDMT_createCCtx_advanced");
+ DEBUGLOG(3, "ZSTDMT_createCCtx_advanced (nbThreads = %u)", nbThreads);
if (nbThreads < 1) return NULL;
nbThreads = MIN(nbThreads , ZSTDMT_NBTHREADS_MAX);
@@ -453,7 +484,7 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
mtctx = (ZSTDMT_CCtx*) ZSTD_calloc(sizeof(ZSTDMT_CCtx), cMem);
if (!mtctx) return NULL;
- ZSTDMT_initializeCCtxParameters(&mtctx->params, nbThreads);
+ ZSTDMT_CCtxParam_setNbThreads(&mtctx->params, nbThreads);
mtctx->cMem = cMem;
mtctx->allJobsCompleted = 1;
mtctx->factory = POOL_create_advanced(nbThreads, 0, cMem);
@@ -545,17 +576,23 @@ size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx)
}
/* Internal only */
-size_t ZSTDMT_CCtxParam_setMTCtxParameter(
- ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value) {
+size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params,
+ ZSTDMT_parameter parameter, unsigned value) {
+ DEBUGLOG(4, "ZSTDMT_CCtxParam_setMTCtxParameter");
switch(parameter)
{
- case ZSTDMT_p_sectionSize :
+ case ZSTDMT_p_jobSize :
+ DEBUGLOG(4, "ZSTDMT_CCtxParam_setMTCtxParameter : set jobSize to %u", value);
+ if ( (value > 0) /* value==0 => automatic job size */
+ & (value < ZSTDMT_JOBSIZE_MIN) )
+ value = ZSTDMT_JOBSIZE_MIN;
params->jobSize = value;
- return 0;
+ return value;
case ZSTDMT_p_overlapSectionLog :
+ if (value > 9) value = 9;
DEBUGLOG(4, "ZSTDMT_p_overlapSectionLog : %u", value);
params->overlapSizeLog = (value >= 9) ? 9 : value;
- return 0;
+ return value;
default :
return ERROR(parameter_unsupported);
}
@@ -563,9 +600,10 @@ size_t ZSTDMT_CCtxParam_setMTCtxParameter(
size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value)
{
+ DEBUGLOG(4, "ZSTDMT_setMTCtxParameter");
switch(parameter)
{
- case ZSTDMT_p_sectionSize :
+ case ZSTDMT_p_jobSize :
return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value);
case ZSTDMT_p_overlapSectionLog :
return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value);
@@ -601,7 +639,7 @@ static size_t ZSTDMT_compress_advanced_internal(
size_t const overlapSize = (overlapRLog>=9) ? 0 : (size_t)1 << (params.cParams.windowLog - overlapRLog);
unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, params.nbThreads);
size_t const proposedChunkSize = (srcSize + (nbChunks-1)) / nbChunks;
- size_t const avgChunkSize = ((proposedChunkSize & 0x1FFFF) < 0x7FFF) ? proposedChunkSize + 0xFFFF : proposedChunkSize; /* avoid too small last block */
+ size_t const avgChunkSize = (((proposedChunkSize-1) & 0x1FFFF) < 0x7FFF) ? proposedChunkSize + 0xFFFF : proposedChunkSize; /* avoid too small last block */
const char* const srcStart = (const char*)src;
size_t remainingSrcSize = srcSize;
unsigned const compressWithinDst = (dstCapacity >= ZSTD_compressBound(srcSize)) ? nbChunks : (unsigned)(dstCapacity / ZSTD_compressBound(avgChunkSize)); /* presumes avgChunkSize >= 256 KB, which should be the case */
@@ -610,7 +648,8 @@ static size_t ZSTDMT_compress_advanced_internal(
assert(jobParams.nbThreads == 0);
assert(mtctx->cctxPool->totalCCtx == params.nbThreads);
- DEBUGLOG(4, "nbChunks : %2u (chunkSize : %u bytes) ", nbChunks, (U32)avgChunkSize);
+ DEBUGLOG(4, "ZSTDMT_compress_advanced_internal: nbChunks=%2u (rawSize=%u bytes; fixedSize=%u) ",
+ nbChunks, (U32)proposedChunkSize, (U32)avgChunkSize);
if (nbChunks==1) { /* fallback to single-thread mode */
ZSTD_CCtx* const cctx = mtctx->cctxPool->cctx[0];
if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, jobParams.fParams);
@@ -639,9 +678,9 @@ static size_t ZSTDMT_compress_advanced_internal(
mtctx->jobs[u].src = g_nullBuffer;
mtctx->jobs[u].srcStart = srcStart + frameStartPos - dictSize;
- mtctx->jobs[u].dictSize = dictSize;
+ mtctx->jobs[u].prefixSize = dictSize;
mtctx->jobs[u].srcSize = chunkSize;
- mtctx->jobs[u].cdict = mtctx->nextJobID==0 ? cdict : NULL;
+ mtctx->jobs[u].cdict = (u==0) ? cdict : NULL;
mtctx->jobs[u].fullFrameSize = srcSize;
mtctx->jobs[u].params = jobParams;
/* do not calculate checksum within sections, but write it in header for first section */
@@ -659,7 +698,7 @@ static size_t ZSTDMT_compress_advanced_internal(
XXH64_update(&xxh64, srcStart + frameStartPos, chunkSize);
}
- DEBUGLOG(5, "posting job %u (%u bytes)", u, (U32)chunkSize);
+ DEBUGLOG(5, "ZSTDMT_compress_advanced_internal: posting job %u (%u bytes)", u, (U32)chunkSize);
DEBUG_PRINTHEX(6, mtctx->jobs[u].srcStart, 12);
POOL_add(mtctx->factory, ZSTDMT_compressChunk, &mtctx->jobs[u]);
@@ -753,13 +792,14 @@ size_t ZSTDMT_initCStream_internal(
const ZSTD_CDict* cdict, ZSTD_CCtx_params params,
unsigned long long pledgedSrcSize)
{
- DEBUGLOG(4, "ZSTDMT_initCStream_internal");
+ DEBUGLOG(4, "ZSTDMT_initCStream_internal (pledgedSrcSize=%u)", (U32)pledgedSrcSize);
/* params are supposed to be fully validated at this point */
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
assert(zcs->cctxPool->totalCCtx == params.nbThreads);
+ zcs->singleThreaded = (params.nbThreads==1) | (pledgedSrcSize <= ZSTDMT_JOBSIZE_MIN); /* do not trigger multi-threading when srcSize is too small */
- if (params.nbThreads==1) {
+ if (zcs->singleThreaded) {
ZSTD_CCtx_params const singleThreadParams = ZSTDMT_makeJobCCtxParams(params);
DEBUGLOG(4, "single thread mode");
assert(singleThreadParams.nbThreads == 0);
@@ -767,6 +807,7 @@ size_t ZSTDMT_initCStream_internal(
dict, dictSize, cdict,
singleThreadParams, pledgedSrcSize);
}
+ DEBUGLOG(4, "multi-threading mode (%u threads)", params.nbThreads);
if (zcs->allJobsCompleted == 0) { /* previous compression not correctly finished */
ZSTDMT_waitForAllJobsCompleted(zcs);
@@ -777,7 +818,6 @@ size_t ZSTDMT_initCStream_internal(
zcs->params = params;
zcs->frameContentSize = pledgedSrcSize;
if (dict) {
- DEBUGLOG(4,"cdictLocal: %08X", (U32)(size_t)zcs->cdictLocal);
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = ZSTD_createCDict_advanced(dict, dictSize,
ZSTD_dlm_byCopy, dictMode, /* note : a loadPrefix becomes an internal CDict */
@@ -785,20 +825,20 @@ size_t ZSTDMT_initCStream_internal(
zcs->cdict = zcs->cdictLocal;
if (zcs->cdictLocal == NULL) return ERROR(memory_allocation);
} else {
- DEBUGLOG(4,"cdictLocal: %08X", (U32)(size_t)zcs->cdictLocal);
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = NULL;
zcs->cdict = cdict;
}
+ assert(params.overlapSizeLog <= 9);
zcs->targetDictSize = (params.overlapSizeLog==0) ? 0 : (size_t)1 << (params.cParams.windowLog - (9 - params.overlapSizeLog));
- DEBUGLOG(4, "overlapLog : %u ", params.overlapSizeLog);
- DEBUGLOG(4, "overlap Size : %u KB", (U32)(zcs->targetDictSize>>10));
+ DEBUGLOG(4, "overlapLog=%u => %u KB", params.overlapSizeLog, (U32)(zcs->targetDictSize>>10));
zcs->targetSectionSize = params.jobSize ? params.jobSize : (size_t)1 << (params.cParams.windowLog + 2);
- zcs->targetSectionSize = MAX(ZSTDMT_SECTION_SIZE_MIN, zcs->targetSectionSize);
- zcs->targetSectionSize = MAX(zcs->targetDictSize, zcs->targetSectionSize);
- DEBUGLOG(4, "Section Size : %u KB", (U32)(zcs->targetSectionSize>>10));
+ if (zcs->targetSectionSize < ZSTDMT_JOBSIZE_MIN) zcs->targetSectionSize = ZSTDMT_JOBSIZE_MIN;
+ if (zcs->targetSectionSize < zcs->targetDictSize) zcs->targetSectionSize = zcs->targetDictSize; /* job size must be >= overlap size */
+ DEBUGLOG(4, "Job Size : %u KB (note : set to %u)", (U32)(zcs->targetSectionSize>>10), params.jobSize);
zcs->inBuffSize = zcs->targetDictSize + zcs->targetSectionSize;
+ DEBUGLOG(4, "inBuff Size : %u KB", (U32)(zcs->inBuffSize>>10));
ZSTDMT_setBufferSize(zcs->bufPool, MAX(zcs->inBuffSize, ZSTD_compressBound(zcs->targetSectionSize)) );
zcs->inBuff.buffer = g_nullBuffer;
zcs->dictSize = 0;
@@ -816,7 +856,7 @@ size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
unsigned long long pledgedSrcSize)
{
ZSTD_CCtx_params cctxParams = mtctx->params;
- DEBUGLOG(5, "ZSTDMT_initCStream_advanced");
+ DEBUGLOG(5, "ZSTDMT_initCStream_advanced (pledgedSrcSize=%u)", (U32)pledgedSrcSize);
cctxParams.cParams = params.cParams;
cctxParams.fParams = params.fParams;
return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, ZSTD_dm_auto, NULL,
@@ -838,9 +878,12 @@ size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
/* ZSTDMT_resetCStream() :
- * pledgedSrcSize is optional and can be zero == unknown */
+ * pledgedSrcSize can be zero == unknown (for the time being)
+ * prefer using ZSTD_CONTENTSIZE_UNKNOWN,
+ * as `0` might mean "empty" in the future */
size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* zcs, unsigned long long pledgedSrcSize)
{
+ if (!pledgedSrcSize) pledgedSrcSize = ZSTD_CONTENTSIZE_UNKNOWN;
if (zcs->params.nbThreads==1)
return ZSTD_resetCStream(zcs->cctxPool->cctx[0], pledgedSrcSize);
return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, 0, zcs->params,
@@ -852,7 +895,7 @@ size_t ZSTDMT_initCStream(ZSTDMT_CCtx* zcs, int compressionLevel) {
ZSTD_CCtx_params cctxParams = zcs->params;
cctxParams.cParams = params.cParams;
cctxParams.fParams = params.fParams;
- return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, NULL, cctxParams, 0);
+ return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, NULL, cctxParams, ZSTD_CONTENTSIZE_UNKNOWN);
}
@@ -860,12 +903,12 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
{
unsigned const jobID = zcs->nextJobID & zcs->jobIDMask;
- DEBUGLOG(4, "preparing job %u to compress %u bytes with %u preload ",
+ DEBUGLOG(5, "ZSTDMT_createCompressionJob: preparing job %u to compress %u bytes with %u preload ",
zcs->nextJobID, (U32)srcSize, (U32)zcs->dictSize);
zcs->jobs[jobID].src = zcs->inBuff.buffer;
zcs->jobs[jobID].srcStart = zcs->inBuff.buffer.start;
zcs->jobs[jobID].srcSize = srcSize;
- zcs->jobs[jobID].dictSize = zcs->dictSize;
+ zcs->jobs[jobID].prefixSize = zcs->dictSize;
assert(zcs->inBuff.filled >= srcSize + zcs->dictSize);
zcs->jobs[jobID].params = zcs->params;
/* do not calculate checksum within sections, but write it in header for first section */
@@ -911,7 +954,7 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
zcs->params.fParams.checksumFlag = 0;
} }
- DEBUGLOG(4, "posting job %u : %u bytes (end:%u) (note : doneJob = %u=>%u)",
+ DEBUGLOG(5, "ZSTDMT_createCompressionJob: posting job %u : %u bytes (end:%u) (note : doneJob = %u=>%u)",
zcs->nextJobID,
(U32)zcs->jobs[jobID].srcSize,
zcs->jobs[jobID].lastChunk,
@@ -930,6 +973,7 @@ static size_t ZSTDMT_createCompressionJob(ZSTDMT_CCtx* zcs, size_t srcSize, unsi
static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsigned blockToFlush)
{
unsigned const wJobID = zcs->doneJobID & zcs->jobIDMask;
+ DEBUGLOG(5, "ZSTDMT_flushNextJob");
if (zcs->doneJobID == zcs->nextJobID) return 0; /* all flushed ! */
ZSTD_PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex);
while (zcs->jobs[wJobID].jobCompleted==0) {
@@ -942,7 +986,8 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
{ ZSTDMT_jobDescription job = zcs->jobs[wJobID];
if (!job.jobScanned) {
if (ZSTD_isError(job.cSize)) {
- DEBUGLOG(5, "compression error detected ");
+ DEBUGLOG(5, "job %u : compression error detected : %s",
+ zcs->doneJobID, ZSTD_getErrorName(job.cSize));
ZSTDMT_waitForAllJobsCompleted(zcs);
ZSTDMT_releaseAllJobResources(zcs);
return job.cSize;
@@ -991,15 +1036,18 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
{
size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize;
unsigned forwardInputProgress = 0;
+ DEBUGLOG(5, "ZSTDMT_compressStream_generic ");
assert(output->pos <= output->size);
assert(input->pos <= input->size);
+
+ if (mtctx->singleThreaded) { /* delegate to single-thread (synchronous) */
+ return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp);
+ }
+
if ((mtctx->frameEnded) && (endOp==ZSTD_e_continue)) {
/* current frame being ended. Only flush/end are allowed */
return ERROR(stage_wrong);
}
- if (mtctx->params.nbThreads==1) { /* delegate to single-thread (synchronous) */
- return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp);
- }
/* single-pass shortcut (note : synchronous-mode) */
if ( (mtctx->nextJobID == 0) /* just started */
@@ -1068,32 +1116,34 @@ size_t ZSTDMT_compressStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, ZSTD_inBu
}
-static size_t ZSTDMT_flushStream_internal(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsigned endFrame)
+static size_t ZSTDMT_flushStream_internal(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, unsigned endFrame)
{
- size_t const srcSize = zcs->inBuff.filled - zcs->dictSize;
+ size_t const srcSize = mtctx->inBuff.filled - mtctx->dictSize;
+ DEBUGLOG(5, "ZSTDMT_flushStream_internal");
- if ( ((srcSize > 0) || (endFrame && !zcs->frameEnded))
- && (zcs->nextJobID <= zcs->doneJobID + zcs->jobIDMask) ) {
- CHECK_F( ZSTDMT_createCompressionJob(zcs, srcSize, endFrame) );
+ if ( ((srcSize > 0) || (endFrame && !mtctx->frameEnded))
+ && (mtctx->nextJobID <= mtctx->doneJobID + mtctx->jobIDMask) ) {
+ DEBUGLOG(5, "ZSTDMT_flushStream_internal : create a new job");
+ CHECK_F( ZSTDMT_createCompressionJob(mtctx, srcSize, endFrame) );
}
/* check if there is any data available to flush */
- return ZSTDMT_flushNextJob(zcs, output, 1 /* blockToFlush */);
+ return ZSTDMT_flushNextJob(mtctx, output, 1 /* blockToFlush */);
}
-size_t ZSTDMT_flushStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output)
+size_t ZSTDMT_flushStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output)
{
DEBUGLOG(5, "ZSTDMT_flushStream");
- if (zcs->params.nbThreads==1)
- return ZSTD_flushStream(zcs->cctxPool->cctx[0], output);
- return ZSTDMT_flushStream_internal(zcs, output, 0 /* endFrame */);
+ if (mtctx->singleThreaded)
+ return ZSTD_flushStream(mtctx->cctxPool->cctx[0], output);
+ return ZSTDMT_flushStream_internal(mtctx, output, 0 /* endFrame */);
}
-size_t ZSTDMT_endStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output)
+size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output)
{
DEBUGLOG(4, "ZSTDMT_endStream");
- if (zcs->params.nbThreads==1)
- return ZSTD_endStream(zcs->cctxPool->cctx[0], output);
- return ZSTDMT_flushStream_internal(zcs, output, 1 /* endFrame */);
+ if (mtctx->singleThreaded)
+ return ZSTD_endStream(mtctx->cctxPool->cctx[0], output);
+ return ZSTDMT_flushStream_internal(mtctx, output, 1 /* endFrame */);
}
diff --git a/thirdparty/zstd/compress/zstdmt_compress.h b/thirdparty/zstd/compress/zstdmt_compress.h
index 8c59c684f1..d12f0adb8d 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.h
+++ b/thirdparty/zstd/compress/zstdmt_compress.h
@@ -50,7 +50,7 @@ ZSTDLIB_API size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
/* === Streaming functions === */
ZSTDLIB_API size_t ZSTDMT_initCStream(ZSTDMT_CCtx* mtctx, int compressionLevel);
-ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be zero == unknown */
+ZSTDLIB_API size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* mtctx, unsigned long long pledgedSrcSize); /**< if srcSize is not known at reset time, use ZSTD_CONTENTSIZE_UNKNOWN. Note: for compatibility with older programs, 0 means the same as ZSTD_CONTENTSIZE_UNKNOWN, but it may change in the future, to mean "empty" */
ZSTDLIB_API size_t ZSTDMT_compressStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input);
@@ -60,8 +60,8 @@ ZSTDLIB_API size_t ZSTDMT_endStream(ZSTDMT_CCtx* mtctx, ZSTD_outBuffer* output);
/* === Advanced functions and parameters === */
-#ifndef ZSTDMT_SECTION_SIZE_MIN
-# define ZSTDMT_SECTION_SIZE_MIN (1U << 20) /* 1 MB - Minimum size of each compression job */
+#ifndef ZSTDMT_JOBSIZE_MIN
+# define ZSTDMT_JOBSIZE_MIN (1U << 20) /* 1 MB - Minimum size of each compression job */
#endif
ZSTDLIB_API size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
@@ -84,13 +84,13 @@ ZSTDLIB_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
/* ZSTDMT_parameter :
* List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
typedef enum {
- ZSTDMT_p_sectionSize, /* size of input "section". Each section is compressed in parallel. 0 means default, which is dynamically determined within compression functions */
- ZSTDMT_p_overlapSectionLog /* Log of overlapped section; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */
+ ZSTDMT_p_jobSize, /* Each job is compressed in parallel. By default, this value is dynamically determined depending on compression parameters. Can be set explicitly here. */
+ ZSTDMT_p_overlapSectionLog /* Each job may reload a part of previous job to enhance compressionr ratio; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */
} ZSTDMT_parameter;
/* ZSTDMT_setMTCtxParameter() :
* allow setting individual parameters, one at a time, among a list of enums defined in ZSTDMT_parameter.
- * The function must be called typically after ZSTD_createCCtx().
+ * The function must be called typically after ZSTD_createCCtx() but __before ZSTDMT_init*() !__
* Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value);
@@ -112,7 +112,15 @@ ZSTDLIB_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value);
-size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads);
+/* ZSTDMT_CCtxParam_setNbThreads()
+ * Set nbThreads, and clamp it correctly,
+ * also reset jobSize and overlapLog */
+size_t ZSTDMT_CCtxParam_setNbThreads(ZSTD_CCtx_params* params, unsigned nbThreads);
+
+/* ZSTDMT_getNbThreads():
+ * @return nb threads currently active in mtctx.
+ * mtctx must be valid */
+size_t ZSTDMT_getNbThreads(const ZSTDMT_CCtx* mtctx);
/*! ZSTDMT_initCStream_internal() :
* Private use only. Init streaming operation.
diff --git a/thirdparty/zstd/decompress/zstd_decompress.c b/thirdparty/zstd/decompress/zstd_decompress.c
index 96fc609089..a59d944112 100644
--- a/thirdparty/zstd/decompress/zstd_decompress.c
+++ b/thirdparty/zstd/decompress/zstd_decompress.c
@@ -827,9 +827,9 @@ typedef struct {
FSE_DState_t stateOffb;
FSE_DState_t stateML;
size_t prevOffset[ZSTD_REP_NUM];
- const BYTE* base;
+ const BYTE* prefixStart;
+ const BYTE* dictEnd;
size_t pos;
- uPtrDiff gotoDict;
} seqState_t;
@@ -1224,8 +1224,9 @@ seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, ZSTD_longOffset_e const long
BIT_reloadDStream(&seqState->DStream);
{ size_t const pos = seqState->pos + seq.litLength;
- seq.match = seqState->base + pos - seq.offset; /* single memory segment */
- if (seq.offset > pos) seq.match += seqState->gotoDict; /* separate memory segment */
+ const BYTE* const matchBase = (seq.offset > pos) ? seqState->dictEnd : seqState->prefixStart;
+ seq.match = matchBase + pos - seq.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted.
+ * No consequence though : no memory access will occur, overly large offset will be detected in ZSTD_execSequenceLong() */
seqState->pos = pos + seq.matchLength;
}
@@ -1243,7 +1244,7 @@ HINT_INLINE
size_t ZSTD_execSequenceLong(BYTE* op,
BYTE* const oend, seq_t sequence,
const BYTE** litPtr, const BYTE* const litLimit,
- const BYTE* const base, const BYTE* const vBase, const BYTE* const dictEnd)
+ const BYTE* const prefixStart, const BYTE* const dictStart, const BYTE* const dictEnd)
{
BYTE* const oLitEnd = op + sequence.litLength;
size_t const sequenceLength = sequence.litLength + sequence.matchLength;
@@ -1253,21 +1254,21 @@ size_t ZSTD_execSequenceLong(BYTE* op,
const BYTE* match = sequence.match;
/* check */
- if (oMatchEnd>oend) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of WILDCOPY_OVERLENGTH from oend */
+ if (oMatchEnd > oend) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of WILDCOPY_OVERLENGTH from oend */
if (iLitEnd > litLimit) return ERROR(corruption_detected); /* over-read beyond lit buffer */
- if (oLitEnd>oend_w) return ZSTD_execSequenceLast7(op, oend, sequence, litPtr, litLimit, base, vBase, dictEnd);
+ if (oLitEnd > oend_w) return ZSTD_execSequenceLast7(op, oend, sequence, litPtr, litLimit, prefixStart, dictStart, dictEnd);
/* copy Literals */
- ZSTD_copy8(op, *litPtr);
+ ZSTD_copy8(op, *litPtr); /* note : op <= oLitEnd <= oend_w == oend - 8 */
if (sequence.litLength > 8)
ZSTD_wildcopy(op+8, (*litPtr)+8, sequence.litLength - 8); /* note : since oLitEnd <= oend-WILDCOPY_OVERLENGTH, no risk of overwrite beyond oend */
op = oLitEnd;
*litPtr = iLitEnd; /* update for next sequence */
/* copy Match */
- if (sequence.offset > (size_t)(oLitEnd - base)) {
+ if (sequence.offset > (size_t)(oLitEnd - prefixStart)) {
/* offset beyond prefix */
- if (sequence.offset > (size_t)(oLitEnd - vBase)) return ERROR(corruption_detected);
+ if (sequence.offset > (size_t)(oLitEnd - dictStart)) return ERROR(corruption_detected);
if (match + sequence.matchLength <= dictEnd) {
memmove(oLitEnd, match, sequence.matchLength);
return sequenceLength;
@@ -1277,7 +1278,7 @@ size_t ZSTD_execSequenceLong(BYTE* op,
memmove(oLitEnd, match, length1);
op = oLitEnd + length1;
sequence.matchLength -= length1;
- match = base;
+ match = prefixStart;
if (op > oend_w || sequence.matchLength < MINMATCH) {
U32 i;
for (i = 0; i < sequence.matchLength; ++i) op[i] = match[i];
@@ -1331,8 +1332,8 @@ static size_t ZSTD_decompressSequencesLong(
BYTE* op = ostart;
const BYTE* litPtr = dctx->litPtr;
const BYTE* const litEnd = litPtr + dctx->litSize;
- const BYTE* const base = (const BYTE*) (dctx->base);
- const BYTE* const vBase = (const BYTE*) (dctx->vBase);
+ const BYTE* const prefixStart = (const BYTE*) (dctx->base);
+ const BYTE* const dictStart = (const BYTE*) (dctx->vBase);
const BYTE* const dictEnd = (const BYTE*) (dctx->dictEnd);
int nbSeq;
@@ -1353,9 +1354,9 @@ static size_t ZSTD_decompressSequencesLong(
int seqNb;
dctx->fseEntropy = 1;
{ U32 i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; }
- seqState.base = base;
- seqState.pos = (size_t)(op-base);
- seqState.gotoDict = (uPtrDiff)dictEnd - (uPtrDiff)base; /* cast to avoid undefined behaviour */
+ seqState.prefixStart = prefixStart;
+ seqState.pos = (size_t)(op-prefixStart);
+ seqState.dictEnd = dictEnd;
CHECK_E(BIT_initDStream(&seqState.DStream, ip, iend-ip), corruption_detected);
FSE_initDState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr);
FSE_initDState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr);
@@ -1370,9 +1371,9 @@ static size_t ZSTD_decompressSequencesLong(
/* decode and decompress */
for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && seqNb<nbSeq ; seqNb++) {
seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, isLongOffset);
- size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd);
+ size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd);
if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
- PREFETCH(sequence.match);
+ PREFETCH(sequence.match); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */
sequences[seqNb&STOSEQ_MASK] = sequence;
op += oneSeqSize;
}
@@ -1381,7 +1382,7 @@ static size_t ZSTD_decompressSequencesLong(
/* finish queue */
seqNb -= seqAdvance;
for ( ; seqNb<nbSeq ; seqNb++) {
- size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[seqNb&STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd);
+ size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[seqNb&STOSEQ_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd);
if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
op += oneSeqSize;
}
@@ -2450,14 +2451,16 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
return ZSTD_decompressLegacyStream(zds->legacyContext, legacyVersion, output, input);
}
#endif
- return hSize; /* error */
+ return hSize; /* error */
}
if (hSize != 0) { /* need more input */
size_t const toLoad = hSize - zds->lhSize; /* if hSize!=0, hSize > zds->lhSize */
- if (toLoad > (size_t)(iend-ip)) { /* not enough input to load full header */
- if (iend-ip > 0) {
- memcpy(zds->headerBuffer + zds->lhSize, ip, iend-ip);
- zds->lhSize += iend-ip;
+ size_t const remainingInput = (size_t)(iend-ip);
+ assert(iend >= ip);
+ if (toLoad > remainingInput) { /* not enough input to load full header */
+ if (remainingInput > 0) {
+ memcpy(zds->headerBuffer + zds->lhSize, ip, remainingInput);
+ zds->lhSize += remainingInput;
}
input->pos = input->size;
return (MAX(ZSTD_frameHeaderSize_min, hSize) - zds->lhSize) + ZSTD_blockHeaderSize; /* remaining header bytes + next block header */
@@ -2472,8 +2475,10 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
&& (U64)(size_t)(oend-op) >= zds->fParams.frameContentSize) {
size_t const cSize = ZSTD_findFrameCompressedSize(istart, iend-istart);
if (cSize <= (size_t)(iend-istart)) {
+ /* shortcut : using single-pass mode */
size_t const decompressedSize = ZSTD_decompress_usingDDict(zds, op, oend-op, istart, cSize, zds->ddict);
if (ZSTD_isError(decompressedSize)) return decompressedSize;
+ DEBUGLOG(4, "shortcut to single-pass ZSTD_decompress_usingDDict()")
ip = istart + cSize;
op += decompressedSize;
zds->expected = 0;
@@ -2496,8 +2501,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
}
/* control buffer memory usage */
- DEBUGLOG(4, "Control max buffer memory usage (max %u KB)",
- (U32)(zds->maxWindowSize >> 10));
+ DEBUGLOG(4, "Control max memory usage (%u KB <= max %u KB)",
+ (U32)(zds->fParams.windowSize >>10),
+ (U32)(zds->maxWindowSize >> 10) );
zds->fParams.windowSize = MAX(zds->fParams.windowSize, 1U << ZSTD_WINDOWLOG_ABSOLUTEMIN);
if (zds->fParams.windowSize > zds->maxWindowSize) return ERROR(frameParameter_windowTooLarge);
@@ -2555,17 +2561,21 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
/* fall-through */
case zdss_load:
{ size_t const neededInSize = ZSTD_nextSrcSizeToDecompress(zds);
- size_t const toLoad = neededInSize - zds->inPos; /* should always be <= remaining space within inBuff */
+ size_t const toLoad = neededInSize - zds->inPos;
+ int const isSkipFrame = ZSTD_isSkipFrame(zds);
size_t loadedSize;
- if (toLoad > zds->inBuffSize - zds->inPos) return ERROR(corruption_detected); /* should never happen */
- loadedSize = ZSTD_limitCopy(zds->inBuff + zds->inPos, toLoad, ip, iend-ip);
+ if (isSkipFrame) {
+ loadedSize = MIN(toLoad, (size_t)(iend-ip));
+ } else {
+ if (toLoad > zds->inBuffSize - zds->inPos) return ERROR(corruption_detected); /* should never happen */
+ loadedSize = ZSTD_limitCopy(zds->inBuff + zds->inPos, toLoad, ip, iend-ip);
+ }
ip += loadedSize;
zds->inPos += loadedSize;
if (loadedSize < toLoad) { someMoreWork = 0; break; } /* not enough input, wait for more */
/* decode loaded input */
- { const int isSkipFrame = ZSTD_isSkipFrame(zds);
- size_t const decodedSize = ZSTD_decompressContinue(zds,
+ { size_t const decodedSize = ZSTD_decompressContinue(zds,
zds->outBuff + zds->outStart, zds->outBuffSize - zds->outStart,
zds->inBuff, neededInSize);
if (ZSTD_isError(decodedSize)) return decodedSize;
diff --git a/thirdparty/zstd/zstd.h b/thirdparty/zstd/zstd.h
index 2194a3b23d..9ac0a73dce 100644
--- a/thirdparty/zstd/zstd.h
+++ b/thirdparty/zstd/zstd.h
@@ -59,7 +59,7 @@ extern "C" {
/*------ Version ------*/
#define ZSTD_VERSION_MAJOR 1
#define ZSTD_VERSION_MINOR 3
-#define ZSTD_VERSION_RELEASE 2
+#define ZSTD_VERSION_RELEASE 3
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll version */
@@ -131,7 +131,7 @@ ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t
/*====== Helper functions ======*/
-#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < 128 KB) ? ((128 KB - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */
+#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */
ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize); /*!< maximum compressed size in worst case scenario */
ZSTDLIB_API unsigned ZSTD_isError(size_t code); /*!< tells if a `size_t` function result is an error code */
ZSTDLIB_API const char* ZSTD_getErrorName(size_t code); /*!< provides readable string from an error code */
@@ -432,12 +432,12 @@ typedef struct {
typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
-/*= Custom memory allocation functions */
+/*--- Custom memory allocation functions ---*/
typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
typedef void (*ZSTD_freeFunction) (void* opaque, void* address);
typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem;
/* use this constant to defer to stdlib's functions */
-static const ZSTD_customMem ZSTD_defaultCMem = { NULL, NULL, NULL };
+static ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL };
/***************************************
@@ -446,7 +446,7 @@ static const ZSTD_customMem ZSTD_defaultCMem = { NULL, NULL, NULL };
/*! ZSTD_findFrameCompressedSize() :
* `src` should point to the start of a ZSTD encoded frame or skippable frame
- * `srcSize` must be at least as large as the frame
+ * `srcSize` must be >= first frame size
* @return : the compressed size of the first frame starting at `src`,
* suitable to pass to `ZSTD_decompress` or similar,
* or an error code if input is invalid */
@@ -557,7 +557,8 @@ ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem);
* It must outlive context usage.
* workspaceSize: Use ZSTD_estimateCCtxSize() or ZSTD_estimateCStreamSize()
* to determine how large workspace must be to support scenario.
- * @return : pointer to ZSTD_CCtx*, or NULL if error (size too small)
+ * @return : pointer to ZSTD_CCtx* (same address as workspace, but different type),
+ * or NULL if error (typically size too small)
* Note : zstd will never resize nor malloc() when using a static cctx.
* If it needs more memory than available, it will simply error out.
* Note 2 : there is no corresponding "free" function.
@@ -587,7 +588,7 @@ ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictS
ZSTD_compressionParameters cParams,
ZSTD_customMem customMem);
-/*! ZSTD_initStaticCDict_advanced() :
+/*! ZSTD_initStaticCDict() :
* Generate a digested dictionary in provided memory area.
* workspace: The memory area to emplace the dictionary into.
* Provided pointer must 8-bytes aligned.
@@ -596,7 +597,8 @@ ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictS
* to determine how large workspace must be.
* cParams : use ZSTD_getCParams() to transform a compression level
* into its relevants cParams.
- * @return : pointer to ZSTD_CDict*, or NULL if error (size too small)
+ * @return : pointer to ZSTD_CDict* (same address as workspace, but different type),
+ * or NULL if error (typically, size too small).
* Note : there is no corresponding "free" function.
* Since workspace was allocated externally, it must be freed externally.
*/
@@ -613,7 +615,7 @@ ZSTDLIB_API ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, uns
/*! ZSTD_getParams() :
* same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`.
-* All fields of `ZSTD_frameParameters` are set to default (0) */
+* All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 */
ZSTDLIB_API ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize);
/*! ZSTD_checkCParams() :
@@ -660,7 +662,8 @@ ZSTDLIB_API ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem);
* It must outlive context usage.
* workspaceSize: Use ZSTD_estimateDCtxSize() or ZSTD_estimateDStreamSize()
* to determine how large workspace must be to support scenario.
- * @return : pointer to ZSTD_DCtx*, or NULL if error (size too small)
+ * @return : pointer to ZSTD_DCtx* (same address as workspace, but different type),
+ * or NULL if error (typically size too small)
* Note : zstd will never resize nor malloc() when using a static dctx.
* If it needs more memory than available, it will simply error out.
* Note 2 : static dctx is incompatible with legacy support
@@ -731,20 +734,22 @@ ZSTDLIB_API unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize);
/*===== Advanced Streaming compression functions =====*/
ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem);
ZSTDLIB_API ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticCCtx() */
-ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct, a size of 0 means unknown. for a frame size of 0 use initCStream_advanced */
+ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct. If it is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN. Note that, for compatibility with older programs, "0" also disables frame content size field. It may be enabled in the future. */
ZSTDLIB_API size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); /**< creates of an internal CDict (incompatible with static CCtx), except if dict == NULL or dictSize < 8, in which case no dict is used. Note: dict is loaded with ZSTD_dm_auto (treated as a full zstd dictionary if it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy.*/
ZSTDLIB_API size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize,
- ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */
+ ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct. If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */
ZSTDLIB_API size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict); /**< note : cdict will just be referenced, and must outlive compression session */
-ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); /**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters */
+ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); /**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters. pledgedSrcSize must be correct. If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. */
/*! ZSTD_resetCStream() :
* start a new compression job, using same parameters from previous job.
* This is typically useful to skip dictionary loading stage, since it will re-use it in-place..
* Note that zcs must be init at least once before using ZSTD_resetCStream().
- * pledgedSrcSize==0 means "srcSize unknown".
+ * If pledgedSrcSize is not known at reset time, use macro ZSTD_CONTENTSIZE_UNKNOWN.
* If pledgedSrcSize > 0, its value must be correct, as it will be written in header, and controlled at the end.
- * @return : 0, or an error code (which can be tested using ZSTD_isError()) */
+ * For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs,
+ * but it may change to mean "empty" in some future version, so prefer using macro ZSTD_CONTENTSIZE_UNKNOWN.
+ * @return : 0, or an error code (which can be tested using ZSTD_isError()) */
ZSTDLIB_API size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize);
@@ -800,10 +805,10 @@ ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompress
/*===== Buffer-less streaming compression functions =====*/
ZSTDLIB_API size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel);
ZSTDLIB_API size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel);
-ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0 */
+ZSTDLIB_API size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize : If srcSize is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN */
ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); /**< note: fails if cdict==NULL */
-ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize=0 means null-size */
-ZSTDLIB_API size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize can be 0, indicating unknown size. if it is non-zero, it must be accurate. for 0 size frames, use compressBegin_advanced */
+ZSTDLIB_API size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize must be correct. If srcSize is not known, use macro ZSTD_CONTENTSIZE_UNKNOWN */
+ZSTDLIB_API size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize is not known, use ZSTD_CONTENTSIZE_UNKNOWN */
ZSTDLIB_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
@@ -1000,18 +1005,19 @@ typedef enum {
* Special: value 0 means "do not change strategy". */
/* frame parameters */
- ZSTD_p_contentSizeFlag=200, /* Content size is written into frame header _whenever known_ (default:1)
- * note that content size must be known at the beginning,
- * it is sent using ZSTD_CCtx_setPledgedSrcSize() */
+ ZSTD_p_contentSizeFlag=200, /* Content size will be written into frame header _whenever known_ (default:1)
+ * Content size must be known at the beginning of compression,
+ * it is provided using ZSTD_CCtx_setPledgedSrcSize() */
ZSTD_p_checksumFlag, /* A 32-bits checksum of content is written at end of frame (default:0) */
- ZSTD_p_dictIDFlag, /* When applicable, dictID of dictionary is provided in frame header (default:1) */
+ ZSTD_p_dictIDFlag, /* When applicable, dictionary's ID is written into frame header (default:1) */
/* multi-threading parameters */
ZSTD_p_nbThreads=400, /* Select how many threads a compression job can spawn (default:1)
* More threads improve speed, but also increase memory usage.
* Can only receive a value > 1 if ZSTD_MULTITHREAD is enabled.
* Special: value 0 means "do not change nbThreads" */
- ZSTD_p_jobSize, /* Size of a compression job. Each compression job is completed in parallel.
+ ZSTD_p_jobSize, /* Size of a compression job. This value is only enforced in streaming (non-blocking) mode.
+ * Each compression job is completed in parallel, so indirectly controls the nb of active threads.
* 0 means default, which is dynamically determined based on compression parameters.
* Job size must be a minimum of overlapSize, or 1 KB, whichever is largest
* The minimum size is automatically and transparently enforced */
@@ -1057,7 +1063,8 @@ typedef enum {
/*! ZSTD_CCtx_setParameter() :
* Set one compression parameter, selected by enum ZSTD_cParameter.
* Note : when `value` is an enum, cast it to unsigned for proper type checking.
- * @result : 0, or an error code (which can be tested with ZSTD_isError()). */
+ * @result : informational value (typically, the one being set, possibly corrected),
+ * or an error code (which can be tested with ZSTD_isError()). */
ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value);
/*! ZSTD_CCtx_setPledgedSrcSize() :
@@ -1066,7 +1073,7 @@ ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
* Note 1 : 0 means zero, empty.
* In order to mean "unknown content size", pass constant ZSTD_CONTENTSIZE_UNKNOWN.
- * Note that ZSTD_CONTENTSIZE_UNKNOWN is default value for new compression jobs.
+ * ZSTD_CONTENTSIZE_UNKNOWN is default value for any new compression job.
* Note 2 : If all data is provided and consumed in a single round,
* this value is overriden by srcSize instead. */
ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize);
@@ -1138,13 +1145,19 @@ typedef enum {
* - Compression parameters cannot be changed once compression is started.
* - outpot->pos must be <= dstCapacity, input->pos must be <= srcSize
* - outpot->pos and input->pos will be updated. They are guaranteed to remain below their respective limit.
- * - @return provides the minimum amount of data still to flush from internal buffers
+ * - In single-thread mode (default), function is blocking : it completed its job before returning to caller.
+ * - In multi-thread mode, function is non-blocking : it just acquires a copy of input, and distribute job to internal worker threads,
+ * and then immediately returns, just indicating that there is some data remaining to be flushed.
+ * The function nonetheless guarantees forward progress : it will return only after it reads or write at least 1+ byte.
+ * - Exception : in multi-threading mode, if the first call requests a ZSTD_e_end directive, it is blocking : it will complete compression before giving back control to caller.
+ * - @return provides the minimum amount of data remaining to be flushed from internal buffers
* or an error code, which can be tested using ZSTD_isError().
- * if @return != 0, flush is not fully completed, there is some data left within internal buffers.
- * - after a ZSTD_e_end directive, if internal buffer is not fully flushed,
+ * if @return != 0, flush is not fully completed, there is still some data left within internal buffers.
+ * This is useful to determine if a ZSTD_e_flush or ZSTD_e_end directive is completed.
+ * - after a ZSTD_e_end directive, if internal buffer is not fully flushed (@return != 0),
* only ZSTD_e_end or ZSTD_e_flush operations are allowed.
- * It is necessary to fully flush internal buffers
- * before starting a new compression job, or changing compression parameters.
+ * Before starting a new compression job, or changing compression parameters,
+ * it is required to fully flush internal buffers.
*/
ZSTDLIB_API size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
ZSTD_outBuffer* output,
diff --git a/version.py b/version.py
index cce155c9af..0eff47acdc 100644
--- a/version.py
+++ b/version.py
@@ -1,6 +1,6 @@
short_name = "godot"
name = "Godot Engine"
major = 3
-minor = 0
-status = "beta"
+minor = 1
+status = "dev"
module_config = ""