Commit Graph

165 Commits

Author SHA1 Message Date
lawnjelly
cd68b6e1e2 CPUParticles initialize data on set_amount
Fills particle data with zeroes on resize using set_amount(), to prevent garbage data including Nans being sent to VisualServer, which can corrupt the spatial partitioning.
2022-10-08 16:13:50 +02:00
kleonc
4da6c31ba9 SpriteBase3D Fix drawing AtlasTextures with vertical margins differently than in 2D 2022-10-08 16:09:18 +02:00
92af14b0b0 Ported: Move duplicated drawing code from Sprite3D/AnimatedSprite3D to SpriteBase3D
- kleonc
0bf2b8e813
2022-10-08 16:08:49 +02:00
93eb41c69e Ported: added options for sorting transparent objects
- QbieShay, akien-mga, clayjohn
acdcbefa4e
2022-09-17 10:54:57 +02:00
lawnjelly
0859d5b60f Portals - Show RayCast debug helper
Switches the raycast helper to global portal_mode, allowing it to show when portals are active.
2022-09-17 00:06:15 +02:00
b6dc768e74 Fix build. 2022-09-16 19:47:02 +02:00
Marcin Nowak
a697c239b8 Backport panning strength parameters from 4.0 2022-09-16 19:44:55 +02:00
66f2357d01 Now Cameras use Worlds directly instead of Viewports. 2022-08-30 14:08:27 +02:00
786e20b159 Work on fixing the remaining issues / error messages with World overrides. 2022-08-30 12:28:05 +02:00
4303dfb5c0 More work on World override support. 2022-08-29 22:55:48 +02:00
b886d14cf5 Added _3d postfix to the end of the World3D related getters and setters in Viewport. 2022-08-29 17:54:41 +02:00
24a1580dbf Renamed the files aswell. 2022-08-29 17:33:10 +02:00
e4ae7f2ebc Renamed Environment to Environment3D, and WorldEnvironment to WorldEnvironment3D. 2022-08-29 17:21:40 +02:00
2aee6ab0bb Renamed World to World3D. 2022-08-29 16:49:00 +02:00
e558e0f700 Fix build when the new skeleton 3d module is disabled. 2022-08-28 16:01:50 +02:00
dc28777321 Moved Skeleton and it's related classes to a module. 2022-08-28 15:46:12 +02:00
a21352637e Fix infinite loop when reparenting bones in the bone editor. Also fixed issues with bones sometimes returning incorrect children. 2022-08-19 23:46:14 +02:00
e2d42db711 Also renamed the files. 2022-08-19 21:24:36 +02:00
cffe742085 Renamed the VisualServer to RenderringServer like in Godot4, as I think it's a lot better name for it. I did not yet rename the files. 2022-08-19 20:50:20 +02:00
0438da9841 Ported: [3.x] Add ShapeCast and ShapeCast2D nodes - PrecisionRender
47a62e28ac
2022-08-19 03:12:32 +02:00
45c65911b5 Ported: Allow negative scale in Particles and CPUParticles
This can be used to make 2D particles look more 3D-y with thoughtful use
of scale curve animation.
- Calinou
c4a3560884
2022-08-19 02:42:33 +02:00
9757c39f05 Moved a few more core classes. 2022-08-17 17:43:49 +02:00
686663d3e4 Moved around more classes in core. 2022-08-17 16:01:01 +02:00
04feb63860 Moved Engine and projectSettings. 2022-08-17 15:35:28 +02:00
dc9cc716c7 Moved Object related classes under core/object. 2022-08-17 13:45:14 +02:00
388b88678e Moved container related classes in core under a new containers directory. 2022-08-17 12:53:49 +02:00
e71e3ed897 Now Vector4, Vector4i, Projection, PoolVector4Array, PoolVector4iArray, are built in variant types. Also reordered the Variant's Type enum, renamed _RID in it to RID, fixed a few smaller issues and removed some very old compat code. 2022-08-16 21:55:56 +02:00
8c2e76840c Removed CameraMatrix, and switched to Projection. 2022-08-16 10:26:35 +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
d9e094ab9a Renamed elements in Basis to rows. 2022-08-13 19:07:59 +02:00
730bce8587 Renamed Quat to Quaternion for consistency with the other engine math classes. 2022-08-13 15:22:33 +02:00
4b939998a7 Removed AnimationTreePlayer, as it was deprecated (and also practically unusable). 2022-08-11 23:01:27 +02:00
dc3500ec17 Fixed BoneAttachments. 2022-08-11 22:32:32 +02:00
502f8f85c5 Fix infinite recursion issues in Skeleton. 2022-08-11 22:32:25 +02:00
9d9271b518 Removed the SNAME macro, I'll probably keep static counting support for StringNames though. 2022-08-11 20:22:51 +02:00
5e3c3ff4d0 Ported from Godot4: Implement global rest - TokageItLab
4d4ffa3a2c
2022-08-11 20:10:26 +02:00
da62c587e8 Ported from Godot4: get rid set_bone_pose and fix some function in SkeletonEditor - TokageItLab
8e9897b6de
2022-08-11 19:57:23 +02:00
36b5334282 Ported from Godot4: Fix for SkeletonModification3Ds to work with the new bone pose changes, fixed global_pose_to_local_pose function
- TwistedTwigleg
0cedc04769
2022-08-11 19:09:58 +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
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
b352060a62 Added a new bones_updated signal to Skeleton. 2022-08-10 12:42:04 +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
cf918406ae Renamed Skeleton's skeleton_updated signal to pose_updated to make the following backports that much easier. 2022-08-09 22:31:17 +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
3d4a55a1a3 Backported: Added feature to move physical bones with skeleton when not simulating physics. - AndreaCatania
374432d074
2022-08-09 19:19:50 +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
453c6cdda4 Remove duplicate methods. 2022-08-08 17:31:56 +02:00
2d2dfb6a84 Backported some of the improvemnents to BoneAttachment from Godot4. 2022-08-08 17:29:59 +02:00
5fa6f5e5fb Backported a few helper methods from Godot4 to Skeleton. 2022-08-08 17:29:34 +02:00
7301c3f43c Backported ImporterMesh and ImporterMeshInstance3D from Godot4. 2022-08-07 22:44:42 +02:00
lawnjelly
8726cccd56 Portals - Allow more logging to be disabled
Some logging messages were still being issued when portals/debug/logging was false. This could be annoying in games that stream in parts of levels and repeatedly call `rooms_convert()`.

