summaryrefslogtreecommitdiff
path: root/scene/animation/tween.cpp
AgeCommit message (Collapse)Author
2021-08-02Add null check to Tween.bind_node()kobewi
2021-07-26Use Ref<T> references as iterators where relevantRémi Verschelde
And const when possible.
2021-07-23Use C++ iterators for Lists in many situationsAaron Franke
2021-07-18Optimize StringName usagereduz
* Added a new macro SNAME() that constructs and caches a local stringname. * Subsequent usages use the cached version. * Since these use a global static variable, a second refcounter of static usages need to be kept for cleanup time. * Replaced all theme usages by this new macro. * Replace all signal emission usages by this new macro. * Replace all call_deferred usages by this new macro. This is part of ongoing work to optimize GUI and the editor.
2021-06-19Complete rewrite of TweensTomasz Chabora
* Tweens were changed from Node to RefCounted. New API is inspired by DOTween. * Tweens are created and managed by SceneTree, similar to SceneTreeTimer, which makes them ultra cheap to use a lot. * Animating with Tweens is done by creating sequences of Tweeners. You create them from code and they autostart by default (fire-and-forget). * There are 4 Tweeners that cover the former Tween functionality: PropertyTweener, IntervalTweener, CallbackTweener and MethodTweener. * The methods were simplified a lot. Long argument lists are replaced with chained calls on Tweens and Tweeners. * Tweeners by default execute in sequence, so it's easy to create complex chained animations. * You can bind a Tween to a node. Tween will be removed automatically when the bound node is freed.
2021-06-04Rename Quat to QuaternionMarcel Admiraal
2021-06-03Rename Variant TRANSFORM to TRANSFORM3DAaron Franke
Also _transform to _transform3d
2021-06-03Rename Transform to Transform3D in coreAaron Franke
2021-03-12Fixes small typos and grammar correctionAnshul7sp1
2021-03-03fix no tween repeat after stop_all() and start() againjmb462
2021-02-24Tween: Add null check for target objectChristoffer Sundbom
Fixes #45399.
2021-02-09Initialize class variables with default values in scene/ [2/2]Rafał Mikrut
2021-02-07Initialize class variables with default values in scene/ [1/2]Rafał Mikrut
2021-01-01Update copyright statements to 2021Rémi Verschelde
Happy new year to the wonderful Godot community! 2020 has been a tough year for most of us personally, but a good year for Godot development nonetheless with a huge amount of work done towards Godot 4.0 and great improvements backported to the long-lived 3.2 branch. We've had close to 400 contributors to engine code this year, authoring near 7,000 commit! (And that's only for the `master` branch and for the engine code, there's a lot more when counting docs, demos and other first-party repos.) Here's to a great year 2021 for all Godot users 🎆
2020-10-18Refactor MethodBind to use variadic templatesreduz
Removed make_binders and the old style generated binders.
2020-07-20bug with Tween.is_active, fixes #39760Chistpohe LY
2020-05-14Style: Enforce braces around if blocks and loopsRémi Verschelde
Using clang-tidy's `readability-braces-around-statements`. https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocksRémi Verschelde
Which means that reduz' beloved style which we all became used to will now be changed automatically to remove the first empty line. This makes us lean closer to 1TBS (the one true brace style) instead of hybridating it with some Allman-inspired spacing. There's still the case of braces around single-statement blocks that needs to be addressed (but clang-format can't help with that, but clang-tidy may if we agree about it). Part of #33027.
2020-05-10Style: clang-format: Disable AllowShortCaseLabelsOnASingleLineRémi Verschelde
Part of #33027.
2020-05-10Style: clang-format: Disable AllowShortIfStatementsOnASingleLineRémi Verschelde
Part of #33027, also discussed in #29848. Enforcing the use of brackets even on single line statements would be preferred, but `clang-format` doesn't have this functionality yet.
2020-05-05Fix: Tween always return true for _get(), _set()Thakee Nathees
2020-04-02Replace NULL with nullptrlupoDharkael
2020-03-06Removed boolean return type from majority of method in TweenYuri Roubinsky
2020-02-25Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.Juan Linietsky
- Renames PackedIntArray to PackedInt32Array. - Renames PackedFloatArray to PackedFloat32Array. - Adds PackedInt64Array and PackedFloat64Array. - Renames Variant::REAL to Variant::FLOAT for consistency. Packed arrays are for storing large amount of data and creating stuff like meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of memory. That said, many users requested the ability to have 64 bits packed arrays for their games, so this is just an optional added type. For Variant, the float datatype is always 64 bits, and exposed as `float`. We still have `real_t` which is the datatype that can change from 32 to 64 bits depending on a compile flag (not entirely working right now, but that's the idea). It affects math related datatypes and code only. Neither Variant nor PackedArray make use of real_t, which is only intended for math precision, so the term is removed from there to keep only float.
2020-02-23Merge pull request #36411 from Janglee123/rect2-tweenRémi Verschelde
Added tween support for Rect2
2020-02-23Added tween support for Rect2janglee
Fixes #34575
2020-02-20Reworked signal connection system, added support for Callable and Signal ↵Juan Linietsky
objects and made them default.
2020-02-15Changed logic and optimized ObjectID in ObjectDB and Variant, removed RefPtr.Juan Linietsky
2020-01-22Fixed Tween::start() with pending updatesPouleyKetchoupp
Start was canceled instead of deferred in case of an update in progress. Fixes #35441
2020-01-01Update copyright statements to 2020Rémi Verschelde
Happy new year to the wonderful Godot community! We're starting a new decade with a well-established, non-profit, free and open source game engine, and tons of further improvements in the pipeline from hundreds of contributors. Godot will keep getting better, and we're looking forward to all the games that the community will keep developing and releasing with it.
2019-12-12Provide default Tween values for transition and easing typesAndrii Doroshenko (Xrayez)
TRANS_LINEAR and EASE_IN_OUT are chosen as defaults for interpolation and follow methods.
2019-11-20Fix some overflows and unitialized variablesRafał Mikrut
2019-10-23Fix Tween follow_property finishing with nullMark Riedesel
2019-09-19Fix misc. source comment typosluz.paz
Found using `codespell -q 3 -S ./thirdparty,*.po -L ang,ba,cas,dof,doubleclick,fave,hist,leapyear,lod,nd,numer,ois,paket,seeked,sinc,switchs,te,uint -D ~/Projects/codespell/codespell_lib/data/dictionary.txt `
2019-09-03Added is_inside_tree() check in both Timer and Tweenshaderbeast
Tween now throws error and doesnt even execute.
2019-08-09Remove ERR_EXPLAIN from scene/* codeTomasz Chabora
2019-06-26Some code changed with Clang-Tidyqarmin
2019-06-14Implementing 0-duration tweensDevin Pentecost
Some light refactor Adding comments in functions
2019-04-03Added signal for Tween emitted at completionChaosus
2019-01-01Update copyright statements to 2019Rémi Verschelde
Happy new year to the wonderful Godot community!
2018-09-27Fix warnings about unhandled enum value in switch [-Wswitch]Rémi Verschelde
Fixes GCC 5 warnings of the form: core/io/http_client.cpp:288:9: warning: enumeration value 'STATUS_SSL_HANDSHAKE_ERROR' not handled in switch [-Wswitch] core/io/marshalls.cpp:806:9: warning: enumeration value 'AABB' not handled in switch [-Wswitch] Those can be trivial cases where adding a default fallback is the solution, or more complex issues/hidden bugs where missed values are actually meant to be handled.
2018-09-12Merge pull request #21913 from DualMatrix/tween_remove_allRémi Verschelde
Fixed calling start() after remove_all() on tween not working
2018-09-12Make core/ includes absolute, remove subfolders from include pathRémi Verschelde
This allows more consistency in the manner we include core headers, where previously there would be a mix of absolute, relative and include path-dependent includes.
2018-09-11Fixed calling start() emmediately after remove_all() on tween not wrokingDualMatrix
Fixed calling start() emmediately after remove_all() on tween not wroking Fixes #19901
2018-08-16Tween: Add a unique identifier to InterpolateData to be able to remove the ↵James
right one when finished
2018-08-09interpolation was not removed because of id mismatchJames
2018-06-27Check "done" state in original loopRăzvan C. Rădulescu
My first attepmt I added a second loop to check if processing should stop. This attempts to optimize by using the original loop (one loop). Also resets `elapsed` time on finish of tween which fixes `tell()`.
2018-06-26Fix and make Tween node less confusingRăzvan C. Rădulescu
I've made the following changes: - make `is_active` the main way of keeping track of tween processing/activity, meaning that `is_active` will now return `false` if all tween actions have finished or if it isn't started or if it was stopped via `set_active(false)` or any other mode - removed is_stopped because is redundand now The above meant that we don't have to keep track of yet another variable `available` since everything is based on `*processing_internal` so I removed it, likewise it's own local `processing` variable was removed, as well as the "double" `_set_process` which it feels more like a hack. What wasn't changed: - `tell()` still returns max value (i.e. `== get_runtime()` when all tweens `finish`) *More testing is needed*. So far I've tested repeat on/off, delay, `is_active()` working corretly, `set_active(true), set_active(false)`, but probably more tests are necessary, all the resets, stops, resume etc.
2018-06-07Adding is_stopped method to Tweensteincodes
2018-05-25Take tween speed into account when calculating runtimeRasmus Ketelsen