godot/scene/2d
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
..
animated_sprite_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
animated_sprite_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
area_2d.cpp Merge pull request #42742 from madmiraal/fix-12215 2021-05-18 20:00:48 +02:00
area_2d.h Merge pull request #42742 from madmiraal/fix-12215 2021-05-18 20:00:48 +02:00
audio_stream_player_2d.cpp Modernize atomics 2021-02-18 17:12:46 +01:00
audio_stream_player_2d.h Modernize atomics 2021-02-18 17:12:46 +01:00
back_buffer_copy.cpp Initialize class variables with default values in scene/ [1/2] 2021-02-07 22:29:31 +01:00
back_buffer_copy.h Initialize class variables with default values in scene/ [1/2] 2021-02-07 22:29:31 +01:00
camera_2d.cpp Tweak Camera2D editor line colors for better visibility 2021-05-27 07:14:49 +02:00
camera_2d.h Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
canvas_group.cpp Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
canvas_group.h Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
canvas_modulate.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
canvas_modulate.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
collision_object_2d.cpp KinematicBody split between new CharacterBody and PhysicsBody 2021-06-04 11:40:36 -07:00
collision_object_2d.h KinematicBody split between new CharacterBody and PhysicsBody 2021-06-04 11:40:36 -07:00
collision_polygon_2d.cpp KinematicBody split between new CharacterBody and PhysicsBody 2021-06-04 11:40:36 -07:00
collision_polygon_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
collision_shape_2d.cpp KinematicBody split between new CharacterBody and PhysicsBody 2021-06-04 11:40:36 -07:00
collision_shape_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
cpu_particles_2d.cpp Core: Drop custom copymem/zeromem defines 2021-04-27 16:26:27 +02:00
cpu_particles_2d.h Increase the default 2D gravity to 980.0 2021-05-05 22:49:06 -04:00
gpu_particles_2d.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
gpu_particles_2d.h Support for 2D particles to collide against SDF 2021-05-23 16:43:36 -03:00
joints_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
joints_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
light_2d.cpp Tweak dozens of editor property hints for consistency 2021-05-25 02:50:35 +02:00
light_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
light_occluder_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
light_occluder_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
line_2d.cpp Line2D::set_point_position Fail if passed index is out of bounds 2021-02-21 13:50:11 +01:00
line_2d.h Initialize class variables with default values in scene/ [1/2] 2021-02-07 22:29:31 +01:00
line_builder.cpp Fixes small typos and grammar correction 2021-03-12 19:05:16 +05:30
line_builder.h Initialize class variables with default values in scene/ [1/2] 2021-02-07 22:29:31 +01:00
mesh_instance_2d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
mesh_instance_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
multimesh_instance_2d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
multimesh_instance_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
navigation_agent_2d.cpp Merge pull request #47960 from smix8/issue_47334_navagent2d_target_reached 2021-04-27 13:34:48 +02:00
navigation_agent_2d.h put distance check to target into function 2021-04-27 11:22:37 +02:00
navigation_obstacle_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
navigation_obstacle_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
navigation_region_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
navigation_region_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
node_2d.cpp Deleted YSort, moved its functionality directly into Node2D. 2021-06-05 00:55:25 -07:00
node_2d.h Deleted YSort, moved its functionality directly into Node2D. 2021-06-05 00:55:25 -07:00
parallax_background.cpp Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
parallax_background.h Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
parallax_layer.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
parallax_layer.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
path_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
path_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
physical_bone_2d.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
physical_bone_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
physics_body_2d.cpp Linear velocity cleanup 2021-06-04 11:40:36 -07:00
physics_body_2d.h Linear velocity cleanup 2021-06-04 11:40:36 -07:00
polygon_2d.cpp Fixes missng 2D engine bits 2021-05-11 11:21:36 -03:00
polygon_2d.h Fixes missng 2D engine bits 2021-05-11 11:21:36 -03:00
position_2d.cpp Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
position_2d.h Use real_t in non-physics 2D nodes 2021-03-19 13:04:45 -04:00
ray_cast_2d.cpp Prevent setting too big or too small Collision Mask and Layer 2021-04-30 17:19:04 +02:00
ray_cast_2d.h Highlight collision, correct the size and make the arrow a bit less thick for low-res game 2021-03-05 00:32:49 +01:00
remote_transform_2d.cpp Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
remote_transform_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00
SCsub SCons: Format buildsystem files with psf/black 2020-03-30 09:05:53 +02:00
skeleton_2d.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
sprite_2d.cpp Change frame_coords to Vector2i 2021-05-23 21:38:27 +02:00
sprite_2d.h Change frame_coords to Vector2i 2021-05-23 21:38:27 +02:00
tile_map.cpp Deleted YSort, moved its functionality directly into Node2D. 2021-06-05 00:55:25 -07:00
tile_map.h Deleted YSort, moved its functionality directly into Node2D. 2021-06-05 00:55:25 -07:00
touch_screen_button.cpp Fix crashes in *_input functions 2021-04-05 08:52:21 +02:00
touch_screen_button.h Initialize class variables with default values in scene/ [1/2] 2021-02-07 22:29:31 +01:00
visibility_notifier_2d.cpp More explanatory names for RigidBody modes 2021-06-04 11:40:36 -07:00
visibility_notifier_2d.h Use Array for node configuration warnings 2021-04-11 23:25:38 -05:00