This PR allows all but essential logging to be disabled.
2022-07-29 22:37:46 +02:00
5ebeb6a36c Ported: Add global_translation and global_rotation to Spatial - foxydevloper
5238740fef
2022-07-29 21:02:00 +02:00
Hayden
8e1244c196 Fix crash on NaN offset in path_follower 2d and 3d 2022-07-29 20:52:27 +02:00
e0e4d0e51d Ported: Fix editor-only visibility for lights
* Update visibility again for editor-only lights if owner changes.
Fixes #26399, supersedes #52327
- reduz
995281ca90
2022-07-29 19:28:33 +02:00
6871b0c752 Ported: Only show relevant properties in the DirectionalLight inspector
Some split distance properties are unused depending on the
current shadow mode. Also, Blend Splits and Bias Split Scale can
only be used if the shadow mode is PSSM 2 Splits or PSSM 4 Splits.
- Calinou
1806661462
2022-07-29 17:24:47 +02:00
f78be19966 Ported: Add process_mode property to InterpolatedCamera - saneery
cb94797ce4
2022-07-29 17:19:58 +02:00
smix8
e037bd3bb6 Group NavigationAgent properties
Groups the ill-defined NavigationAgent properties between pathfinding and avoidance to make it more clear which property affects what.

(cherry picked from commit dde09be302afa08f5744533e82247bb49eff1f83)
2022-07-29 16:30:15 +02:00
6101beb960 Ported: Add NavigationAgent desired path distance - smix8
88e42b2915
2022-07-29 11:36:09 +02:00
2e0589f63a Ported: [3.5] Add NavigationAgent2D/3D set_navigation_map() function
Add NavigationAgent2D/3D set_navigation_map() function. Also fixes some bugs from leftover code before the backport update.
- smix8
c6f9627c74
2022-07-29 10:34:10 +02:00
bb5acfd745 Ported: [3.5] Update NavigationServer backport
Backports features and bugfixes from current Godot 4.0 to 3.5 and brings functions and codebase of both version largely in sync to make tutorials more compatible and future backports easier.
- smix8
8bd7c6188b
2022-07-28 22:34:28 +02:00
lawnjelly
48c1a1ae34 VisibilityNotifier - add max_distance feature
Enables turning off objects by distance to the camera in addition to testing whether they are in the view frustum.
2022-07-28 14:59:45 +02:00
smix8
4409bae4dc Add NavigationMesh debug when navmesh is added later through scripts
Add NavigationMesh debug when navmesh is added later through scripts

