summaryrefslogtreecommitdiff
path: root/servers/physics_2d
AgeCommit message (Collapse)Author
2021-02-10Make Servers truly Thread Safereduz
-Rendering server now uses a split RID allocate/initialize internally, this allows generating RIDs immediately but initialization to happen later on the proper thread (as rendering APIs generally requiere to call on the right thread). -RenderingServerWrapMT is no more, multithreading is done in RenderingServerDefault. -Some functions like texture or mesh creation, when renderer supports it, can register and return immediately (so no waiting for server API to flush, and saving staging and command buffer memory). -3D physics server changed to be made multithread friendly. -Added PhysicsServer3DWrapMT to use 3D physics server from multiple threads. -Disablet Bullet (too much effort to make multithread friendly, this needs to be fixed eventually).
2021-02-01Merge pull request #37547 from aaronfranke/tauRémi Verschelde
Use Math_TAU and deg2rad/etc in more places and optimize code
2021-01-31Merge pull request #45315 from RandomShaper/modernize_threadRémi Verschelde
Modernize Thread
2021-01-29Modernize ThreadPedro J. Estébanez
- Based on C++11's `thread` and `thread_local` - No more need to allocate-deallocate or check for null - No pointer anymore, just a member variable - Platform-specific implementations no longer needed (except for the few cases of non-portable functions) - Simpler for `NO_THREADS` - Thread ids are now the same across platforms (main is 1; others follow)
2021-01-28Use real_t in physics codeAaron Franke
2021-01-14Merge pull request #43923 from madmiraal/fix-43588Rémi Verschelde
Fix cast_motion sometimes failing
2021-01-09Use Math_TAU and deg2rad/rad2deg in more places and optimize codeAaron Franke
2021-01-07Fix multiple issues with one-way collisionsMarcel Admiraal
For RigidBodies, uses the collision normal determined by relative motion to determine whether or not a one-way collision has occurred. For KinematicBodies, performs additional checks to ensure a one-way collision has occurred, and averages the recovery step over all collision shapes. Co-authored-by: Sergej Gureev <sergej.gureev@relex.fi>
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-12-28Merge pull request #44149 from madmiraal/rename-tangent-orthogonalRémi Verschelde
Rename Vector2.tangent() to Vector2.orthogonal()
2020-12-28Rename empty() to is_empty()Marcel Admiraal
2020-12-06Rename Vector2.tangent() to Vector2.orthogonal()Marcel Admiraal
2020-12-04make 2d constraint solving more deterministic by solving in push orderJordan Schidlowsky
2020-11-27Fix cast_motion sometimes failingMarcel Admiraal
- Fixes Godot physics failing when the cast Shape is inside of, or already colliding with another Shape. - Fixes Bullet physics failing when there is no motion. - Ensures Godot and Bullet physics behave the same. - Updates the documentation to exclude the caveats for the failures and differences.
2020-11-16Remove empty lines around braces with the formatting scriptAaron Franke
2020-11-16Merge pull request #42167 from madmiraal/fix-42108Rémi Verschelde
Remove the unnecessary sync() and the restrictions it imposes on 3D Physics.
2020-11-07Reorganized core/ directory, it was too fatty alreadyreduz
-Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
2020-10-03Fix how Line2D obtains the other object's supportsMarcel Admiraal
Measure the distance from the line against the rotated object, not the rotated line, when obtaining the object's supports against a line.
2020-09-23Ignore thread models when compiling with NO_THREADFabio Alessandrelli
The thread model option for physics (2D) and rendering (single-unsafe, single-safe, multithread), was causing crashes/locks when set as multithreaded and exported for a platform that does not support threads (namely HTML5). This commit ensures that when threads support is not available, that option is ignored, and the equivalent of "single-unsafe" is always used instead.
2020-09-18Remove the unnecessary sync() and the restrictions it imposes on 3D Physics.Marcel Admiraal
2020-09-17Merge pull request #41528 from keegano/physics-fix-wrap-angleRémi Verschelde
Wrap angles to (-pi, pi) in momentum calculation.
2020-08-28Fixed 2D physics regression that causes RigidBody2D nodes to spin ↵TwistedTwigleg
uncontrollably when colliding
2020-08-26Wrap angles to (-pi, pi) in momentum calculation.Keegan Owsley
Fixes a bug that causes KinematicBody2Ds to produce too much angular momentum when rotating beyond 180 degrees.
2020-08-01Wake up RigidBody 2D after applying torqueMarkus Sauermann
2020-07-27Revert "Allow Area2D and 3D mouse events without a collision layer"Rémi Verschelde
This reverts commit 7eebb06b5571437828d8c5099558c303c72cd1f4.
2020-07-11Merge pull request #40193 from KoBeWi/dem_pikksRémi Verschelde
Allow Area2D and 3D mouse events without collision layer
2020-07-10Add override keywords.Marcel Admiraal
2020-07-10Allow Area2D and 3D mouse events without a collision layerTomasz Chabora
Co-authored-by: madmiraal <madmiraal@users.noreply.github.com>
2020-07-04Remove elements from monitored_bodies and monitored_areas as they areMarcel Admiraal
processed before calling the callback, instead of after they have all been processed, because the callbacks may readd them.
2020-07-03fix laxist collision detection on one way shapesCevantime
2020-07-02Merge pull request #37350 from aaronfranke/force-impulseRémi Verschelde
Refactor physics force and impulse code to use (force, position) order
2020-06-27Trigger broadphase update when changing collision layer/mask, andMarcel Admiraal
check for collision layer/mask changes in 2D hash grid broadphase update.
2020-06-13Ensure pair callback data is set to null when it's null.Marcel Admiraal
2020-06-08Test collision mask before creating constraint pair in Godot physics ↵Marcel Admiraal
broadphase 2D and 3D.
2020-06-04Correct misspellings of damped spring.Marcel Admiraal
2020-06-02Refactor physics force and impulse codeAaron Franke
2020-05-27Split `Geometry` singleton into `Geometry2D` and `Geometry3D`Andrii Doroshenko (Xrayez)
Extra `_2d` suffixes are removed from 2D methods accoringly.
2020-05-19Style: Fix unnecessary semicolons that confused clang-formatRémi Verschelde
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: Enforce separation line between function definitionsRémi Verschelde
I couldn't find a tool that enforces it, so I went the manual route: ``` find -name "thirdparty" -prune \ -o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \ -o -name "*.glsl" > files perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files) misc/scripts/fix_style.sh -c ``` This adds a newline after all `}` on the first column, unless they are followed by `#` (typically `#endif`). This leads to having lots of places with two lines between function/class definitions, but clang-format then fixes it as we enforce max one line of separation. This doesn't fix potential occurrences of function definitions which are indented (e.g. for a helper class defined in a .cpp), but it's better than nothing. Also can't be made to run easily on CI/hooks so we'll have to be careful with new code. Part of #33027.
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-14Enforce use of bool literals instead of integersRémi Verschelde
Using clang-tidy's `modernize-use-bool-literals`. https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-bool-literals.html
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-04-14Assign zero to range when ConvexPolygonShape2D is empty.Marcel Admiraal
2020-04-02Replace NULL with nullptrlupoDharkael
2020-03-30SCons: Format buildsystem files with psf/blackRémi Verschelde
Configured for a max line length of 120 characters. psf/black is very opinionated and purposely doesn't leave much room for configuration. The output is mostly OK so that should be fine for us, but some things worth noting: - Manually wrapped strings will be reflowed, so by using a line length of 120 for the sake of preserving readability for our long command calls, it also means that some manually wrapped strings are back on the same line and should be manually merged again. - Code generators using string concatenation extensively look awful, since black puts each operand on a single line. We need to refactor these generators to use more pythonic string formatting, for which many options are available (`%`, `format` or f-strings). - CI checks and a pre-commit hook will be added to ensure that future buildsystem changes are well-formatted.
2020-03-28More server renames for consistency after #37361Rémi Verschelde
2020-03-27Renaming of servers for coherency.Juan Linietsky
VisualServer -> RenderingServer PhysicsServer -> PhysicsServer3D Physics2DServer -> PhysicsServer2D NavigationServer -> NavigationServer3D Navigation2DServer -> NavigationServer2D Also renamed corresponding files.
2020-03-08Refactor ScriptDebugger.Fabio Alessandrelli
EngineDebugger is the new interface to access the debugger. It tries to be as agnostic as possible on the data that various subsystems can expose. It allows 2 types of interactions: - Profilers: A subsystem can register a profiler, assigning it a unique name. That name can be used to activate the profiler or add data to it. The registered profiler can be composed of up to 3 functions: - Toggle: called when the profiler is activated/deactivated. - Add: called whenever data is added to the debugger (via `EngineDebugger::profiler_add_frame_data`) - Tick: called every frame (during idle), receives frame times. - Captures: (Only relevant in remote debugger for now) A subsystem can register a capture, assigning it a unique name. When receiving a message, the remote debugger will check if it starts with `[prefix]:` and call the associated capture with name `prefix`. Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new profiler system. Port SceneDebugger and RemoteDebugger to the new capture system. The LocalDebugger also uses the new profiler system for scripts profiling.