Commit Graph

193 Commits

Author SHA1 Message Date
Hugo Locurcio
c751d9dc17 Add an use_hdr property to GradientTexture to allow storing HDR colors
This is disabled by default to save some memory and preserve the existing
behavior of clamping colors.
2022-08-19 02:18:16 +02:00
Hugo Locurcio
089135783e Hide triplanar sharpness when triplanar is disabled in SpatialMaterial
The Triplanar Sharpness property has no effect when Triplanar
is disabled.
2022-08-19 02:17:26 +02:00
Hugo Locurcio
a3ac9c19b6 Improve Shape2D's custom_solver_bias description 2022-08-19 02:15:46 +02:00
521934ff55 Ported from Godot4: 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.
- TwistedTwigleg
8aa3c2f091
2022-08-18 18:47:30 +02:00
6be9bf5dfe Cleaned up and added the skeleton modification stack implementations to the build. Also smaller fixes. 2022-08-18 15:41:28 +02:00
4c4e19223e Added _theme_ infix to the theme helper methods in Control. 2022-08-17 20:57:16 +02:00
220954cf08 Backported most of the improvements to String from Godot4. 2022-08-15 22:54:03 +02:00
5cd44e02d0 Backported the improvements to Transform from Godot4. 2022-08-14 20:35:11 +02:00
170a41ca82 Backported improvements to Basis from Godot4. Also bound all eligible methods. 2022-08-14 00:18:21 +02:00
c991043c95 Backported improvements to AABB from Godot 4. Also made sure all eligible methods are bound. 2022-08-13 18:21:54 +02:00
730bce8587 Renamed Quat to Quaternion for consistency with the other engine math classes. 2022-08-13 15:22:33 +02:00
f423b30714 Backported from Godot4: Fix secondary handles in editor gizmos
Primary and secondary handles are no longer differentiated by their ids, so a bool was added to tell them apart in all the handle-related methods.
Includes a minor fix in CollisionPolygon3DEditor, unrelated to editor gizmos.
- JFonS
5ebea2d120
2022-08-12 22:21:00 +02:00
47358bfaab Backported: add viewport.get_camera_2d()
* there is now a more clear distinction between camera_2d and camera_3d functions in the engine code
* simplified camera2d's exported interface - now everything happens directly with the 'current' variable and make_current and clear_current are no longer exposed- there were some situations where calling one instead of set_current would result in incomplete results
* rebased to current godot master
- verdog
879f84d8f8
- Note that i did not rename the original Camera related methods.
2022-08-12 18:29:04 +02:00
d1fe0ae433 Backported from Godot4: Fix blend animation to solve TRS track bug & blend order inconsistency - TokageItLab
b06d253920
2022-08-12 16:48:31 +02:00
e3918692a3 Backported from Godot 4: Fixed animation insertion in SkeletonEditor - TokageItLab
653e2a550c
2022-08-12 01:34:45 +02:00
2bc7355910 Ported from Godot4: Fixes to editor subgizmos
* Fixed subgizmo editing on scaled nodes.
* Added more clarifications on the coordinate space of subgizmos.
* Given input priority to the transform gizmo over subgizmo selection.
- JFonS
d7b58ebc9c
2022-08-12 00:43:53 +02:00
4b939998a7 Removed AnimationTreePlayer, as it was deprecated (and also practically unusable). 2022-08-11 23:01:27 +02:00
5e3c3ff4d0 Ported from Godot4: Implement global rest - TokageItLab
4d4ffa3a2c
2022-08-11 20:10:26 +02:00
109a0ca81b Ported from Godot4: Remove REST transform influence in skeleton bones
* Animations and Skeletons are now pose-only.
* Rest transform is kept as reference (when it exists) and for IK
* Improves 3D model compatibility (non uniform transforms will properly work, as well as all animations coming from Autodesk products).
- reduz
2dc823273e
2022-08-11 19:06:33 +02:00
92600420ba Backported from Godot4: Implemented SkeletonEditorGizmo.
-TokageItLab, lyuma
f2e9867e9f
- It still has some issues, as this one works differently than the 3.x version, they will be fixed later.
2022-08-11 17:31:02 +02:00
b6eb2db442 Backported returning AfterGUIInput from forward_spatial_gui_input from Godot4. Also removed the first index parameter. This fully broke the skeleton editor, it will be fixed soon. 2022-08-11 02:24:30 +02:00
58539a22b6 Backported from Godot4: Node3D gizmo improvements
* Clean-up of node_3d_editor_plugin.{h,cpp}: removed unused code, fixed some bugs.
* Moved node_3d_editor_gizmos.{h,cpp} to editor/plugins.
* Added support for multiple gizmos per node. This means custom gizmos will no longer override the built-in ones and that multiple gizmos can be used in more complex nodes.
* Added support for handle IDs. When adding handles to a gizmo, an ID can be specified for each one, making it easier to work with gizmos that have a variable number of handles.
* Added support for subgizmos, selectable elements that can be transformed without needing a node of their own. By overriding _subgizmo_intersect_frustum() and/or _subgizmo_intersect_ray() gizmos can define which subgizmos should be selected on a region or click selection. Subgizmo transformations are applied using get/set/commit virtual methods, similar to how handles work.
- JFonS
cfb555a081
- Note: MeshDataResourceEditor is now kind of painful to use, it will be fixed a bit later.
2022-08-11 01:24:29 +02:00
22ce231a4e Backported from Godot 4: New and improved IK system for Skeleton3D
This PR and commit adds a new IK system for 3D with the Skeleton3D node
that adds several new IK solvers, as well as additional changes and functionality
for making bone manipulation in Godot easier.
This work was sponsored by GSoC 2020 and TwistedTwigleg
Full list of changes:
* Adds a SkeletonModification3D resource
  * This resource is the base where all IK code is written and executed
