Commit Graph

35094 Commits

Author SHA1 Message Date
Rémi Verschelde 94c31ba300
Merge pull request #47872 from TwistedTwigleg/GSOC_2020_Working_Branch_2D_IK_SQUISHED
New and improved IK system for Skeleton2D - Squished
2021-06-06 01:29:20 +02:00
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
Yuri Roubinsky a090575a21 Fix property editor to make changes if popup closed (remake) 2021-06-05 19:31:54 +03:00
reduz 32625145c8 Rename GI Classes
* GIProbe is now VoxelGI
* BakedLightmap is now LightmapGI

As godot adds more ways to provide GI (as an example, SDFGI in 4.0), the different techniques (which have different pros/cons) need to be properly named to avoid confusion.
2021-06-05 09:28:56 -03:00
Rémi Verschelde 7085c0d801
Merge pull request #39202 from Calinou/editor-import-invert-green-channel
Replace "Invert" import option with more useful "Normal Map Invert Y"
2021-06-05 13:35:39 +02:00
Rémi Verschelde 6f7d45d210
Merge pull request #45364 from madmiraal/rename-quat
Rename Quat to Quaternion
2021-06-05 13:32:08 +02:00
Rémi Verschelde 537d8899e9
Merge pull request #49319 from madmiraal/add-missing-mono-overrides
Add missing override keyword to CSharpLanguage::is_control_flow_keyword()
2021-06-05 13:30:29 +02:00
Rémi Verschelde 79d679fd8e
Merge pull request #42282 from andriyDev/DeleteYSort
Remove YSort node, move its functionality into Node2D
2021-06-05 13:22:51 +02:00
andriyDev 9f4bf5ec80 Deleted YSort, moved its functionality directly into Node2D.
YSort now has a compatibility alias to Node2D.
Updated TileMap to use the existing Node2D y_sort_enabled property instead
of its own property.
Updated Node2D doc to include the new y_sort_enabled member.
Updated TileMap doc to remove its mention of cell_y_sort.
Deleted YSort doc.
2021-06-05 00:55:25 -07:00
Rémi Verschelde 8363ee6f8d
Merge pull request #48908 from nekomatata/physics-nodes-reorganization
Physics nodes reorganization
2021-06-05 00:58:44 +02:00
PouleyKetchoupp 23abac9325 Linear velocity cleanup
CharacterBody has a linear_velocity property to replace the argument in
move_and_slide.

StaticBody handles reporting linear/angular velocity correctly when
kinematic motion is used (in 3D, used in vehicle and navigation).
2021-06-04 11:40:36 -07:00
PouleyKetchoupp b2bd9f4e51 Safe margin cleanup
Safe margin property on CharacterBody only, used as argument in
move_and_collide.

Removed kinematic_safe_margin in 3D physics server, not really useful
and now harmonized with 2D.
2021-06-04 11:40:36 -07:00
PouleyKetchoupp 65822559ce Support for kinematic_motion in StaticBody
Does the same thing as simulate motion from RigidBody in Kinematic mode,
and CharacterBody (previously KinematicBody).

Added support for constant linear/angular velocity with kinematic_motion
in StaticBody, which moves the body in physics.

Updated documentation for StaticBody and CharacterBody to describe their
functionalities more accurately.
2021-06-04 11:40:36 -07:00
PouleyKetchoupp ee4b756a51 More explanatory names for RigidBody modes
MODE_DYNAMIC instead of MODE_RIGID
MODE_DYNAMIC_LOCKED instead of MODE_CHARACTER

