virtualx-engine/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 Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
a_star.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
aabb.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
aabb.h Type consistencies in core 2021-01-26 13:04:22 -05:00
audio_frame.h Make audio bus channels' peak volume consistent 2021-02-02 11:30:32 +01:00
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.h Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07: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
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.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
color_names.inc Rename color constants (alternative) 2021-01-26 19:07:00 +03: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 Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
delaunay_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
disjoint_set.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
dynamic_bvh.cpp Fixed possible crash in DynamicBVH::optimize_incremental 2021-05-27 18:38:06 +03:00
dynamic_bvh.h Core: Drop custom copymem/zeromem defines 2021-04-27 16:26:27 +02:00
expression.cpp Fixes small typos and grammar correction 2021-03-12 19:05:16 +05:30
expression.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
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 Core: Drop custom copymem/zeromem defines 2021-04-27 16:26:27 +02:00
geometry_2d.h Rework the TileSet resource and TileMap nodes: 2021-05-07 18:06:17 +02:00
geometry_3d.cpp Fix unchecked array access in build_*_planes 2021-02-22 16:32:51 +01:00
geometry_3d.h Cylinder support in Godot Physics 3D 2021-02-10 10:00:53 -07:00
math_defs.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
math_fieldwise.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
math_fieldwise.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
math_funcs.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
math_funcs.h Merge pull request from Calinou/math-funcs-remove-old-msvc-ifdef 2021-05-21 00:35:48 +02:00
octree.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
plane.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
plane.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
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 Fixes small typos and grammar correction 2021-03-12 19:05:16 +05:30
quick_hull.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
random_number_generator.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
random_number_generator.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
random_pcg.cpp Cast Unix time to uint in the randomize function 2021-05-03 11:08:39 -03:00
random_pcg.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
rect2.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
rect2.h Dynamic BVH broadphase in 2D & 3D Godot Physics 2021-05-10 16:28:55 -07:00
SCsub SCons: Format buildsystem files with psf/black 2020-03-30 09:05:53 +02:00
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 Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
triangulate.cpp Fixes small typos and grammar correction 2021-03-12 19:05:16 +05:30
triangulate.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
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