* Adds a SkeletonModificationStack3D resource
  * This node oversees the execution of the modifications and acts as a bridge of sorts for the modifications to the Skeleton3D node
* Adds SkeletonModification3D resources for LookAt, CCDIK, FABRIK, Jiggle, and TwoBoneIK
  * Each modification is in it's own file
* Several changes to Skeletons, listed below:
  * Added local_pose_override, which acts just like global_pose_override but keeps bone-child relationships intract
    * So if you move a bone using local_pose_override, all of the bones that are children will also be moved. This is different than global_pose_override, which only affects the individual bone
  * Internally bones keep track of their children. This removes the need of a processing list, makes it possible to update just a few select bones at a time, and makes it easier to traverse down the bone chain
  * Additional functions added for converting from world transform to global poses, global poses to local poses, and all the same changes but backwards (local to global, global to world). This makes it much easier to work with bone transforms without needing to think too much about how to convert them.
  * New signal added, bone_pose_changed, that can be used to tell if a specific bone changed its transform. Needed for BoneAttachment3D
  * Added functions for getting the forward position of a bone
* BoneAttachment3D node refactored heavily
  * BoneAttachment3D node is now completely standalone in its functionality.
    * This makes the code easier and less interconnected, as well as allowing them to function properly without being direct children of Skeleton3D nodes
  * BoneAttachment3D now can be set either using the index or the bone name.
  * BoneAttachment3D nodes can now set the bone transform instead of just following it. This is disabled by default for compatibility
  * BoneAttachment3D now shows a warning when not configured correctly
* Added rotate_to_align function in Basis
* Added class reference documentation for all changes
- TwistedTwigleg
5ffed49907
Note: It still needs some work.
2022-08-10 01:01:38 +02:00
0ffa8e33a7 Backporter from Godot 4: Unexpose methods and property for binding children to Bones.
- madmiraal
65faa12fd3
2022-08-09 22:05:43 +02:00
a478334d4a Backported from Godot master: Made low level changes to the Skeleton3D class and Skeleton3D inspector. Changes listed below:
* Added helper functions to Skeleton3D for converting transforms from bone space to global space, and vice versa.
* Updated the Skeleton3D class reference.
* Changed the icon used for bones in the Skeleton3D inspector to use BoneAttachement3D's icon.
* Changed the Skeleton3D inspector to use EditorPropertyTransform and EditorPropertyVector3 when possible.
* Placed the Transform/Matrix for each bone in a sub-section, so it is visually similar to the Node3D inspector.
- TwistedTwigleg
24905becb2
- Also fixed smaller issues.
2022-08-09 21:57:46 +02:00
27aaa70037 Added back set_bone_pose to Skeleton, as I don't see any reason not to have it. Also improved it it. 2022-08-09 18:31:47 +02:00
6d293dc7a3 Removed Transform type track from the Animation. This leaves a few things, like the skeleton editor broken, it will be fixed soon. 2022-08-09 17:40:42 +02:00
8fd473f685 Backported: "Remove animation 3D transform track, replace by loc/rot/scale tracks" from Godot4.
ec19ed3723
Its a bit broken right now, more patches need to be ported. Also I kept the Transform track for now, and I did not touch the gltf module yet.
2022-08-08 23:49:18 +02:00
Rémi Verschelde
2ca1470010 File: Re-add support to skip CR (\r) in File::get_as_text
This was removed in #63481, and we confirmed that it's better like this,
but we add back the possibility to strip CR as an option, to optionally
restore the previous behavior.

For performance this is done directly in `String::parse_utf8`.

Also fixes Android `FileAccess::get_line()` as this one _should_ strip CR.

Supersedes #63717.