No more special case for sleeping behavior for MODE_DYNAMIC_LOCKED
(MODE_CHARACTER was forcing the body not to sleep, which is redundant
with can_sleep and wasn't done in Bullet).
2021-06-04 11:40:36 -07:00
PouleyKetchoupp 287c3900fd Properties for move_and_slide and remove move_and_slide_with_snap
- snap property to replace move_and_slide_with_snap()
- floor_max_angle, stop_on_slope, infinite_inertia, max_slides,
up_direction properties to replace arguments from move_and_slide()
- up direction now defaults to Vector3.UP and Vector2.UP
2021-06-04 11:40:36 -07:00
PouleyKetchoupp ba13d23140 KinematicBody split between new CharacterBody and PhysicsBody
PhysicsBody now has methods move_and_collide/test_move and needed
properties for these methods: safe margin, locked axes (3D only).

Moved collision_exceptions from StaticBody to PhysicsBody for 3D
(same as 2D, and conforms to documentation).

RigidBody doesn't have test_motion method anymore, it's now redundant
with PhysicsBody.test_move.
2021-06-04 11:40:36 -07:00
reduz 98a81fe8aa Add API for registering native extensions
* First step for GDNative to behave more like modules
* Only Object and ClassDB, the rest needs to happen on the GDNative side.
2021-06-04 14:56:46 -03:00
Marcel Admiraal beae6527e0 Add missing override keyword to CSharpLanguage::is_control_flow_keyword() 2021-06-04 18:39:30 +01:00
Marcel Admiraal 8acd13a456 Rename Quat to Quaternion 2021-06-04 18:14:32 +01:00
Hugo Locurcio 4ef71d7a01
Replace "Invert" import option with more useful "Normal Map Invert Y"
This can be used to invert a normal map's direction.

The "Invert" import option is no longer useful in Godot 4.0 since
it uses height maps instead of depth maps in StandardMaterial3D.

This closes https://github.com/godotengine/godot-proposals/issues/785.
2021-06-04 18:09:16 +02:00
Rémi Verschelde 766c6dbb24
Merge pull request #48920 from aaronfranke/accept 2021-06-04 16:13:25 +02:00
Rémi Verschelde 0de0347c1e
Merge pull request #47124 from aaronfranke/disable-skeleton3d
Disable Skeleton3D when compiling without 3D
2021-06-04 16:05:16 +02:00
Yuri Sizov 790d6e602b Fix Theme overriding existing theme types with empty 2021-06-04 16:34:49 +03:00
Yuri Sizov f7da0698d0 Make sure Tabs reflect theme changes 2021-06-04 16:22:09 +03:00
Rémi Verschelde 58ee66c52f
Merge pull request #49304 from aaronfranke/tr3d-tr-compat-vp
Add "Transform" compatibility name for "Transform3D" in VariantParser
2021-06-04 14:43:55 +02:00
Aaron Franke bbd49dec23
Disable Skeleton3D when compiling without 3D
Make animation code not depend on Skeleton3D or even Node3D
2021-06-04 08:33:50 -04:00
Rémi Verschelde 5dc923d386
Merge pull request #49297 from aaronfranke/anim-type-tr3d
Rename Animation TYPE_TRANSFORM to TYPE_TRANSFORM3D
2021-06-04 14:11:03 +02:00
Aaron Franke 028d9fa2bd
Add "Transform" compatibility name for "Transform3D" in VariantParser 2021-06-04 08:07:08 -04:00
Rémi Verschelde 023056bc5c
Merge pull request #49303 from BastiaanOlij/gdnative_variant_transform_rename
Rename GODOT_VARIANT_TYPE_TRANSFORM to GODOT_VARIANT_TYPE_TRANSFORM3D
2021-06-04 13:57:37 +02:00
Bastiaan Olij 3ead536e26 Rename GODOT_VARIANT_TYPE_TRANSFORM to GODOT_VARIANT_TYPE_TRANSFORM3D 2021-06-04 21:24:15 +10:00
Rémi Verschelde f0b17bcddb
doc: Sync classref after merge of #47336 2021-06-04 11:49:01 +02:00
Rémi Verschelde 6aa3d8f06a
Merge pull request #48902 from pycbouh/editor-improve-template-downloader
Improve the UI/UX of the Export Template Manager dialog
2021-06-04 11:35:17 +02:00
Rémi Verschelde 95ff547da4
Merge pull request #44198 from madmiraal/rename-translation-position
Rename Node3D's property translation to position
2021-06-04 11:34:35 +02:00
Rémi Verschelde 875ed4d600
Merge pull request #47336 from Calinou/rename-shader-file-extension
Rename the `.shader` file extension to `.gdshader`
2021-06-04 11:26:14 +02:00
Marcel Admiraal a6e44bd16c Rename Node3D's property translation to position 2021-06-04 09:54:52 +01:00
Rémi Verschelde c33d444a54
Merge pull request #47871 from aaronfranke/assetlib-pm
Rename tabs in the project manager
2021-06-04 10:43:08 +02:00
Rémi Verschelde 4790d1560e
Merge pull request #49300 from aaronfranke/editor-prop-tr3d
Rename EditorPropertyTransform to EditorPropertyTransform3D
2021-06-04 10:41:15 +02:00
Rémi Verschelde 25f8987925
Merge pull request #37013 from aaronfranke/2d-flip
Flip 2D icon to match Godot's handedness
2021-06-04 10:03:27 +02:00
Rémi Verschelde 352d8315f1
Merge pull request #47116 from aaronfranke/3d-modules
Disable 3D-only modules when 3D is disabled
2021-06-04 09:51:22 +02:00
Aaron Franke 6f472d154b
Rename EditorPropertyTransform to EditorPropertyTransform3D 2021-06-03 21:58:26 -04:00
Aaron Franke 125d1a7cd3
Rename Animation TYPE_TRANSFORM to TYPE_TRANSFORM3D 2021-06-03 21:11:54 -04:00
Aaron Franke 7813167196
Rename tabs in the project manager 2021-06-03 20:02:02 -04:00
Aaron Franke bc5c10e0f8
Use a more specific type for AcceptDialog register_text_enter 2021-06-03 19:57:03 -04:00
Jonas Bernemann f0469fddfe EditorSettings: Look for binding while filtering too 2021-06-04 01:31:55 +02:00
Yuri Sizov f6d827b0da Make several actions in the Inspector dock more obvious 2021-06-04 02:05:27 +03:00
Aaron Franke acd695060b
Disable 3D-only modules when 3D is disabled 2021-06-03 17:45:28 -04:00
Aaron Franke fa7874d6ce
Flip 2D icon to match Godot's handedness 2021-06-03 17:36:54 -04:00
Rémi Verschelde 5d9cab3aeb
Merge pull request #38430 from aaronfranke/transform3d 2021-06-03 23:07:21 +02:00
Rémi Verschelde ea2a0b5455
Merge pull request #43450 from aaronfranke/mouse-mode-bitwise
Add MOUSE_MODE_CONFINED_HIDDEN to MouseMode enum
2021-06-03 22:00:15 +02:00
Rémi Verschelde 4e4f96f989
Merge pull request #49283 from KoBeWi/a&b
Improve sort_custom() description
2021-06-03 21:53:15 +02:00