godot/core/math
TwistedTwigleg 8aa3c2f091 New and improved IK system for Skeleton2D
This PR and commit adds a new IK system for 2D with the Skeleton2D node
that adds several new IK solvers, a way to control bones in a Skeleton2D
node similar to that in Skeleton3D. It also adds additional changes
and functionality.

This work was sponsored by GSoC 2020 and TwistedTwigleg.

Full list of changes:
* Adds a SkeletonModifier2D resource
  * This resource is the base where all IK code is written and executed
  * Has a function for clamping angles, since it is so commonly used
  * Modifiers are unique when duplicated so it works with instancing
* Adds a SkeletonModifierStack2D resource
  * This resource manages a series of SkeletonModification2Ds
  * This is what the Skeleton2D directly interfaces with to make IK possible
* Adds SkeletonModifier2D resources for LookAt, CCDIK, FABRIK, Jiggle, and TwoBoneIK
  * Each modification is in its own file
  * There is also a SkeletonModifier2D resource that acts as a stack for using multiple stacks together
* Adds a PhysicalBone2D node
  * Works similar to the PhysicalBone3D node, but uses a RigidBody2D node
* Changes to Skeleton2D listed below:
  * Skeleton2D now holds a single SkeletonModificationStack2D for IK
  * Skeleton2D now has a local_pose_override, which overrides the Bone2D position similar to how the overrides work in Skeleton3D
* Changes to Bone2D listed below:
  * The default_length property has been changed to length. Length is the length of the bone to its child bone node
  * New bone_angle property, which is the angle the bone has to its first child bone node
  * Bone2D caches its transform when not modified by IK for IK interpolation purposes
  * Bone2D draws its own editor gizmo, though this is stated to change in the future
* Changes to CanvasItemEditor listed below:
  * Bone2D gizmo drawing code removed
  * The 2D IK code is removed. Now Bone2D is the only bone system for 2D
* Transform2D now has a looking_at function for rotating to face a position
* Two new node notifications: NOTIFICATION_EDITOR_PRE_SAVE and NOTIFICATION_EDITOR_POST_SAVE
  * These notifications only are called in the editor right before and after saving a scene
  * Needed for not saving the IK position when executing IK in the editor
* Documentation for all the changes listed above.
2021-06-05 15:19:51 -04:00
..
a_star.cpp
a_star.h
aabb.cpp
aabb.h
audio_frame.h
basis.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
basis.h Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
bvh_abb.h Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_cull.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_debug.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_integrity.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_logic.inc BVH - fix stale current_tree in deactivate function [4.x] 2021-05-29 18:03:43 +01:00
bvh_misc.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_pair.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_public.inc BVH - fix stale current_tree in deactivate function [4.x] 2021-05-29 18:03:43 +01:00
bvh_refit.inc BVH - fix stale current_tree in deactivate function [4.x] 2021-05-29 18:03:43 +01:00
bvh_split.inc Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
bvh_structs.inc BVH - fix stale current_tree in deactivate function [4.x] 2021-05-29 18:03:43 +01:00
bvh_tree.h BVH - fix stale current_tree in deactivate function [4.x] 2021-05-29 18:03:43 +01:00
bvh.h Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
camera_matrix.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
camera_matrix.h Rename files and the exposed name for Transform3D 2021-06-03 07:30:01 -04:00
color_names.inc
color.cpp Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
color.h Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
convex_hull.cpp Replace QuickHull with Bullet's convex hull computer. 2021-05-22 22:35:42 +02:00
convex_hull.h Replace QuickHull with Bullet's convex hull computer. 2021-05-22 22:35:42 +02:00
delaunay_2d.h
delaunay_3d.h
disjoint_set.h
dynamic_bvh.cpp Fixed possible crash in DynamicBVH::optimize_incremental 2021-05-27 18:38:06 +03:00
dynamic_bvh.h
expression.cpp
expression.h
face3.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
face3.h Rename files and the exposed name for Transform3D 2021-06-03 07:30:01 -04:00
geometry_2d.cpp
geometry_2d.h
geometry_3d.cpp
geometry_3d.h
math_defs.h
math_fieldwise.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
math_fieldwise.h
math_funcs.cpp
math_funcs.h Merge pull request #48903 from Calinou/math-funcs-remove-old-msvc-ifdef 2021-05-21 00:35:48 +02:00
octree.h
plane.cpp
plane.h
quaternion.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
quaternion.h Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
quick_hull.cpp
quick_hull.h
random_number_generator.cpp
random_number_generator.h
random_pcg.cpp
random_pcg.h
rect2.cpp
rect2.h Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
SCsub
transform_2d.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
transform_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
transform_3d.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
transform_3d.h Rename files and the exposed name for Transform3D 2021-06-03 07:30:01 -04:00
triangle_mesh.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
triangle_mesh.h
triangulate.cpp
triangulate.h
vector2.cpp Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
vector2.h Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
vector3.cpp Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
vector3.h Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
vector3i.cpp Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00
vector3i.h Allow clamping vectors and colors 2021-06-03 12:05:20 -04:00