Commit graph

434 commits

Author SHA1 Message Date
lawnjelly
6f8e632848 Make acos and asin safe
A common bug with using acos and asin is that input outside -1 to 1 range will result in Nan output. This can occur due to floating point error in the input.

The standard solution is to provide safe_acos function with clamped input. For Godot it may make more sense to make the standard functions safe.
2023-05-11 09:51:44 +01:00
Rémi Verschelde
1426cd3b3a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".

Backported from #70885.
2023-01-10 15:26:54 +01:00
Silc Renew
1a45268639 Fix animation signal caches_cleared firing timing
(cherry picked from commit 962b6a3e8f)
2022-12-04 20:24:55 +08:00
kobewi
1aee1b1720 Fix crash when playing Tween right after finishing
(cherry picked from commit 1a462bc84e)
2022-09-20 10:26:17 +02:00
Micky
9ca40f0e0a Cast between float and ints in SceneTreeTween.tween_property()
(cherry picked from commit 2b18a4002c)
2022-09-05 14:58:56 +02:00
Haoyu Qiu
fed2879463 Improve documentation for get_animation() 2022-08-29 14:56:26 +08:00
Olivier Bombardier
c988deb3b1 Fix has_filter of AnimationNode not being called in scripts 2022-08-21 17:37:59 -04:00
Haoyu Qiu
9d923764c9 Fix crash when executing AnimationTreePlayer.are_nodes_connected 2022-08-01 23:36:12 +08:00
Rémi Verschelde
818f1eed31 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 14:53:37 +02:00
Haoyu Qiu
b657d0c76c Add dedicated macros for property name extraction
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NOEDITOR
2022-05-19 11:31:35 +08:00
kobewi
93482809e5 Fix error spam when tweened node leaves tree
(cherry picked from commit 45e4cb2bbf)
2022-05-16 15:57:41 +02:00
kobewi
ce36f2f699 Improve Tween infinite loop detection
(cherry picked from commit f473aab00d)
2022-05-05 13:47:23 +02:00
ScottVMariotte
25ef0aaf3e Replaced loops_current with end_loop
(cherry picked from commit c526ee6683)
2022-05-05 13:42:54 +02:00
Haoyu Qiu
153dc4d57e Backport the new Tween system as SceneTreeTween
Co-authored-by: Tomasz Chabora <kobewi4e@gmail.com>
2022-04-29 20:01:12 +08:00
Silc 'Tokage' Renew
cb5f13649b fixed rotated RootMotionView grid glitch
(cherry picked from commit df89969865)
2022-04-27 12:42:43 +02:00
Haoyu Qiu
d088128b43 Remove duplicate editor settings definitions 2022-04-27 15:26:46 +08:00
Haoyu Qiu
e822145be2 Fix inversed ADD_GROUP parameters in AnimationNodeOneShot
(cherry picked from commit 6a3bf65657)
2022-03-22 08:56:57 +01:00
Rémi Verschelde
85b4848ca8
Merge pull request #54188 from Rubonnek/increase_var_arg_max_3x 2022-03-08 13:10:48 +01:00
Wilson E. Alvarez
424dbf70af
Increase VARIANT_ARG_MAX to 8 2022-03-07 10:03:49 -05:00
lawnjelly
688dc534e5 Fix get_global_transform_interpolated() with multiple ticks per frame
The previous and current transforms in the interpolation data were not being correctly updated in cases where two or more physics ticks occurred on a frame. This PR introduces a simple mechanism to ensure updates on interpolated spatials.
2022-02-25 11:22:00 +00:00
lawnjelly
522bce1159 Fixed Timestep Interpolation (3D)
Adds fixed timestep interpolation to the visual server.
Switchable on and off with project setting.

This version does not add new API for set_transform etc, when nodes have the interpolated flag set they will always use interpolation.
2022-02-16 09:41:23 +00:00
Rémi Verschelde
7a16bb2ee4
Fix typos with codespell
Using codespell 2.2-dev from current git.

Added `misc/scripts/codespell.sh` to make it easier to run it once in a
while and update the skip and ignore lists.

(cherry picked from commit 1bdb82c64e)
2022-02-11 09:50:59 +01:00
lawnjelly
a0c6d16c90 Add editor vital redraws only option
When editor continuous redraws is switched off, the editor only redraws when a redraw_request was issued by an element in the scene. This works well in most situations, but when scenes have dynamic content they will continuously issue redraw_requests.

This can be fine on high power desktops but can be an annoyance on lower power machines.

This PR splits redraw requests into high and low priority requests, defaulting to high priority. Requests due to e.g. shaders using TIME are assigned low priority.

An extra editor setting is used to record the user preference and an extra option is added to the editor spinner menu, to allow the user to select between 3 modes:

* Continuous
* Update all changes
* Update vital changes
2022-02-02 11:26:45 +00:00
Wysocki Patryk
6340e4c83f
Expose AnimationNodeOneShot::mix_mode as a property
Fixes #23458.

