godot/scene/resources
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
..
default_theme Move and expose AutoComplete in CodeEdit 2021-06-01 15:38:45 +01:00
animation.cpp Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
animation.h Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
audio_stream_sample.cpp Core: Drop custom copymem/zeromem defines 2021-04-27 16:26:27 +02:00
audio_stream_sample.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
bit_map.cpp BitMask::create Don't request more memory than needed when size is a multiply of 8 2021-05-08 13:04:41 +02:00
bit_map.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
box_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
box_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
camera_effects.cpp Hide more options of disabled properties 2021-03-03 20:51:35 -03:00
camera_effects.h Hide more options of disabled properties 2021-03-03 20:51:35 -03:00
capsule_shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
capsule_shape_2d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
capsule_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
capsule_shape_3d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
circle_shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
circle_shape_2d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
concave_polygon_shape_2d.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
concave_polygon_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
concave_polygon_shape_3d.cpp Disable backface collision with ConcavePolygonShape by default 2021-03-18 11:30:22 -07:00
concave_polygon_shape_3d.h Disable backface collision with ConcavePolygonShape by default 2021-03-18 11:30:22 -07:00
convex_polygon_shape_2d.cpp Rename Array.invert() to Array.reverse() 2021-03-21 10:20:08 +00:00
convex_polygon_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
convex_polygon_shape_3d.cpp Replace QuickHull with Bullet's convex hull computer. 2021-05-22 22:35:42 +02:00
convex_polygon_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
curve.cpp Implement Particle Trails 2021-04-30 17:38:02 -03:00
curve.h Implement Particle Trails 2021-04-30 17:38:02 -03:00
cylinder_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
cylinder_shape_3d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
environment.cpp Hide extra options from various nodes if they're not enabled 2021-03-02 09:25:09 -03:00
environment.h Merge pull request #45845 from qarmin/cppcheck_scene_2 2021-02-10 20:06:12 +01:00
font.cpp Merge pull request #46045 from bruvzg/text_server_bmp_create 2021-02-24 12:55:36 +01:00
font.h Merge pull request #46045 from bruvzg/text_server_bmp_create 2021-02-24 12:55:36 +01:00
gradient.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
gradient.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
height_map_shape_3d.cpp Merge pull request #47345 from nekomatata/heightmap-draw-triangles 2021-04-20 17:41:11 +02:00
height_map_shape_3d.h Heightmap collision shape support in Godot Physics 2021-03-25 16:52:41 -07:00
line_shape_2d.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
line_shape_2d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
material.cpp Tweak dozens of editor property hints for consistency 2021-05-25 02:50:35 +02:00
material.h Implement Particle Trails 2021-04-30 17:38:02 -03:00
mesh.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
mesh.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
mesh_data_tool.cpp MeshDataTool::create_from_surface Fail on invalid index data 2021-02-23 21:37:32 +01:00
mesh_data_tool.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
mesh_library.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
mesh_library.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
multimesh.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
multimesh.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
navigation_mesh.cpp Prevent setting too big or too small Collision Mask and Layer 2021-04-30 17:19:04 +02:00
navigation_mesh.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
packed_scene.cpp Fix crash when loading a scene containing an uncreatable type 2021-02-25 23:58:30 +01:00
packed_scene.h Improve resource load cache 2021-02-11 15:44:28 -03:00
particles_material.cpp Merge pull request #48955 from Calinou/editor-tweak-property-hints 2021-05-25 11:44:43 +02:00
particles_material.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
physics_material.cpp Allow values > 1 for friction and bounce in PhysicsMaterial 2021-05-03 17:48:23 -07:00
physics_material.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
polygon_path_finder.cpp Rename Array.invert() to Array.reverse() 2021-03-21 10:20:08 +00:00
polygon_path_finder.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
primitive_meshes.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
primitive_meshes.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
ray_shape_2d.cpp Bring the Raycast2D improvements to Rayshape2D 2021-03-21 14:52:44 +01:00
ray_shape_2d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
ray_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
ray_shape_3d.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
rectangle_shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
rectangle_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
resource_format_text.cpp Make all file access 64-bit (uint64_t) 2021-05-17 15:06:19 +02:00
resource_format_text.h Improve resource load cache 2021-02-11 15:44:28 -03:00
SCsub SCons: Add explicit dependencies on thirdparty code in cloned env 2020-12-18 10:29:34 +01:00
segment_shape_2d.cpp Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
segment_shape_2d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
shader.cpp Rename the .shader file extension to .gdshader 2021-03-24 21:33:44 +01:00
shader.h Improve resource load cache 2021-02-11 15:44:28 -03:00
shape_2d.cpp Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
shape_2d.h Added option in project settings to draw Shape2D outlines 2021-02-25 07:52:50 -07:00
shape_3d.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
shape_3d.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
skeleton_modification_2d.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_ccdik.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_ccdik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_fabrik.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_fabrik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_jiggle.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_jiggle.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_lookat.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_lookat.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_physicalbones.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_physicalbones.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_stackholder.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_stackholder.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_twoboneik.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_2d_twoboneik.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_stack_2d.cpp New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skeleton_modification_stack_2d.h New and improved IK system for Skeleton2D 2021-06-05 15:19:51 -04:00
skin.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
skin.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
sky.cpp Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
sky.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
sky_material.cpp Added constants PI, TAU and E to the shader language 2021-05-25 12:15:08 +03:00
sky_material.h Added ability to visualize native shaders 2021-01-06 09:40:09 -03:00
sphere_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
sphere_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
sprite_frames.cpp Move SpriteFrames to its own file in the resources folder 2021-03-16 02:00:47 -04:00
sprite_frames.h Move SpriteFrames to its own file in the resources folder 2021-03-16 02:00:47 -04:00
style_box.cpp Hide more options of disabled properties 2021-03-03 20:51:35 -03:00
style_box.h Hide more options of disabled properties 2021-03-03 20:51:35 -03:00
surface_tool.cpp Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
surface_tool.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
syntax_highlighter.cpp doc: Don't bind argument names with p_ prefix 2021-02-04 14:45:06 +01:00
syntax_highlighter.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
text_file.cpp Rename File::get_len() get_length() 2021-05-25 11:54:28 +01:00
text_file.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
text_line.cpp Tweak dozens of editor property hints for consistency 2021-05-25 02:50:35 +02:00
text_line.h Initialize class variables with default values in scene/ [2/2] 2021-02-09 18:24:36 +01:00
text_paragraph.cpp Tweak dozens of editor property hints for consistency 2021-05-25 02:50:35 +02:00
text_paragraph.h Use extra font spacing in the RichTextLabel line height calculation, and stylebox size in the minimum size calculation. 2021-03-29 17:26:53 +03:00
texture.cpp Fix some warnings raised by GCC-11.1 2021-05-25 17:23:53 +02:00
texture.h Fix some warnings raised by GCC-11.1 2021-05-25 17:23:53 +02:00
theme.cpp Add theme_custom_type property to Control and Window 2021-05-17 17:20:42 +03:00
theme.h Add theme_custom_type property to Control and Window 2021-05-17 17:20:42 +03:00
tile_set.cpp Deleted YSort, moved its functionality directly into Node2D. 2021-06-05 00:55:25 -07:00
tile_set.h Fixes TileSet Y-sort not working and TileSet not saving correctly 2021-05-21 10:13:37 +02:00
video_stream.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00
visual_shader.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
visual_shader.h Added Billboard Node to Visual Shaders 2021-05-28 09:24:06 +03:00
visual_shader_nodes.cpp Rename Variant TRANSFORM to TRANSFORM3D 2021-06-03 07:30:01 -04:00
visual_shader_nodes.h Rename Transform to Transform3D in core 2021-06-03 07:30:01 -04:00
visual_shader_sdf_nodes.cpp Added SDF nodes to visual shader 2021-01-18 15:04:54 +01:00
visual_shader_sdf_nodes.h Added SDF nodes to visual shader 2021-01-18 15:04:54 +01:00
world_2d.cpp Increase the default 2D gravity to 980.0 2021-05-05 22:49:06 -04:00
world_2d.h Remove Navigation2D/3D nodes, and move the navigation map to the world resource 2021-03-10 11:23:06 +01:00
world_3d.cpp Implement occlusion culling 2021-04-23 21:45:23 +02:00
world_3d.h Remove Navigation2D/3D nodes, and move the navigation map to the world resource 2021-03-10 11:23:06 +01:00
world_margin_shape_3d.cpp Removed _change_notify 2021-02-10 19:31:24 -03:00
world_margin_shape_3d.h Update copyright statements to 2021 2021-01-01 20:19:21 +01:00