(cherry picked from commit 1418f97c70a5551bdbfeea853cbc479b32ea9e08)
2022-08-02 17:58:32 +02:00
c4e7bc1c45 Reused the old unused PROPERTY_HINT_SPRITE_FRAMES as PROPERTY_HINT_BUTTON. It allows you to add buttons to the inspectors. 2022-07-31 00:01:58 +02:00
9f5fb428ab Ported: Add error messages and docs to explain restrictions when calling NetworkedMultiplayerCustom.initialize()
- dsnopek
5eaf83f2d7
2022-07-30 00:49:12 +02:00
641c15f906 Ported: [3.x] HTML5: Add support for Input.vibrate_handheld() - pattlebass
fb7ecc748f
2022-07-30 00:29:14 +02:00
Andy Maloney
9481486f92 Add missing Python type hints in tools/make_rst.py
(cherry picked from commit 4b3d6f04a8036a330d499670198463655a097736)
2022-07-29 23:49:33 +02:00
41ef59bcc8 Ported: Expose VisualServer.viewport_set_use_32_bpc_depth() to the scripting API.
Previously, only the Viewport methods/properties were exposed to the
scripting API. - Calinou
ed4976d1d5
2022-07-29 23:03:48 +02:00
Rémi Verschelde
fa9d1120c4 doc: Fixup reference to Camera 2022-07-29 22:39:58 +02:00
Zak Grumbles
11ab10b7f2 Improve documentation for Camera3D's current member
* Added additional information to the camera documentation to explain
  how the 'current' attribute behaves when multiple cameras are in a
  scene.

(cherry picked from commit 349c750b18acf770ef6f0e43643c8a37a3beb450)
2022-07-29 22:38:52 +02:00
Derwent Ready (drentsoft)
1288e9c520 Clarified usage of TreeItem get_next*() and get_prev*() functions.
(cherry picked from commit df5a9228808497f19b5bddf7b58d2a532cd990d0)
2022-07-29 22:38:35 +02:00
7161d7bc29 Ported: Add NetworkedMultiplayerCustom so high-level multiplayer backends can be added from GDScript. - dsnopek
8ad5889c1a
2022-07-29 22:19:12 +02:00
31136b3669 Ported: Document support limitations for OmniLight cubemap shadows in GLES2 - Calinou
b03ceaba2f
2022-07-29 22:11:41 +02:00
01b1c3e99f Ported: Improve documentation for HTTPRequest's timeout property - Calinou
28b9e376cf
2022-07-29 21:30:22 +02:00
d6637c39a7 Ported: AudioStreamPlayer: Clarify that no validation is made on 'bus' name - akien-mga
685cecbd5f
2022-07-29 21:23:58 +02:00
9af3a7a709 Ported sort() for poolVectors from 7b8b91f505 . 2022-07-29 21:18:44 +02:00
5ebeb6a36c Ported: Add global_translation and global_rotation to Spatial - foxydevloper
5238740fef
2022-07-29 21:02:00 +02:00
3fb2c16ba0 Ported: Input: Re-enable input accumulation disabled by error in 3.4
Input accumulation was implemented and enabled by default in 3.1, and
I don't recall major complaints around it (or bugs were fixed).
In 3.4, #42220 added input buffering and apparently toggled input
accumulation off by mistake.
This led to multiple bug reports about degraded performance on Windows,
or simply unexpected behavior change (see linked issues in #55037).
Fixes #55037.
- akien-mga
d6bcdd18c3
2022-07-29 20:50:00 +02:00
88fe196e79 Ported: [3.x, macOS, Windows, X11] Add stylus inverted/eraser support to InputEventMouseMotion event.
- hansemro
193d5c11f3
2022-07-29 20:31:16 +02:00
Jean-Marc Pelletier
2f9f0ecf8b StyleBox: Document correct methods to draw with a RID
(cherry picked from commit 63d5f3156178fd57fdf991c74833adfd97490c10)
2022-07-29 19:58:55 +02:00
c2f38ef861 Ported:
Input: Document that accumulated input is disabled by default

This was actually disabled by mistake in 3.4 causing a regression, but since
this issue survived the whole 3.4.x series and it's now very close to 3.5,
it's too late to change it again.
We might consider it for 3.6 after some beta testing.
- akien-mga
7de45b6203
2022-07-29 19:42:05 +02:00
16dd2f1141 Ported: Clarify NavigationAgent radius property
Documents Navigation radius property, especially that it affects avoidance only.
- smix8
7aff541538
2022-07-29 18:13:29 +02:00
11a92cfe27 Ported: Add NavigationServer map_force_update() function
Adds map_force_update() function to NavigationServer. This function immediately flushes the Navigationserver command queue and recalculates all navigationmeshes and region connections for a specific map.
- smix8
721c99a530
2022-07-29 17:56:48 +02:00
da20b32f66 Ported: Add NavigationServer.region_owns_point() helper function
Adds a helper function to check if a world space position is currently owned by a navigation region.
- smix8
f0069cc1e9
2022-07-29 17:52:38 +02:00