(cherry picked from commit f16c483c9d)
2022-01-25 18:55:51 +01:00
Rémi Verschelde
99cebb30dd
Merge pull request #54827 from timothyqiu/watch-your-step
[3.x] Fix AnimationTree function call track loop
2022-01-19 08:15:16 +01:00
Jason Knight
5bad0778b6 Dont set elapsed to 0 when a tween is finished. 2022-01-15 08:00:43 -06:00
Rémi Verschelde
a627cdafc5
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-13 15:54:13 +01:00
lawnjelly
3d981b8265 Add option to use handles to RID
Adds an option to compile an alternative implementation for RIDs, which allows checks for erroneous usage patterns as well as providing leak tests.
2021-12-06 14:43:34 +00:00
Marcel Admiraal
4d3690eba5 Remove unimplemented methods 2021-11-18 12:47:36 +00:00
Haoyu Qiu
74e8d5c7bd Fix AnimationTree function call track loop 2021-11-10 14:28:27 +08:00
Florian Kothmeier
5185cd4f80
Fix AnimationNodeStateMachinePlayback start() on nonexistent node
(cherry picked from commit b6e7df56cb)
2021-10-04 15:22:16 +02:00
Haoyu Qiu
45b4304f10 Fix crash in Tween.follow_property
Check `p_object` for null before using it.
2021-09-22 13:38:21 +08:00
Espeute Clement
a259112d6e
Fixed Animation Playback Track not seeking properly
Fixes #38093.

(cherry picked from commit aa72af4f46)
2021-09-21 17:15:00 +02:00
Silc 'Tokage' Renew
fa45aa22cb
Fixed seeking behavior of property track with discrete interpolation
(cherry picked from commit 6613d9cf67)
2021-09-21 17:14:57 +02:00
Rémi Verschelde
22aab6be1c
Merge pull request #51796 from RandomShaper/dangling_obj_release_3.x
[3.x] Promote object validity checks to release builds
2021-09-21 11:48:11 +02:00
Pedro J. Estébanez
26edc6cd41 Promote object validity checks to release builds
Extra:
- Optimized the debug-only check about why the object is null to determine if it's because it has been deleted (the RC is enough; no need to check the ObjectDB).
- Because of the previous point. the debugger being attached is not required anymore for giving the "Object was deleted" error; from now, it only matters that it's a debug build.
- `is_instance_valid()` is now trustworthy. It will return `true` if, and only if, the last object assigned to a `Variant` is still alive (and not if a new object happened to be created at the same memory address of the old one).
- Replacements of `instance_validate()` are used where possible `Variant::is_invalid_object()` is introduced to help with that. (GDScript's `is_instance_valid()` is good.)
2021-09-21 10:39:04 +02:00
Silc 'Tokage' Renew
a95b015968
fixed AnimationNodeTransition when xfade time is zero
(cherry picked from commit 02d8166427)
2021-09-20 13:19:41 +02:00
Haoyu Qiu
018f28bead
Make sure IK target is inside tree before using its transform
(cherry picked from commit 88e3ba83f0)
2021-09-14 13:41:30 +02:00
Haoyu Qiu
859922a5f0 Delete the node in AnimationTreePlayer.remove_node 2021-08-03 00:12:04 +08:00
Hugo Locurcio
10ef55ce23
Use bullet points in the editor instead of dashes where relevant 2021-07-28 19:47:11 +02:00
bowling-allie
86e5893755
Fixes BlendSpace2D BLEND_MODE_DISCRETE_CARRY.
When BlendSpace2D switches animations, it will now correctly
calculate the previous animation position and length and
apply is to the new animation.

(cherry picked from commit bcb1e2b79f)
2021-07-13 10:47:20 +02:00
Marcel Admiraal
5a58516231 Remove duplicate ERR_PRINTS macro 2021-06-16 11:56:25 +01:00
Rémi Verschelde
ed28ce53bf
Merge pull request #47142 from jmb462/fix-tween-is_active-always-true-after-stop-and-start
[3.x] Fix Tween.is_active() always true after stop() and then start() (Fix #39760 & #39801)
2021-06-03 11:16:08 +02:00
TwistedTwigleg
ec7b72e81d SkeletonIK: Fixed issue where bones become detached if multiple SkeletonIK nodes are used 2021-05-24 11:30:16 -04:00
Tokage
0454848f4d
fix unintentional object rotation by animation tree
(cherry picked from commit ddac0e95dc)
2021-05-09 17:48:45 +02:00
Pedro J. Estébanez
4da9a501f6 Add animation reset track feature
As a bonus, to have consistency between use Beziers and create insert tracks, use Beziers also gets a default via editor settings that is used when the confirmation dialog is disabled, instead of just falling back to creating non-Bezier tracks.
2021-05-09 09:40:16 +02:00
TwistedTwigleg
c1bc87ed0d Fixes the SkeletonIK twisting issue by using the skeleton global pose without overrides 2021-05-06 20:11:21 -04:00
Rémi Verschelde
140350d767
Style: Enforce braces around if blocks and loops
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2021-05-05 15:02:01 +02:00
Rémi Verschelde
a828398655
Style: Replaces uses of 0/NULL by nullptr (C++11)
Using clang-tidy's `modernize-use-nullptr`.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
2021-05-04 16:30:23 +02:00
Rémi Verschelde
b5e1e05ef2
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks 2021-05-04 14:45:16 +02:00