summaryrefslogtreecommitdiff
path: root/core/math/basis.h
AgeCommit message (Collapse)Author
2022-11-02Move EulerOrder enum to math_defs.h and global scopeAaron Franke
2022-10-08Add `is_finite` method for checking built-in typesHaoyu Qiu
2022-08-31Basis constructor: row vectors -> column vectorsZhehang Ding
2022-08-20Expose Basis `set_orthogonal_index` method as a GridMap functionrafallus
2022-06-27Fix VECTOR/LOCAL transitions in Node3Dreduz
Fixes #62225, supersedes #62227
2022-05-05Core: Rename math 'phi' arguments to 'angle'Rémi Verschelde
2022-05-03Rename Basis get_axis to get_column, remove redundant methodsAaron Franke
2022-04-29Rename Basis "elements" to "rows"Aaron Franke
2022-02-04Core: Make all Variant math types structsRémi Verschelde
Some were declared as structs (public by default) and others as classes (private by default) but in practice all these math types exposed as Variants are all 100% public.
2022-01-20Add nodiscard to core math classes to catch c++ errors.lawnjelly
A common source of errors is to call functions (such as round()) expecting them to work in place, but them actually being designed only to return the processed value. Not using the return value in this case in indicative of a bug, and can be flagged as a warning by using the [[nodiscard]] attribute.
2022-01-05Merge pull request #53684 from TokageItLab/orthogonal-modeRémi Verschelde
2022-01-03Update copyright statements to 2022Rémi Verschelde
Happy new year to the wonderful Godot community!
2021-12-25Fix some gizmo behavior to make more consistentSilc 'Tokage' Renew
2021-10-28clang-format: Disable alignment of operands, too unreliableRémi Verschelde
Sets `AlignOperands` to `DontAlign`. `clang-format` developers seem to mostly care about space-based indentation and every other version of clang-format breaks the bad mismatch of tabs and spaces that it seems to use for operand alignment. So it's better without, so that it respects our two-tabs `ContinuationIndentWidth`.
2021-10-25Refactored Node3D rotation modesreduz
* Made the Basis euler orders indexed via enum. * Node3D has a new rotation_order property to choose Euler rotation order. * Node3D has also a rotation_mode property to choose between Euler, Quaternion and Basis Exposing these modes as well as the order makes Godot a lot friendlier for animators, which can choose the best way to interpolate rotations. The new *Basis* mode makes the (exposed) transform property obsolete, so it was removed (can still be accessed by code of course).
2021-09-17Replace Vector3.to_diagonal_matrix with Basis.from_scaleAaron Franke
2021-08-14New and improved IK system for Skeleton3DTwistedTwigleg
This PR and commit adds a new IK system for 3D with the Skeleton3D node that adds several new IK solvers, as well as additional changes and functionality for making bone manipulation in Godot easier. This work was sponsored by GSoC 2020 and TwistedTwigleg Full list of changes: * Adds a SkeletonModification3D resource * This resource is the base where all IK code is written and executed * Adds a SkeletonModificationStack3D resource * This node oversees the execution of the modifications and acts as a bridge of sorts for the modifications to the Skeleton3D node * Adds SkeletonModification3D resources for LookAt, CCDIK, FABRIK, Jiggle, and TwoBoneIK * Each modification is in it's own file * Several changes to Skeletons, listed below: * Added local_pose_override, which acts just like global_pose_override but keeps bone-child relationships intract * So if you move a bone using local_pose_override, all of the bones that are children will also be moved. This is different than global_pose_override, which only affects the individual bone * Internally bones keep track of their children. This removes the need of a processing list, makes it possible to update just a few select bones at a time, and makes it easier to traverse down the bone chain * Additional functions added for converting from world transform to global poses, global poses to local poses, and all the same changes but backwards (local to global, global to world). This makes it much easier to work with bone transforms without needing to think too much about how to convert them. * New signal added, bone_pose_changed, that can be used to tell if a specific bone changed its transform. Needed for BoneAttachment3D * Added functions for getting the forward position of a bone * BoneAttachment3D node refactored heavily * BoneAttachment3D node is now completely standalone in its functionality. * This makes the code easier and less interconnected, as well as allowing them to function properly without being direct children of Skeleton3D nodes * BoneAttachment3D now can be set either using the index or the bone name. * BoneAttachment3D nodes can now set the bone transform instead of just following it. This is disabled by default for compatibility * BoneAttachment3D now shows a warning when not configured correctly * Added rotate_to_align function in Basis * Added class reference documentation for all changes
2021-08-01Move code for looking_at to BasisAaron Franke
2021-06-15Allow multiplying Transforms and Basis by numbersAaron Franke
2021-06-04Rename Quat to QuaternionMarcel Admiraal
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-07Improve argument names for core typesAaron Franke
2020-09-23Remove redundant is_equal_approx_ratio methodAaron Franke
is_equal_approx is able to handle values of any size, and is_equal_approx_ratio is no longer used in any exposed APIs, so we don't need is_equal_approx_ratio anymore. Also, add #ifdef MATH_CHECKS for a method that is only used when MATH_CHECKS is defined.
2020-09-23Change Basis is_equal_approx to use instance methodAaron Franke
2020-09-08Initialise Basis elements with a default Basis in the declaration.Marcel Admiraal
Ensures a valid Basis is created with all constructors.
2020-06-12- Added more euler rotation orders support.Andrea Catania
- Fixed floating point issue on the old one. - Fixed the equation on the get_euler_yxz function. - Added unit tests. This work has been kindly sponsored by IMVU.
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-10New lightmapperJuan Linietsky
-Added LocalVector (needed it) -Added stb_rect_pack (It's pretty cool, we could probably use it for other stuff too) -Fixes and changes all around the place -Added library for 128 bits fixed point (required for Delaunay3D)
2020-02-11Modified rendering to use cluster instead of fowardJuan Linietsky
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-10-14Make is_equal_approx separate for structuresAaron Franke
This commit adds exposed behavior for C#
2019-10-07Remove circular dependency between Vector3 and Basis.Marcel Admiraal
2019-08-12Remove redundant author doc commentsIAmActuallyCthulhu
2019-07-10Use reference to constant in functionsqarmin
2019-04-09Style: Apply new changes from clang-format 8.0Rémi Verschelde
It seems to stay compatible with formatting done by clang-format 6.0 and 7.0, so contributors can keep using those versions for now (they will not undo those changes).
2019-04-01Some improvements to is_equal_approx, restored Quat operator.Juan Linietsky
2019-02-09[Core] Rename Matrix3 file to BasisAaron Franke
The code already referred to "Basis", it's just the file name that was different for some reason.