(cherry picked from commit b6eff47bac0a2745da6e3aa95ffa340eb71c7248)
2022-07-28 14:43:28 +02:00
lawnjelly
693c503213 Optimized Mesh Merging
Changes from PoolVector to LocalVector and pre-reserving vectors rather than push_back.
2022-07-28 13:46:56 +02:00
d161a30a4b Ported: Backport TextMesh and expose dynamic font vector outlines - bruvzg
d502bd4847
2022-07-28 00:01:20 +02:00
7fd0b29642 Ported: Backport Label3D node implementation and Sprite*3D material render priority. - bruvzg
dc6d8d6098
2022-07-27 23:40:35 +02:00
smix8
eaf28297ec Process NavigationAgent2D/3D avoidance on demand only
Changes NavigationAgent avoidance callback to a toggle that is disabled by default.
Also fixes a few missing descriptions / wrong warnings.

(cherry picked from commit 7f3688603cb3662e425cb7a1dce15459162c1dc6)
2022-07-27 23:13:40 +02:00
60b854d657 Ported: Make Navigation Agents and Obstacles respect parent process mode
Temporarily removes agent from navigation map when parent node cannot process due to SceneTree pause and process_mode property. Normal process_mode does not work as other agents would still avoid the paused agents because they were still active on the navigation map and the rvo world. Also fixes potential crash when region_get_map or agent_get_map is called while no map is set.
- smix8
88acb5b798
2022-07-27 20:07:55 +02:00
ad080c7017 Ported: Disable threaded NavigationMesh bake on unsupported OS. Automatically disables threaded NavigationMesh bake when OS does not support threads. - smix8
c3b39ca1e9
2022-07-27 18:51:18 +02:00
smix8
4a5982b9e1 Expose NavigationObstacle2D/3D get_rid() and add config warning
Exposes get_rid() function for scripting.
Adds configuration warning when obstacle is used with not intended static body parent.

(cherry picked from commit 001d89223f1377717d2b3d5ec453ff8dd3604182)
2022-07-27 18:49:00 +02:00
smix8
96b8c4d323 Fix NavigationObstacle2D/3D get_global_transform() error
Fixes NavigationObstacle2D/3D reporting a 'get_global_transform: Condition "!is_inside_tree()" error when estimating the agent radius.

The collisionshapes that are lower in the SceneTree order than the obstacle node are not loaded in the SceneTree yet so the global_transform function fails.

Also adds warning message when this happens.

(cherry picked from commit cc707412e909f117ad53ebe53e19bad43acf086a)
2022-07-27 18:48:43 +02:00
75606b352f Ported: Physics Interpolation - Reset on adding child to SceneTree. For convenience, branches added to the SceneTree now have physics interpolation reset after the first update of the transform to the VisualServer. - lawnjelly
328866ee6a
2022-07-27 17:51:39 +02:00
285c02bf76 Ported: Add autocompletion for AnimatedSprite.play() - timothyqiu
0f7f3d08ba
2022-07-27 14:23:27 +02:00
Pawel Lampe
106c45519b Add ability to bake_navigation_mesh off thread.
This feature makes it possible to workaround problems such as:
 - long baking time due to heavy synchronization when parsing geometry
   from mesh instances
 - crash when freeing `NavigationMeshInstance` while baking
 - errors when actively baking node tree is being detached from the
   scene tree
