Commit graph

35556 commits

Author SHA1 Message Date
PouleyKetchoupp
cf1ddfdb90 Make move_and_slide collision detection more accurate
More accurate unsafe motion calculation
* Safe and unsafe motion are calculated by dichotomy with a limited
number of steps. It's good for performance, but on long motions that
either collide near the beginning or near the end, the result can be
very imprecise.
* Now a factor 0.25 or 0.75 is used to converge faster when this case
happens, which allows longer motions to get more accurate collision
detection.
* Makes snap collision more precise, and helps with cases where diagonal collision on the border of a platform can lead to the character being stuck.

Additional improvements to move_and_slide:
* Handle slide canceling in move_and_collide with 0 velocity instead of
not applying it.
* Better handling of snap with custom logic to cancel sliding.
* Remove small jittering when using stop on slope, by canceling the
motion completely when the resulting motion is less than margin instead
of always projecting to the up direction (in both body motion and snap).

Co-authored-by: fabriceci <fabricecipolla@gmail.com>
2021-07-01 15:15:42 -07:00
Juan Linietsky
eefe276a82
Merge pull request #50058 from reduz/fix-surface-from-arrays
Fix surface from array creation
2021-07-01 17:50:02 -03:00
Rémi Verschelde
97e041e285
Merge pull request #50057 from reduz/force-string-in-dictionary
Force String as Dictionary key instead of StringName
2021-07-01 22:22:47 +02:00
reduz
8cf812fba1 Fix surface from array creation
* The debug check was not updated to the new format.
* Bug introduced by #50037
2021-07-01 16:51:55 -03:00
Rémi Verschelde
022640a8fd
Merge pull request #50041 from aaronfranke/prop-usage-flags
Use `PROPERTY_USAGE_NONE` instead of `0` for no property usage
2021-07-01 21:29:32 +02:00
reduz
379b90fd33 Force String as Dictionary key instead of StringName
* Lua table syntax uses named indexing: `{ mykey = myvalue }`
* Python style syntax uses string indexing: `{ "mykey" : myvalue }`
* Both are incompatible since a StringName key wont fetch a String key, hence confusing.
* This PR proposes always using String for indexing at a very minimal performance cost. Always indexing with StringNames will be faster, but they are considerably more expensive to create.
2021-07-01 16:03:37 -03:00
Aaron Franke
2508fd0533
Use PROPERTY_USAGE_NONE instead of 0 for no property usage
Also use const more often.
2021-07-01 14:13:27 -04:00
Rémi Verschelde
382ddd497a
Merge pull request #50052 from Valeryn4/Valeryn4-Fix-GridMap 2021-07-01 20:08:22 +02:00
Pitanov V.V
4da4514b71
Fix GridMap erase Octans 2021-07-02 03:26:26 +10:00
Rémi Verschelde
ad8a2b3d52
Merge pull request #50040 from reduz/fix-renderingserver-bindings
Clean up RenderingServer and its bindings
2021-07-01 15:17:33 +02:00
reduz
37776b2867 Clean up RenderingServer and its bindings
* Rewrote bindings for RenderingServer.
* They are now all up to date.
* Several unused methods and deprecated features were cleaned up.
2021-07-01 09:07:36 -03:00
Rémi Verschelde
9f30638d4b
Merge pull request #50044 from akien-mga/localvector-find-noerror
LocalVector: Don't error if `from` >= `count`
2021-07-01 13:13:27 +02:00
Rémi Verschelde
230a24a49d
Merge pull request #50026 from lyuma/callable_is_valid
Add Callable.is_valid() analogous to FuncRef.is_valid() from 3.x
2021-07-01 12:57:14 +02:00
Rémi Verschelde
7b7ccf25b6
LocalVector: Don't error if from >= count
Vector handles this silently by returning -1, and we should do the same here.
Otherwise we get errors when calling `find()` on e.g. a LocalVector of size 0,
while `find()` is expected to always work (if the parameters are invalid then
it doesn't find anything, so -1).

Fixup to #49925.
2021-07-01 12:16:33 +02:00
Rémi Verschelde
7ee419f8d9
Merge pull request #50028 from akien-mga/android-isGame-attribute
Android: Add `isGame` application attribute, default to true
2021-07-01 12:02:42 +02:00
Lyuma
8f1efa656b Add Callable.is_valid() analogous to FuncRef.is_valid() from 3.x 2021-07-01 02:54:01 -07:00
Rémi Verschelde
40a594c6ea
Android: Add isGame application attribute, default to true
It can be turned off in the export preset with `package/classify_as_game`.

Upstream definition: https://developer.android.com/guide/topics/manifest/application-element#isGame

> `android:isGame`
>
> Whether or not the application is a game. The system may group together
> applications classifed as games or display them separately from other
> applications.

Also fixes replacing `android:allowBackup` in custom builds.
2021-07-01 11:00:23 +02:00
Rémi Verschelde
801548fb70
Merge pull request #49994 from akien-mga/script-duplicate-selection
Script editor: Rename 'Clone Down' to 'Duplicate Selection'
2021-07-01 09:43:02 +02:00
Rémi Verschelde
3f12d0a883
Merge pull request #50018 from fire/port-false
Network port comparison is always false
2021-07-01 09:42:34 +02:00
Rémi Verschelde
f82c649671
Merge pull request #50038 from Calinou/editor-add-lock-group-shortcuts
Add keyboard shortcuts for grouping and locking nodes, change grid toggle
2021-07-01 09:40:32 +02:00
Rémi Verschelde
ba376a0452
Merge pull request #50037 from reduz/move-color-to-8bit
Import mesh colors in 8BPC
2021-07-01 08:15:13 +02:00
Rémi Verschelde
8a4cb96856
Merge pull request #49409 from ekumlin/issue-32596
Enable Camera2D smoothing on limit change
2021-07-01 08:14:21 +02:00
reduz
9ad0c6cde7 Import mesh colors in 8BPP.
* Colors were imported as 16BPP (half float)
* Far most common use cases only require 8BPP
* If you need higher data precision, use a custom array, which are supported now.

**WARNING**: 3D Scenes imported in 4.0 no longer compatible with this new format. You need to re-import them (erase them from .godot/import)
2021-06-30 23:33:25 -03:00
Eric
525ad7c37e Enable Camera2D smoothing on limit change 2021-06-30 16:21:29 -07:00
Rémi Verschelde
5710adda72
Merge pull request #50030 from bruvzg/rtl_editor_spin
Add right-to-left layout support for `EditorSpinSlider`.
2021-07-01 00:52:26 +02:00
Hugo Locurcio
b7bb84bf46
Add keyboard shortcuts for grouping and locking nodes, change grid toggle
- Locking nodes can now be done by pressing Ctrl + L, and unlocking with
  Ctrl + Shift + L.
- Grouping nodes is now done by pressing Ctrl + G, and ungrouping with
  Ctrl + Shift + G (similar to Inkscape).
- Toggling the grid is now done by pressing the `#` key
  (also similar to Inkscape). This change was needed as Ctrl + G
  now groups selected nodes.

Different shortcuts are used for the lock/unlock and group/ungroup
actions, so that the shortcuts are idempotent.
2021-06-30 23:09:26 +02:00
Rémi Verschelde
3530cb639a
Merge pull request #50033 from nekomatata/nodepath-code-style-fix
Coding style fix in editor NodePath update
2021-06-30 21:38:38 +02:00
bruvzg
c283519e0b Add right-to-left layout support for EditorSpinSlider. 2021-06-30 22:32:35 +03:00
PouleyKetchoupp
62ce81ec15 Coding style fix in editor NodePath update
Added r_ prefix for reference arguments that can be modified.
2021-06-30 11:50:40 -07:00
Rémi Verschelde
915344fe76
Merge pull request #49834 from nekomatata/physics-disable-modes
Add support for controlling physics nodes' behavior when disabled
2021-06-30 20:36:36 +02:00
Rémi Verschelde
270f9d4c88
Merge pull request #50014 from reduz/remove-immediate
Deprecate ImmediateGeometry
2021-06-30 20:18:59 +02:00
reduz
85cf99f28e Deprecate ImmediateGeometry
* Removed entirely from RenderingServer.
* Replaced by ImmediateMesh resource.
* ImmediateMesh replaces ImmediateGeometry, but could use more optimization in the future.
* Sprite3D and AnimatedSprite3D work again, ported from Godot 3.x (though a lot of work was needed to adapt them to Godot 4).
* RootMotionView works again.
* Polygon3D editor works again.
2021-06-30 14:14:41 -03:00
Rémi Verschelde
a02620f3a5
Merge pull request #50009 from reduz/fix-suffixes-and-degrees
Fix editor suffixes and degrees conversion
2021-06-30 18:47:40 +02:00
PouleyKetchoupp
5cbdc7a0ac Add support for controlling physics nodes' behavior when disabled
New property disable_mode to set different behaviors:
Remove: remove from physics simulation
MakeStatic: change body mode to static (doesn't affect area and soft body)
KeepActive: do nothing

Extra change:
Handle disable/enable node state with specific notifications, in order
to differentiate global pause from disabled nodes.
2021-06-30 09:20:44 -07:00
Rémi Verschelde
6f9767eff7
Merge pull request #50024 from madmiraal/fix-android-unchecked-warning
Fix unchecked call to put() warning in GodotInputHandler.java
2021-06-30 18:19:01 +02:00
reduz
75688772b3 Fix editor suffixes and degrees conversion
* Functions to convert to/from degrees are all gone. Conversion is done by the editor.
* Use PROPERTY_HINT_ANGLE instead of PROPERTY_HINT_RANGE to edit radian angles in degrees.
* Added possibility to add suffixes to range properties, use "min,max[,step][,suffix:<something>]" example "0,100,1,suffix:m"
* In general, can add suffixes for EditorSpinSlider
Not covered by this PR, will have to be addressed by future ones:

* Ability to switch radians/degrees in the inspector for angle properties (if actually wanted).
* Animations previously made will most likely break, need to add a way to make old ones compatible.
* Only added a "px" suffix to 2D position and a "m" one to 3D position, someone needs to go through the rest of the engine and add all remaining suffixes.
* Likely also need to track down usage of EditorSpinSlider outside properties to add suffixes to it too.
2021-06-30 12:38:25 -03:00
Marcel Admiraal
8270e101a7 Fix unchecked call to put() warning in GodotInputHandler.java 2021-06-30 12:13:05 +01:00
Rémi Verschelde
bb409efa1c
Merge pull request #50016 from fire/gdscript-shadow
Remove singleton variable shadowing.
2021-06-30 12:52:04 +02:00
K. S. Ernest (iFire) Lee
c1d9170194 Network port comparison is always false
error: comparison is always false due to limited range of data type [-Werror=type-limits]
  ERR_FAIL_COND_V_MSG(p_port < 0 || p_port > 65535, ERR_INVALID_PARAMETER, "The local port number must be between 0 and 65535 (inclusive).");
2021-06-30 02:39:17 -07:00
K. S. Ernest (iFire) Lee
364416ecd8 Remove singleton variable shadowing. 2021-06-30 02:37:20 -07:00
Rémi Verschelde
aceaf3953d
Merge pull request #50017 from fire/vulkan-error
Enum constant in boolean context
2021-06-30 11:33:14 +02:00
Rémi Verschelde
4622bef419
Merge pull request #50015 from fire/protocol-shadow
Protocol shadows a variable.
2021-06-30 11:28:38 +02:00
K. S. Ernest (iFire) Lee
d87526b391 Enum constant in boolean context
error: enum constant in boolean context [-Werror=int-in-bool-context]
2021-06-30 01:38:56 -07:00
K. S. Ernest (iFire) Lee
90bb560984 Protocol shadows a variable. 2021-06-30 01:25:27 -07:00
Rémi Verschelde
24c6ee9f56
Merge pull request #49844 from nekomatata/physics-disabled-shapes
Fix and clean disabled shapes handling in godot physics servers
2021-06-30 10:08:52 +02:00
Rémi Verschelde
cb2fb98af3
Merge pull request #50010 from akien-mga/rename-gdnavigation
Rename `GdNavigationServer` to `GodotNavigationServer`
2021-06-30 09:25:11 +02:00
Rémi Verschelde
bcd1fc832f
Merge pull request #49901 from nekomatata/move-and-collide-fix-slide
Fix move_and_collide causing sliding on slopes
2021-06-30 02:18:01 +02:00
Rémi Verschelde
9b8095ad05
Merge pull request #50012 from YeldhamDev/script_diag_fix
Make contents of "Create Script" dialog expand with the window size
2021-06-30 01:58:27 +02:00
Michael Alexsander
e4f9fa7e53 Make contents of "Create Script" dialog expand with the window size 2021-06-29 20:20:34 -03:00
Rémi Verschelde
74dc5e27c8
Rename GdNavigationServer to GodotNavigationServer
And rename `gdnavigation` module to simply `navigation`.
2021-06-30 00:35:18 +02:00