2022-07-27 14:14:50 +02:00
smix8
1317f7000a Add get_region_rid() to NavigationPolygonInstance and NavigationMeshInstance
Add get_region_rid() to NavigationPolygonInstance and NavigationMeshInstance
2022-07-27 13:54:43 +02:00
lawnjelly
3a191189ca Physics interpolation - fix streaking when unhiding nodes
The data flow to the VisualServer of current and previous transforms is essential for allowing correct interpolation. An optimization was present that disabled sending transforms when nodes were hidden, however this meant that when unhidden, nodes would interpolate incorrectly from the last transform received when hiding, rather than the up to date previous transform.

This PR disables the optimization and sends always sends transforms when a node is interpolated.
2022-07-27 13:06:20 +02:00
lawnjelly
4d6dda4df0 Fix CPUParticles emission updating using physics interpolation
When switching emission on and off, processing was always being switched on and off using internal_process, which was incorrect for using physics interpolation (where physics_process is the relevant one).

This PR correctly updates the process mode according to whether physics interpolation is being used.
2022-07-26 15:03:37 +02:00
8275f6b161 Ported: Add missing argument names in bindings - akien-mga
21c3048397
2022-07-25 23:51:34 +02:00
Hugo Locurcio
371b5513d3 Allow size values as low as 0.001 in Camera's orthogonal/frustum mode
This allows for lower field of view (or higher zoom) in orthogonal
and frustum camera modes.

The property hint also allows setting the size with greater precision.
2022-07-25 18:19:48 +02:00
Pedro J. Estébanez
ff5bae8d0e Fix crash when passing null to AudioStreamPlayer::set_stream() 2022-07-25 18:09:39 +02:00
Ellen Poe
94c765d065 instance audio streams before AudioServer::lock call 2022-07-25 17:58:48 +02:00
fabriceci
75a882d02e Fix wrong collision reported on move_and_collide 2022-07-25 17:31:13 +02:00
accd8458c8 Backported: Rename iterations_per_second to physics_ticks_per_second - Calinou - 937c1a716c 2022-03-24 11:10:56 +01:00
32f148ac0c Mass replaced godot to pandemonium. 2022-03-23 20:46:05 +01:00
c9b612f012 Added StringName as a variant type, with eventually the help of 3c0059650d . 2022-03-21 21:29:06 +01:00
5ab825ddf8 Backported: Bind mesh merging functionality in MeshInstance. The portal system introduced basic mesh merging functionality, this has wide ranging uses outside of the portal system.
For this reason, this PR binds the mesh merging functionality.
It also slightly modifies the calling from RoomManager to use a Vector of Node *, in order to allow binding of the function. - lawnjelly - cf1b3fdd55
2022-03-20 20:50:58 +01:00
34c3176c39 Fix skinning by default in MeshInstance even if the mesh is merged. 2022-03-20 14:13:44 +01:00
4d7df62b8e Clang format all files. 2022-03-18 19:00:13 +01:00
8fbdcd18f9 Same change to classes under scene. 2022-03-17 22:57:56 +01:00
678ee45c4f Move back shape's include to the header in collision object. 2022-03-17 21:02:40 +01:00
44bd2e0119 Added destructors to physics bodies to hopefully fix failing compile on some platforms. 2022-03-17 20:00:20 +01:00
3965d70ac5 Moved more includes to cpp files. 2022-03-17 19:35:23 +01:00
84d139213d Moved more includes to cpp files. 2022-03-17 10:39:38 +01:00
052027dce4 Moved more includes to cpp files. 2022-03-17 10:26:23 +01:00
6bae38ca23 Moved more includes to cpp files. 2022-03-17 09:31:00 +01:00
c621049e61 Moved more includes to cpp files. 2022-03-17 09:07:18 +01:00