Commit Graph

2181 Commits

Author SHA1 Message Date
Silc Renew dde235ad82 add position track normalization & post process key value for retarget 2022-07-26 18:48:08 +09:00
Hugo Locurcio cac2033c02
Fix missing Distance Fade category in OmniLight3D/SpotLight3D inspector 2022-07-25 19:11:24 +02:00
Yuri Sizov 197d2ff790 Group properties of Generic6DOFJoint slightly better 2022-07-25 18:07:55 +03:00
Juan Linietsky c7255388e1 Remove ThreadWorkPool, replace by WorkerThreadPool
The former needs to be allocated once per usage. The later is shared for all threads, which is more efficient.
It can also be better debugged.
2022-07-25 15:39:50 +02:00
Rémi Verschelde 90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
Rémi Verschelde 3084a48ace
Merge pull request #63219 from reduz/implement-vector4-projection 2022-07-25 11:13:27 +02:00
reduz 455c06ecd4 Implement Vector4, Vector4i, Projection
Implement built-in classes Vector4, Vector4i and Projection.

* Two versions of Vector4 (float and integer).
* A Projection class, which is a 4x4 matrix specialized in projection types.

These types have been requested for a long time, but given they were very corner case they were not added before.
Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity.

**Q**: Why Projection and not Matrix4?
**A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
2022-07-23 14:00:01 +02:00
reduz d1ddee2258 Implement BPM support
Based on #62896, only implements the BPM support part.

* Implements BPM support in the AudioStreamOGG/MP3 importers.
* Can select BPM/Bar Size and total beats in a song file, as well as edit looping points.
* Looping is now BPM aware
* Added a special importer UI for configuring this.
* Added a special preview showing the audio waveform as well as the playback position in the resource picker.
* Renamed `AudioStream::instance` to `instantiate` for correctness.
2022-07-23 07:31:17 +02:00
FireForge 84431bd782 Use integer types in Image and ImageTexture methods
- Image.blit_rect()
- Image.blit_rect_mask()
- Image.blend_rect()
- Image.blend_rect_mask()
- Image.fill_rect()
- Image.get_used_rect()
- Image.get_rect()
- ImageTexture.set_size_override()
2022-07-18 19:43:32 -05:00
Rémi Verschelde 73f47921ea
Merge pull request #61590 from Haydoggo/path-follow-fix 2022-07-18 09:36:02 +02:00
Silc Renew f3af3aedfe add rest fixer to importer retarget 2022-07-16 19:53:11 +09:00
Fabian Keller 2bf9e6090c rename translate(d) to translate(d)_local in Transform 2D/3D 2022-07-16 11:47:54 +02:00
bruvzg cbe3a2dcb7
Use BitField hint for the TextServer enums. Add missing parts for BitField support to the GDextension API. 2022-07-15 08:49:50 +03:00
Hayden Leete fded50fced prevent crash on NaN offset in path_follower 2d and 3d 2022-07-14 14:15:02 +12:00
kobewi 2f777b9a1e Remove unused hints 2022-07-12 00:44:13 +02:00
bruvzg 344ba0ffaf
Refactor Font configuration and import UI, and Font resources. 2022-07-06 14:12:36 +03:00
Hugo Locurcio aa9403bcda
Clamp VoxelGI extents to reasonable values to avoid breaking baking
This also prevents crashes when resizing a VoxelGI's extents to 0
on any axis.
2022-07-05 18:32:44 +02:00
bruvzg 329923c6ac
Use custom key structs, instead of raw hashes for the Label3D and TextMesh, to avoid potential hash collisions. 2022-07-04 09:47:49 +03:00
Rémi Verschelde 41fdddb1f8
Merge pull request #62677 from akien-mga/particles-fix-warnings-update 2022-07-03 18:42:51 +02:00
Rémi Verschelde 5d9e56ecec Particles: Fix missing configuration warning updates
Fixes #33488.
2022-07-03 16:04:20 +02:00
kleonc 73ecd71b7d Fix no `hint_string` for `frame` property in `AnimatedSprite`s 2022-07-03 15:31:43 +02:00
Rémi Verschelde a2459c7d35
Merge pull request #61610 from TokageItLab/importer-retarget-registered-gdhumanoid 2022-07-02 00:17:21 +02:00
Rémi Verschelde 692c2d9215
Merge pull request #50755 from foxydevloper/add-global-position-and-global-rotation
Add global_position and global_rotation to Node3D
2022-07-01 21:50:42 +02:00
Hugo Locurcio e7315fcc45
Clamp Decal's upper/lower fade to positive values
Negative easing values result in broken rendering.
2022-07-01 19:23:57 +02:00
foxydevloper 8b16a4131f Add global_position and global_rotation to Node3D 2022-07-01 10:27:07 -04:00
Hugo Locurcio 32973094f5
Add a Bake Mask property to GPUParticlesCollisionSDF3D
This allows not accounting for certain visible meshes during baking
(such as foliage and thin fixtures).

This also adds a clarification about transparent materials always
being excluded in the OccluderInstance3D documentation.
2022-06-30 23:12:40 +02:00
Silc Renew dc43cfc830 implement bone renamer in importer 2022-07-01 03:55:28 +09:00
Rémi Verschelde 8a00d7c847
Merge pull request #62527 from smix8/navigation_agent_property_groups
Group NavigationAgent properties
2022-06-30 01:24:05 +02:00
Rémi Verschelde a7e589df38
Merge pull request #62084 from smix8/path_debug_options_4.x
Add Path2D/3D debug options
2022-06-29 20:36:43 +02:00
smix8 dde09be302 Group NavigationAgent properties
Groups the ill-defined NavigationAgent properties between pathfinding and avoidance to make it more clear which property affects what.
2022-06-29 18:42:51 +02:00
Rémi Verschelde d53f1fb388
Merge pull request #60935 from Calinou/geometryinstance3d-gi-mode-default-static
Use the Static global illumination mode in GeometryInstance3D by default
2022-06-28 14:40:53 +02:00
Rémi Verschelde c79aad0257
Merge pull request #62396 from reduz/fix-local-vector-transitions-in-node3d
Fix VECTOR/LOCAL transitions in Node3D
2022-06-27 21:45:02 +02:00
reduz 7acf697479 Fix VECTOR/LOCAL transitions in Node3D
Fixes #62225, supersedes #62227
2022-06-27 13:45:35 +02:00
JFonS 12459ab334
Merge pull request #62124 from holgac/bugfix-62096
Fixes #62096: LightmapGIData::_get_light_textures_data crash on empty image
2022-06-26 12:30:19 +02:00
Rémi Verschelde dd3de622d8
Merge pull request #62372 from MarcusElg/nosliderrename
Rename @export_range's noslider option to no_slider
2022-06-25 14:03:44 +02:00
Juan Linietsky 14f9fbfed8
Revert "Refactored `rotation_mode` in Node3D" 2022-06-25 09:44:25 +02:00
Silc Renew 4880b86f07 fix set_position() 2022-06-25 06:17:41 +09:00
Priyansh Rathi e995764e50
add support for soft shadows to the lightmapper 2022-06-24 21:50:13 +05:30
Marcus Elg 6c1ac9f3be Rename export_range's noslider option to no_slider 2022-06-24 10:45:34 +02:00
Rémi Verschelde 49d8748848
Merge pull request #62227 from TokageItLab/fix-rotation-mode-node3d 2022-06-24 10:07:21 +02:00
Hugo Locurcio 610363add0
Use the Static global illumination mode in GeometryInstance3D by default
This makes VoxelGI and SDFGI work out of the box with primitive meshes,
loaded OBJ meshes and CSG nodes.
2022-06-23 22:34:23 +02:00
Silc Renew 51c884f7ac fix method when rotation_mode changed 2022-06-23 16:55:16 +09:00
reduz d69e3791bf Fix editor-only visibility for lights
* Update visibility again for editor-only lights if owner changes.

Fixes #26399, supersedes #52327
2022-06-23 08:19:18 +02:00
smix8 e12e239ab4 Add Path2D/3D debug options
Add Path2D/3D debug options.
2022-06-20 17:32:05 +02:00
Rémi Verschelde 21b0c7fc22
Merge pull request #62214 from smix8/navigation_layer_bitmask_helpers_4.x 2022-06-20 15:13:33 +02:00
Rémi Verschelde 3d49e89b9b
Merge pull request #62181 from smix8/navigation_navagent_pathpoint_dist_4.x 2022-06-20 14:54:16 +02:00
reduz 141c375581 Clean up Hash Functions
Clean up and do fixes to hash functions and newly introduced murmur3 hashes in #61934
* Clean up usage of murmur3
* Fixed usages of binary murmur3 on floats (this is invalid)
* Changed DJB2 to use xor (which seems to be better)
2022-06-20 12:54:19 +02:00
smix8 55923ade68 Add navigation layer bitmask helper functions
Adds helper functions to work with the navigation layer bitmask.
2022-06-19 13:47:19 +02:00
baihan da7eb96804 Fix physical bone is not animated in running project. 2022-06-19 09:46:34 +08:00
smix8 07740302f3 Add NavigationAgent desired path distance
Add NavigationAgent desired path distance
2022-06-18 19:11:49 +02:00
Hugo Locurcio 5b72ccc254
Fix Light3D `angular_distance` property hint being in radians
The unit is internally stored as degrees and is treated as such,
so it should be displayed as-is in the inspector.
2022-06-17 20:00:54 +02:00
Ellen Poe d384d84f45 Audio: Expose 2D/3D panning strength parameters 2022-06-17 13:08:48 +02:00
holgac a5c01dc25a Fixes #62096: LightmapGIData::_get_light_textures_data crash on empty image
The program crashes when trying to determine slice width/height if the
light texture is empty. This fix just returns an empty array, as if the
light texture does not exist.
2022-06-17 02:27:08 +02:00
bruvzg b5c96df277
Move duplicate AutoWrap, Overrun and VisibleChar behavior enums to the TextServer. 2022-06-16 16:49:37 +03:00
Rémi Verschelde 9ddf13e7ad
Merge pull request #60151 from Klowner/pathfollow3d-parallel-transport-improvement
PathFollow3D parallel transport frame reliability improvements
2022-06-15 23:54:00 +02:00
smix8 245da150e7 Streamline Navigation layer function names.
Streamline Navigation layer function names.
2022-06-15 00:18:48 +02:00
smix8 f10ff0efda Add NavigationAgent set_navigation_map() function
Add NavigationAgent set_navigation_map() and get_navigation_map() function.
2022-06-14 21:48:47 +02:00
Rémi Verschelde 111a3ca097
Merge pull request #59125 from KoBeWi/link_to_the_vector 2022-06-14 16:18:17 +02:00
Rémi Verschelde d845d690f2
Merge pull request #61861 from techiepriyansh/multi-image-atlases 2022-06-14 16:11:30 +02:00
kobewi 5553e27fe8 Add vector value linking
Co-authored-by: redlamp <244062+redlamp@users.noreply.github.com>
2022-06-14 14:58:44 +02:00
Priyansh Rathi d49c1cfc3e
save lightmap as multi-image atlas 2022-06-14 17:22:55 +05:30
Hugo Locurcio 0225c6d31a
Tweak Light3D property hints for greater flexibility
- Specular can now be set above 1.0.
- Blur can be set to 0 to disable shadow blurring entirely, which is useful
  on lights that have a non-zero size.
  - When shadow blurring is disabled, lights that have a non-zero size will
    not use PCSS-like soft shadows, speeding up shadow rendering
    considerably.
- Some property hints now allow more precise values.
2022-06-13 14:31:46 +02:00
FireForge 4678736a39 Add suffixes to all nodes and resources 2022-06-11 09:41:05 -05:00
Rémi Verschelde 5c3081dae2 SoftBody: Fix attachments property names after #61180
Fixes #61581.
2022-06-10 14:16:14 +02:00
smix8 cfdfd304f1 Add NavigationRegion costs for pathfinding
Add NavigationRegion costs for pathfinding.
2022-06-06 15:25:06 +02:00
Rémi Verschelde 93bbbf8947
Merge pull request #61625 from smix8/navigation_debugview_mesh_scripted_4.x 2022-06-02 18:24:30 +02:00
JFonS 8abace0f79
Merge pull request #60517 from Calinou/3d-editor-audiostreamplayer3d-add-gizmo 2022-06-02 12:11:06 +02:00
smix8 b6eff47bac Add NavigationMesh debug when navmesh is added later through scripts
Add NavigationMesh debug when navmesh is added later through scripts
2022-06-02 10:55:19 +02:00
smix8 56fe26b5e0 Fix NavigationAgent reparent issues
Fix NavigationAgent reparent issues
2022-06-01 06:45:12 +02:00
Hugo Locurcio 93933e4085
Add a gizmo to visualize AudioStreamPlayer3D's audible radius
The ring's color changes depending on the attenuation model chosen,
and whether Max Distance is capping the distance the sound can be
heard at.

Cold colors are used when the volume cap is a "soft" cap (the sound
can still be heard past the distance, but only faintly).

Warm colors are used when the volume cap is a "hard" cap (the sound
can't be heard past the distance at all).

White is used for linear fade performed when the attenuation model
is Disabled and Max Distance is greater than 0.

No ring is drawn when the attenuation model is Disabled and Max Distance
is equal to 0 (since the sound can be heard from anywhere).
2022-05-26 20:53:07 +02:00
Yuri Rubinsky 8f57d9519e Fix errors when materials attached to 3d object are not freed 2022-05-26 09:42:59 +03:00
Lyuma 1f02bc0e3e Only call _update_panning during _physics_process. 2022-05-25 14:14:22 -07:00
Hugo Locurcio e85459dcd1
Add Cone and Cylinder shapes to FogVolume
This complements the existing Ellipsoid and Box local fog shapes.

This can be used to represent a light cone coming from a SpotLight.
2022-05-25 12:35:53 +02:00
Rémi Verschelde d3268c51ad
Merge pull request #61311 from trollodel/fix_joint3d_warning_crash 2022-05-23 22:23:53 +02:00
bruvzg f9fbe92e8a
[Label3D, 4.x] Monitor default theme font changes, to prevent use of invalid materials. 2022-05-23 18:15:34 +03:00
trollodel 51b229bffa Fix Joint3D and Joint2D warning causing a crash 2022-05-23 12:21:13 +02:00
Rémi Verschelde a80793fcb8
Merge pull request #61235 from smix8/navigation_agent_avoidance_processing_4.x 2022-05-22 19:11:32 +02:00
Hugo Locurcio df9340d552
Tweak the GPUParticles3D Transform Align property hint for readability 2022-05-21 13:13:48 +02:00
smix8 7f3688603c 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.
2022-05-20 23:47:10 +02:00
reduz 45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
Aaron Franke 5dc3bfb80e
Use suffixes for units in nodes and resources 2022-05-19 14:34:27 -05:00
Rémi Verschelde ce069fbe99
Merge pull request #61128 from smix8/navigation_agent_process_mode_4.x 2022-05-19 15:24:34 +02:00
Aaron Record 900c676b02 Use range iterators for RBSet in most cases 2022-05-19 12:09:16 +02:00
Haoyu Qiu fc3b845c07 Add dedicated macros for property name extraction
* Replace case-by-case extraction with PNAME & GNAME
* Fix group handling when group hint begins with property name
* Exclude properties that are PROPERTY_USAGE_NO_EDITOR
* Extract missing ADD_ARRAY*, ADD_SUBGROUP* macros
2022-05-19 14:08:47 +08:00
Rémi Verschelde 03f240ba93
Merge pull request #60599 from rburing/rest_on_recovery_param 2022-05-18 17:36:24 +02:00
Ricardo Buring f072aa69a9 Add motion parameter to toggle whether recovery is reported as a collision
This makes the intent explicit in each use case.
2022-05-18 16:40:29 +02:00
kobewi 6b981bf12b Defer group calls in Node3D 2022-05-18 16:10:03 +02:00
smix8 6b51ab66d8 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.
2022-05-17 20:08:39 +02:00
Mark Riedesel 281cf5fb81 PathFollow3D parallel transport frame reliability improvements 2022-05-17 11:17:00 -04:00
Rémi Verschelde 7b571ab8f7
Merge pull request #60986 from fire-forge/capitalism 2022-05-16 13:49:14 +02:00
Rémi Verschelde f95b7412c7
Merge pull request #61057 from smix8/navigation_obstacle_transform_error_4.x 2022-05-16 13:47:28 +02:00
Rémi Verschelde 9ba0fac1ba
Merge pull request #61038 from smix8/navigation_obstacle_rid_config_warn_4.x 2022-05-16 13:47:20 +02:00
Rémi Verschelde 95da5436dc
Merge pull request #61032 from smix8/navigationmesh_bake_no_threads_4.x 2022-05-16 13:47:06 +02:00
reduz 746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
smix8 49c603e127 Disable threaded NavigationMesh bake on unsupported OS
Automatically disables threaded NavigationMesh bake when OS does not support threads.
2022-05-16 00:55:15 +02:00
smix8 cc707412e9 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.
2022-05-15 20:29:23 +02:00
smix8 001d89223f 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.
2022-05-15 01:03:22 +02:00
Hugo Locurcio 515676a7f5
Remove unused `GPUParticlesCollisionHeightField3D.follow_camera_push_ratio` property
- Rename setter/getter methods for consistency.
- Remove section in the inspector as there is now only 1 property
  within the section.
- Add performance hints to property hints.
2022-05-13 04:19:28 +02:00
FireForge 88a8038387 Capitalize/fix some property enum hints 2022-05-12 15:03:16 -05:00
Rémi Verschelde edf61c077c
Merge pull request #60917 from akien-mga/ci-emscripten-3.1.10 2022-05-10 15:08:32 +02:00
Rémi Verschelde b6983eeccf
Merge pull request #51591 from Calinou/call-group-default-immediate
Make `{call,set,notify}_group()` immediate by default
2022-05-10 14:52:23 +02:00
Rémi Verschelde d8935b27a9 Fix warnings found by Emscripten 3.1.10
Fix `-Wunused-but-set-variable`, `-Wunqualified-std-cast-call`, and
`-Wliteral-range` warnings.
2022-05-10 13:03:13 +02:00
Hugo Locurcio aabbb40009
Make `{call,set,notify}_group()` immediate by default
This results in less surprising behavior out of the box.

Internal usages were modified to keep the existing behavior
identical there.
2022-05-05 16:59:37 +02:00
Haoyu Qiu 312ec612c7 Add autocompletion for AnimatedSprite.play() 2022-05-05 14:36:35 +08:00
Pawel Lampe 88d3f14697 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-05-04 23:00:18 +02:00
Aaron Franke fa7a7795f0
Rename Basis get_axis to get_column, remove redundant methods 2022-05-03 09:37:47 -05:00
Rémi Verschelde 931838b330
Merge pull request #60627 from aaronfranke/rename-elements
Rename Transform2D and Basis `elements` to `columns` and `rows` respectively
2022-05-03 14:40:01 +02:00
Hugo Locurcio 180e5d3028
Remove `RES` and `REF` typedefs in favor of spelled out `Ref<>`
These typedefs don't save much typing compared to the full `Ref<Resource>`
and `Ref<RefCounted>`, yet they sometimes introduce confusion among
new contributors.
2022-05-03 01:43:50 +02:00
Rémi Verschelde c273ddc3ee Style: Partially apply clang-tidy's `cppcoreguidelines-pro-type-member-init`
Didn't commit all the changes where it wants to initialize a struct
with `{}`. Should be reviewed in a separate PR.

Option `IgnoreArrays` enabled for now to be conservative, can be
disabled to see if it proposes more useful changes.

Also fixed manually a handful of other missing initializations / moved
some from constructors.
2022-05-02 16:28:25 +02:00
Rémi Verschelde 4e06ce7840
Merge pull request #60655 from smix8/navigation_region_rid_4.x
Add get_region_rid() to NavigationRegion2D and NavigationRegion3D
2022-05-01 14:17:40 +02:00
bruvzg 0a0e94d996
Expose Label3D and Sprite*3D material render priority properties. 2022-04-30 15:09:30 +03:00
smix8 05d06b8957 Add get_region_rid() NavigationRegion2D and NavigationRegion3D
Add get_region_rid() to NavigationRegion2D and NavigationRegion3D
2022-04-30 13:27:30 +02:00
Rémi Verschelde a817bd96c0
Merge pull request #59297 from fabriceci/fix-jitter-2D-slight-slope 2022-04-29 15:33:45 +02:00
Aaron Franke 1bf94dff3a
Rename Basis "elements" to "rows" 2022-04-29 08:02:56 -05:00
bruvzg be2ee9d277
[Label3D] Add offset property. 2022-04-28 21:23:15 +03:00
Rémi Verschelde 212989d467
Merge pull request #59438 from fabriceci/fix-move-and-collide-reported-collisions
Fix wrong collision reported on move_and_collide
2022-04-28 18:47:22 +02:00
Markus Sauermann a793960a10 Fix cppcheck const parameters
Convert method signature parameters to const where it is possible

# Conflicts:
#	drivers/gles3/rasterizer_canvas_gles3.cpp
#	drivers/gles3/rasterizer_canvas_gles3.h
#	editor/plugins/animation_state_machine_editor.cpp
#	editor/plugins/animation_state_machine_editor.h
2022-04-28 11:35:39 +02:00
Rémi Verschelde 1737494479
Merge pull request #60321 from rburing/pathfollow_offset_yes_a_number 2022-04-27 13:27:19 +02:00
Rémi Verschelde 2890ac7100
Merge pull request #60319 from TokageItLab/implement-global-rest 2022-04-27 11:06:42 +02:00
Rémi Verschelde 8dfa12cae7
Merge pull request #59979 from bruvzg/cpp_check2 2022-04-27 10:08:26 +02:00
Rémi Verschelde 02bb8e948f
Merge pull request #60261 from fire-forge/theme-prop-renames 2022-04-25 16:20:19 +02:00
FireForge 3073b85de9 Rename theme properties to include underscores
- check_vadjust -> check_v_adjust
- close_h_ofs -> close_h_offset
- close_v_ofs -> close_v_offset
- commentfocus -> comment_focus
- hseparation -> h_separation
- ofs -> offset
- selectedframe -> selected_frame
- state_machine_selectedframe -> state_machine_selected_frame
- table_hseparation -> table_h_separation
- table_vseparation -> table_v_separation
- vseparation -> v_separation
2022-04-23 11:16:18 -05:00
bruvzg be611c1c05
Implement Label3D node.
Add "generate_mipmap" font import option.
Add some missing features to the Sprite3D.
Move BiDi override code from Control to TextServer.
Add functions to access TextServer font cache textures.
Add MSDF related flags and shader to the standard material.
Change standard material cache to use HashMap instead of Vector.
2022-04-22 12:08:46 +03:00
bruvzg de4c97758a
Fix more issues found by cppcheck. 2022-04-20 10:34:00 +03:00
Silc 'Tokage' Renew 4d4ffa3a2c Implement global rest 2022-04-18 02:11:19 +09:00
Ricardo Buring eb9157df23 PathFollow2D and PathFollow3D: don't set offset to NaN 2022-04-17 17:26:05 +02:00
Rémi Verschelde d27f60f0e8
Merge pull request #60199 from akien-mga/color-clarify-srgb-linear-conversions 2022-04-13 13:41:21 +02:00
Rémi Verschelde 9b89c07075
Merge pull request #60034 from Calinou/camera-allow-lower-size 2022-04-13 12:48:08 +02:00
Rémi Verschelde 46ef52162e Color: Rename `to_srgb`/`to_linear` to include base color space
This helps reduce confusion around sRGB <> Linear conversions by making
both input and output color spaces explicit.
2022-04-13 11:45:52 +02:00
SaracenOne f8cc2e054d Ensure gizmos are added to newly created Node3D-derivatives and silence error for attempting to create gizmos twice 2022-04-13 04:39:01 +01:00
bruvzg 9381acb6a4
Make FileAccess and DirAccess classes reference counted. 2022-04-11 13:28:51 +03:00
Hugo Locurcio 2252663163
Allow `size` values as low as `0.001` in Camera3D'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-04-08 18:49:45 +02:00
Rémi Verschelde f8ab79e68a Zero initialize all pointer class and struct members
This prevents the pitfall of UB when checking if they have been
assigned something valid by comparing to nullptr.
2022-04-04 19:49:50 +02:00
Rémi Verschelde 26048c805b
Merge pull request #59331 from bartekd97/navigation-agent-layers 2022-04-01 13:35:51 +02:00
Rémi Verschelde 5149db8d85
Merge pull request #59644 from akien-mga/template-no-editor-dep 2022-03-28 23:35:51 +02:00
Rémi Verschelde 324215c485
Merge pull request #59525 from fire-forge/fix-group-names 2022-03-28 21:44:35 +02:00
Rémi Verschelde 45ec0e31c3 Remove last editor code dependencies in template build
SConstruct change also makes it possible to outright delete the `editor`
folder in a `tools=no` build, which we use in CI to ensure no invalid
cross-dependencies are added.
2022-03-28 21:13:01 +02:00
FireForge 88b09694e7 Fix inspector group name capitalization 2022-03-28 14:02:06 -05:00
Rémi Verschelde 7119d355eb String: Remove TTR and DTR defines in non-tools build
This ensures we don't use TTR in runtime code, as it's specifically meant
to source translations for the editor.
2022-03-28 20:26:35 +02:00
Rémi Verschelde 5371009d8e Object: Remove unused category boilerplate
We might want to re-add something like this if/when we find a good use case
for it and do the effort to categorize all objects in the API properly.

Until then, it's better to remove that boilerplate since it's not needed.

Closes #18711.
2022-03-26 15:46:01 +01:00
fabriceci e2812fcb0f When only a recovery occurs, don't report a collision on move_and_collide 2022-03-23 10:24:35 +01:00
fabriceci 528dfbf63e Fix 2D jitter on slight slope 2022-03-21 09:08:52 +01:00
BARTEK-PC\Bartek 4972f1b864 Expose navigable layers for NavigationAgent2D/3D 2022-03-20 15:04:56 +01:00
Rémi Verschelde acc9b5b390
Merge pull request #55399 from RPicster/particlesmaterial-sphere-emittershape
ParticleMaterial: Sphere emission shape emitting from the volume.
2022-03-18 08:21:59 +01:00
Hugo Locurcio c45d2c242b Replace DirectionalLight3D's `use_in_sky_only` with `sky_mode` enum
3 options are available:

- Light and Sky (default)
- Light Only (new)
- Sky Only (equivalent to `use_in_sky_only = true`)

Co-authored by: clayjohn <claynjohn@gmail.com>
2022-03-17 14:00:02 -07:00
reduz 8b547331be Create GDExtension clases for PhysicsServer3D
* Allows creating a GDExtension based 3D Physics Server (for Bullet, PhysX, etc. support)
* Some changes on native struct binding for PhysicsServer

This allows a 3D Physics server created entirely from GDExtension. Once it works, the idea is to port the 2D one to it.
2022-03-15 18:39:31 +01:00
Rémi Verschelde 51bbcbdec2
Merge pull request #45263 from KoBeWi/😕 2022-03-15 13:18:27 +01:00
reduz 6f51eca1e3 Discern between virtual and abstract class bindings
* Previous "virtual" classes (which can't be instantiated) are not corretly named "abstract".
* Added a new "virtual" category for classes, they can't be instantiated from the editor, but can be inherited from script and extensions.
* Converted a large amount of classes from "abstract" to "virtual" where it makes sense.

Most classes that make sense have been converted. Missing:

* Physics servers
* VideoStream
* Script* classes.

which will go in a separate PR due to the complexity involved.
2022-03-10 12:28:11 +01:00
kobewi 39d429e497 Change some math macros to constexpr
Changes `MAX`, `MIN`, `ABS`, `CLAMP` and `SIGN`.
2022-03-09 16:24:32 +01:00
fabriceci 7f47889a5f Avoid directional correction when the motion is downward 2022-03-09 13:45:42 +01:00
Rémi Verschelde 1561737055
Merge pull request #49447 from Calinou/remove-shadow-color-property
Remove unused `shadow_color` property from Light3D
2022-03-08 07:48:05 +01:00
reduz ccd4cdfd8b Rename StreamTexture* to CompressedTexture*
* Its not and will not be used for streaming.
* Streaming will be implemented in 4.1 and it will work different.
* It makes more sense to be called CompressedTexture since it imports and compresses texture files.
2022-03-05 16:43:38 +01:00
Hugo Locurcio aea104deb7
Remove unused `shadow_color` property from Light3D
This shadow color property was no longer effective since the shaders
were optimized to improve occupancy.
2022-03-04 23:12:18 +01:00
Rémi Verschelde 9c6b6ffe13
Merge pull request #58717 from CrezyDud/master 2022-03-04 18:04:19 +01:00
Rémi Verschelde 3078b92dff
Merge pull request #58512 from Calinou/light3d-add-distance-fade 2022-03-04 12:26:29 +01:00
MrSwedish 97c5fd17a7 Add linear_velocity and angular_velocity to PhysicalBone3D 2022-03-03 20:34:29 +01:00
Ricardo Buring cb5bc58e81 Joint2D and Joint3D: make set_exclude_nodes_from_collision respect signals 2022-02-28 22:25:45 +01:00
Ricardo Buring 9e100c3e7a Joint2D and Joint3D: update joint on NOTIFICATION_POST_ENTER_TREE
This allows reparenting, etc.
2022-02-28 22:21:32 +01:00
Rémi Verschelde f968c11b86
Merge pull request #58596 from rburing/joints_disconnect_connected_signals
`Joint2D` and `Joint3D`: disconnect only connected signals
2022-02-28 11:00:14 +01:00
Haoyu Qiu 3a439a9c03 Fix AnimatedSprite infinite loop 2022-02-28 16:00:45 +08:00
Ricardo Buring 184105e753 Joint2D and Joint3D: disconnect only connected signals 2022-02-27 16:55:57 +01:00
Hugo Locurcio b1a295b739
Implement distance fade properties in OmniLight3D and SpotLight3D
This can be used to fade lights and their shadows in the distance,
similar to Decal nodes. This can bring significant performance
improvements, especially for lights with shadows enabled and when
using higher-than-default shadow quality settings.

While lights can be smoothly faded out over distance, shadows are
currently "all or nothing" since per-light shadow color is no longer
customizable in the Vulkan renderer. This may result in noticeable
pop-in when leaving the shadow cutoff distance, but depending on the
scene, it may not always be that noticeable.
2022-02-25 15:17:35 +01:00
Bastiaan Olij a78a9fee71 Implementing OpenXR driver 2022-02-23 12:02:24 +01:00
Chris Bradfield 849d34ba8e Rename motion_velocity to velocity 2022-02-22 23:31:33 -08:00
Rémi Verschelde b8b4580448
Style: Cleanup single-line blocks, semicolons, dead code
Remove currently unused implementation of TextureBasisU, could be re-added
later on if needed and ported.
2022-02-16 14:06:29 +01:00
Rémi Verschelde 0f5455230c
Use `switch` consistently in `_notification` (`scene` folder) 2022-02-15 18:44:55 +01:00
Hendrik Brucker b396fd4eef Improve compilation speed (forward declarations/includes cleanup) 2022-02-12 02:46:22 +01:00
Rémi Verschelde 1bdb82c64e
Fix typos with codespell
Using codespell 2.2-dev from current git.

Added `misc/scripts/codespell.sh` to make it easier to run it once in a
while and update the skip and ignore lists.
2022-02-10 12:30:19 +01:00
Rémi Verschelde 25d4c14fef
Merge pull request #57627 from JFonS/occluder_improvements 2022-02-08 23:23:50 +01:00
Haoyu Qiu bbcd9c5b97 Fix RayCast{2,3}D.clear_exceptions clears parent 2022-02-08 16:31:07 +08:00
jfons dd970482c5 Improvements and fixes to occluders
Improvements:
* Occluder3D is now an abstract type inherited by: ArrayOccluder3D, QuadOccluder3D, BoxOccluder3D, SphereOccluder3D and PolygonOccluder3D. ArrayOccluder3D serves the same purpose as the old Occluder3D (triangle mesh occluder) while the rest are primitives that can be used to manually place simple occluders.
* Occluder baking can now apply simplification. The "bake_simplification_distance" property can be used to set a world-space distance as the desired maximum error, set to 0.1 by default.
* Occluders can now be generated on import. Using the "occ" and "occonly" keywords (similar to "col" and "colonly" for colliders) or by enabling on MeshInstance3Ds in the scene's import window.

Fixes:
* Fixed saving of occluder files after bake.
* Fixed a small error where occluders didn't correctly update in the rendering server.

Bonus content:
* Generalized "CollisionPolygon3DEditor" so it can also be used to edit Resources. Renamed it to "Polygon3DEditor" since it was already being used by other things, not just colliders.
* Fixed a small bug in "EditorPropertyArray" where a call to "remove" was left after the "remove_at" rename.
2022-02-07 13:04:51 +01:00
jmb462 1ce81dc5f2 Add missing SNAME macro optimization in some function calls 2022-02-06 15:54:04 +01:00
Anilforextra adbe948bda String: Add contains(). 2022-02-04 01:28:02 +05:45
Rémi Verschelde f1bff648f2
Merge pull request #57355 from akien-mga/method-bindings-clearer-types 2022-02-01 14:24:35 +01:00
Nathan Franke 8a0a3accee
simplify formatting scripts, add a clang-tidy script, and run clang-tidy 2022-01-29 04:41:03 -06:00
Rémi Verschelde 1c6f0aa3a0
Merge pull request #56601 from Scony/fix-navigation-obstacle-errors 2022-01-28 23:25:55 +01:00
Rémi Verschelde 7072b359b4
Improve some method bindings to use specific `Object` subtypes
This was made possible by changes to `VariantCaster` which now make
it possible to pass any `Object`-derived type as pointer.
2022-01-28 15:07:22 +01:00
fabriceci cc3c4d6323 Revert #53174 (applying the delta in move and collide), rename rec_vel to distance and improve the doc description 2022-01-26 23:09:30 +01:00
Haoyu Qiu a775744742 Store ObjectID instead of raw pointer for Shape Owners 2022-01-25 17:16:06 +08:00
Rémi Verschelde 2255777fb9
Merge pull request #57144 from AnilBK/fix-pos-dragging 2022-01-24 21:32:38 +01:00
Anilforextra 80187b77a9 Node2D/Node3D: Fix Undraggable Position Property. 2022-01-25 00:52:11 +05:45
fabriceci 856142a97d rename free mode to floating mode 2022-01-24 15:19:43 +01:00
Rémi Verschelde 7e3b92f81f
Merge pull request #55360 from Calinou/rename-bake-mode-properties 2022-01-20 17:35:32 +01:00
Rémi Verschelde dbab0a9487
Merge pull request #56740 from AnilBK/camera-pre-allocate 2022-01-13 11:13:31 +01:00
Anilforextra 8a9c9a67ef CameraMatrix: Pre-allocate Vector in get_projection_planes(). 2022-01-13 10:14:59 +05:45
Rémi Verschelde 929f483ca0
Merge pull request #55446 from Calinou/spritebase3d-remove-opacity 2022-01-12 16:49:57 +01:00
Rémi Verschelde 585231a172
Merge pull request #56492 from akien-mga/remove-author-docstrings 2022-01-12 15:24:17 +01:00
Arnav Vijaywargiya 0c46f73b5e Fixed incorrect property types 2022-01-11 17:17:11 +05:30
Anilforextra c9f5d88f3a Use fill() to fill an entire image instead of setting pixels individually. 2022-01-08 17:43:15 +05:45
Pawel Lampe 9bda2d5859 Fix NavigationObstacle errors
* `NavigationObstacle2D` premature radius estimation (before entering the tree)
* `NavigationObstacle3D` premature radius estimation (before entering the tree)
2022-01-07 19:55:22 +01:00
SaracenOne 726fbb821b Fix incorrect default transform values on foreign 3D nodes 2022-01-06 15:52:22 +00:00
Rémi Verschelde 6af77c7b09
Merge pull request #53684 from TokageItLab/orthogonal-mode 2022-01-05 16:05:40 +01:00
Fernando Cosentino ca79373d13
Added material_overlay property to MeshInstance3D
Applying overlay materials into multi-surface meshes currently
requires adding a next pass material to all the surfaces, which
might be cumbersome when the material is to be applied to a range
of different geometries. This also makes it not trivial to use
AnimationPlayer to control the material in case of visual effects.
The material_override property is not an option as it works
replacing the active material for the surfaces, not adding a new pass.

This commit adds the material_overlay property to GeometryInstance3D
(and therefore MeshInstance3D), having the same reach as
material_override (that is, all surfaces) but adding a new material
pass on top of the active materials, instead of replacing them.
2022-01-05 11:47:51 +01:00
Rémi Verschelde 026de65e5f
Merge pull request #56491 from hinlopen/n3d-minor-improvement
Minor code improvements in Node3D
2022-01-05 08:49:11 +01:00
Stijn 805155e2f6 Minor code improvements in Node3D. Refactor Node3D::show/hide/set_visible to a shared implementation. 2022-01-04 23:22:49 +01:00
Rémi Verschelde ba2bdc478b
Style: Remove inconsistently used `@author` docstrings
Each file in Godot has had multiple contributors who co-authored it over the
years, and the information of who was the original person to create that file
is not very relevant, especially when used so inconsistently.

`git blame` is a much better way to know who initially authored or later
modified a given chunk of code, and most IDEs now have good integration to
show this information.
2022-01-04 20:42:50 +01:00
Rémi Verschelde eab30316ee
Merge pull request #55332 from Calinou/voxelgidata-tweak-default-dynamic-range
Decrease the default dynamic range in VoxelGIData to 2.0
2022-01-04 17:18:28 +01:00
Rémi Verschelde 851fb16350
Merge pull request #56305 from Calinou/rename-lod-threshold 2022-01-04 15:28:06 +01:00
JFonS 6c25d05f70
Merge pull request #55370 from Calinou/geometryinstance3d-lod-fade-node-configuration-warning
Emit node configuration warnings for GeometryInstance3D distance fade
2022-01-04 13:58:32 +01:00
Rémi Verschelde 2536d6ca20
Merge pull request #55331 from Calinou/voxelgidata-fix-dynamic-range-property 2022-01-04 09:59:26 +01:00
Rémi Verschelde fe52458154
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
Hugo Locurcio df09bc38cb
Rename Lod Threshold to Mesh Lod Threshold
This makes it more obvious that the setting only affects mesh LOD,
not manual (H)LOD achieved using visibility ranges.
2021-12-29 00:11:50 +01:00
Silc 'Tokage' Renew 61759da5b3 Fix some gizmo behavior to make more consistent 2021-12-25 03:24:04 +09:00
Hugo Locurcio e962900f23
Rename and reorder bake mode properties for consistency
The order now goes from least to most computationally expensive:

- Disabled
- Static
- Dynamic
2021-12-14 12:01:12 +01:00
William Deurwaarder 742f072c59 GPULightMapper: convert colors of lights to linear
To make baked colors of lights equal to dynamic colors of lights they have to be
converted to linear as the colors of dynamic lights are converted to linear by
RendererSceneRenderRD.
2021-12-11 13:01:07 +01:00
PouleyKetchoupp 940f3fde5c Improve RigidDynamicBody force and torque API
Makes the API for forces and impulses more flexible, easier to
understand and harmonized between 2D and 3D.

Rigid bodies now have 3 sets of methods for forces and impulses:
-apply_impulse() for impulses (one-shot and time independent)
-apply_force() for forces (time dependent) applied for the current step
-add_constant_force() for forces that keeps being applied each step

Also updated the documentation to clarify the different methods and
parameters in rigid body nodes, body direct state and physics servers.
2021-12-10 15:55:40 -07:00
Steve Szilágyi 0c352407d8 VehicleWheel can now return the surface it's colliding with.
Fixed PR issues.

Update vehicle_body_3d.cpp

Apply suggestions from code review

Co-authored-by: Camille Mohr-Daurat <pouleyKetchoup@gmail.com>
2021-12-10 13:22:02 +01:00
Rémi Verschelde 3c448437f6
Merge pull request #55263 from RPicster/ParticleMaterial-random-start-color 2021-12-10 10:06:46 +01:00
Rémi Verschelde f455660e93
Merge pull request #55572 from aaronfranke/ci-double 2021-12-10 10:02:38 +01:00
Aaron Franke e9808e3d9a
Add a double-precision editor build to CI 2021-12-09 09:52:48 -06:00
Nathan Franke 49403cbfa0
Replace String comparisons with "", String() to is_empty()
Also:
- Adds two stress tests to test_string.h
- Changes to .empty() on std::strings
2021-12-09 04:48:38 -06:00
Jonathan Gollnick 0c14b930ef
Fix _validate_property on AnimatedSprite 2D and 3D 2021-12-08 16:59:11 -06:00
Hugo Locurcio c5550108c8
Decrease the default dynamic range in VoxelGIData to 2.0
This reduces visible banding in indirect lighting and reflections.
Sharp reflections now match more closely the original scene.

The downside of this change is that clipping may appear in reflections
in extremely bright scenes, but this should not be a concern in most
scenes.
2021-12-08 00:28:17 +01:00
Hugo Locurcio cf936ae0dd
Rename GPUParticles attractor and collision nodes to have a 3D suffix
GPUParticles attractors and collision are currently only available in 3D.
Their 2D counterparts haven't been implemented yet, but they will use
separate nodes.
2021-12-08 00:21:05 +01:00
Raffaele Picca 76e2c87f57 Fixed sphere emission shape to emit particles in a spheres volume and added "Sphere Surface" to keep the old behaviour. 2021-12-06 20:48:02 +01:00
kobewi 30e1478d0f Remove ProximityGroup3D node 2021-12-06 17:01:51 +01:00
Rémi Verschelde ede7614fe2
Merge pull request #55544 from V-Sekai/audio_camera_null_mitigation 2021-12-06 14:19:40 +01:00
Pedro J. Estébanez 441928c7e3 Fix WorldEnvironment node warning about unset resources 2021-12-03 20:04:50 +01:00
Raffaele Picca ddf82697d7 Random initial color parameter for ParticleMaterial
Works with 2D and 3D GPU Particles
2021-12-03 13:58:17 +01:00
Rémi Verschelde 892a5a72cd
Merge pull request #55474 from akien-mga/copy-operators-no-reference 2021-12-02 17:34:45 +01:00
Rémi Verschelde ced07100d7
Merge pull request #53287 from Chaosus/sprite3d_fix 2021-12-02 16:23:33 +01:00
Rémi Verschelde 7da392bcc5
Don't return reference on copy assignment operators
We prefer to prevent using chained assignment (`T a = b = c = T();`) as this
can lead to confusing code and subtle bugs.

According to https://en.wikipedia.org/wiki/Assignment_operator_(C%2B%2B), C++
allows any arbitrary return type, so this is standard compliant.

This could be re-assessed if/when we have an actual need for a behavior more
akin to that of the C++ STL, for now this PR simply changes a handful of
cases which were inconsistent with the rest of the codebase (`void` return
type was already the most common case prior to this commit).
2021-11-30 16:26:29 +01:00
Hugo Locurcio 1b59818fb3
Remove redundant SpriteBase3D `opacity` property
The `opacity` property is superseded by the GeometryInstance3D
`transparency` property. It works the opposite way (0.0 is opaque,
1.0 is fully transparent), but provides the same behavior in a more
universal manner.
2021-11-29 16:13:55 +01:00
Hugo Locurcio 3135c6f03e
Emit node configuration warnings for GeometryInstance3D distance fade
The visibility range begin/end margin properties must be set above 0.0
for the fade transition to be visible.
2021-11-26 21:46:32 +01:00
Raffaele Picca 459e2a4b6f Fixed texture animation speed when using random lifetime ( Particle2D gpu + cpu) as mentioned here: https://github.com/godotengine/godot/issues/54993 2021-11-26 01:12:23 +01:00
Hugo Locurcio 4e593b3e9a
Fix VoxelGIData dynamic range property being treated as integer
Floating-point values are accepted as dynamic range settings.

This also clamps the lowest value to 1.0, as there's no practical
use case for going below 1.0 (it introduces clipping without
improving precision).
2021-11-26 00:47:31 +01:00
Lightning_A e078f970db Rename `remove()` to `remove_at()` when removing by index 2021-11-23 18:58:57 -07:00
fabriceci ed9b18be94 Fix horizontal velocity being always reset when the body hit a wall in 3d 2021-11-23 11:29:29 +01:00
Camille Mohr-Daurat 66ba19a435
Merge pull request #55202 from fabriceci/fix-wall-acceleration-in-3d
Fix wall acceleration in move and slide (3D)
2021-11-22 08:27:56 -07:00
fabriceci a86d73ef3b Fix body stuck in some 3d advanced scenario 2021-11-22 13:36:51 +01:00
fabriceci b738af86da Fix wall acceleration in move and slide (3D) 2021-11-21 17:09:49 +01:00
Hugo Locurcio 652fd9ffcc
Remove outdated comments related to the 20-layer editor limitation
All 32 layers are now exposed in the editor.
2021-11-18 23:02:40 +01:00
Hugo Locurcio 8fb7e622a6
Rename built-in `SGN()` macro to `SIGN()`
This matches the name of the GDScript function (except it's uppercase
here).
2021-11-16 20:40:49 +01:00
Camille Mohr-Daurat 11e03ae7f0
Merge pull request #54810 from nekomatata/area-separate-override-modes
Separate space override modes for gravity/damping in Area
2021-11-11 15:11:21 -07:00
PouleyKetchoupp c3ae7ddedd Add raycast options to hit when starting inside / hit back faces
Makes the results consistent for all shape types with options to set
the desired behavior.
2021-11-10 17:43:35 -07:00
Rémi Verschelde 3668312e78
Merge pull request #54847 from nekomatata/fix-test-move-regression 2021-11-10 20:38:49 +01:00
PouleyKetchoupp 5da057adaf Fix test_move reporting collision when touching another body
Reporting rest collision information is needed for move_and_collide and
move_and_slide so floor detection can be done properly, but in the case
of just testing the motion for collision, it makes sense to return false
if the body is able to move all along the path without being stopped.

Updated the logic in test_move and clarified the documentation for
test_move and move_and_collide.
2021-11-10 11:20:02 -07:00
PouleyKetchoupp bfd0d33244 Fix errors in CharacterBody when floor is destroyed or removed
In all physics servers, body_get_direct_state() now silently returns
nullptr when the body has been already freed or is removed from space,
so the client code can detect this state and invalidate the body rid.

In 2D, there is no change in behavior (just no more errors).

In 3D, the Bullet server returned a valid direct body state when the
body was removed from the physics space, but in this case it didn't
make sense to use the information from the body state.
2021-11-10 08:27:33 -07:00
PouleyKetchoupp 3d1c123d45 Separate space override modes for gravity/damping in Area
Also make inspector clearer for gravity point properties.
2021-11-09 10:29:24 -07:00
Andrii Doroshenko (Xrayez) 6742a338a8 Rename `GradientTexture` to `GradientTexture1D`
1. Explicit and unambiguous when comparing to `GradientTexture2D`
2. Consistent with other class names where 1D is used in the engine.
2021-11-07 15:11:04 +02:00
Rémi Verschelde 13aaa73124
Merge pull request #54573 from nekomatata/query-parameters 2021-11-05 21:52:39 +01:00
PouleyKetchoupp acbd24ea84 Use parameter classes instead of arguments for all physics queries
Same as what is already done for shape queries, applied to point and ray
queries. Easier to document and more flexible to add more parameters.

Also expose intersect_point method to script in 3D.
Remove intersect_point_on_canvas in 2D, replaced with a parameter.
2021-11-04 11:44:39 -07:00
Hugo Locurcio c012fbc8b2
Rename `PROPERTY_USAGE_NOEDITOR` to `PROPERTY_USAGE_NO_EDITOR`
This is consistent with other constants that include `NO`,
such as `PROPERTY_HINT_COLOR_NO_ALPHA`.
2021-11-03 23:06:17 +01:00
Rémi Verschelde a2803f3d86
Merge pull request #54072 from KoBeWi/hrcr_is_ded 2021-11-03 17:31:48 +01:00
Rémi Verschelde 87ddc5bbbf
Merge pull request #54104 from Scony/improve-navigation-obstacles
Improve NavigationObstacle3D usability
2021-11-03 10:13:53 +01:00
Rémi Verschelde 81c93caf02
Merge pull request #54471 from rafallus/callable_area_monitor 2021-11-02 23:20:41 +01:00
clayjohn b7445f1ff8 Validate fog volume properties 2021-11-01 21:38:04 -07:00
rafallus 770e3a8e51 Use `Callable` in Area monitor callback 2021-11-01 21:53:17 -06:00
Camille Mohr-Daurat a57de3b818
Merge pull request #37880 from nekomatata/rigid-body-damping-override
Improved RigidDynamicBody linear/angular damping override
2021-11-01 11:24:01 -07:00
Hugo Locurcio ce97ddbcb1
Rename GLES2 driver to OpenGL to prepare for the upgrade to GLES3
- Use lowercase driver names for the `--rendering-driver`
  command line argument.
2021-10-30 02:05:49 +02:00
Yuri Roubinsky e058cf93bd Fix crashing of `FogVolume`s when `WorldEnvironment` was added 2021-10-29 14:25:49 +03:00
Rémi Verschelde 75baf16bab
Merge pull request #53353 from clayjohn/VULKAN-fog-volumes
FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFog
2021-10-29 10:29:04 +02:00
clayjohn 1b2cd9f251 Addition of FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFog
Co-authored-by: Brian Semrau <brian.semrau@gmail.com>
2021-10-28 22:02:23 -07:00
Lyuma c088a2dd89 Fix crash due to reentrancy in AudioStreamPlayer* finished signal.
This crash occurred when an audio stream finished playing in NOTIFICATION_INTERNAL_PROCESS,
during which it would iterate through a loop of playbacks,
leading to a "finished" signal, which removed the audio player from the tree
which led to a NOTIFICATION_EXIT_TREE,
which would mutate the array of playbacks while within the above loop.

This moves the signal callback outside of the loop which avoids the crash.
Note: previously, the signal was called multiple times if the same player finishes multiple times in one frame. Now it is at most once per frame.

Affects AudioStreamPlayer, AudioStreamPlayer2D and AudioStreamPlayer3D
2021-10-28 19:45:29 -07:00
Rémi Verschelde f7d852b532
Merge pull request #54350 from akien-mga/clang-format-dont-align-operands 2021-10-28 17:10:52 +02:00
Rémi Verschelde e2deec67b9
Merge pull request #54222 from JFonS/instance-fade 2021-10-28 16:05:55 +02:00
Rémi Verschelde 0ae65472e7
clang-format: Enable `BreakBeforeTernaryOperators`
clang-format keeps breaking the way it handles break *after* ternary operators,
so I give up and go with the only style they seem to actually test.
2021-10-28 15:57:41 +02:00
Rémi Verschelde 3a6be64c12
clang-format: Various fixes to comments alignment from `clang-format` 13
All reviewed manually and occasionally rewritten to avoid bad auto formatting.
2021-10-28 15:43:36 +02:00
Rémi Verschelde 3b11e33a09
clang-format: Disable alignment of operands, too unreliable
Sets `AlignOperands` to `DontAlign`.

`clang-format` developers seem to mostly care about space-based indentation and
every other version of clang-format breaks the bad mismatch of tabs and spaces
that it seems to use for operand alignment. So it's better without, so that it
respects our two-tabs `ContinuationIndentWidth`.
2021-10-28 15:19:35 +02:00
kobewi de4f29f458 Remove node_hrcr hack 2021-10-28 01:43:34 +02:00
Lyuma 601a0722a7 Mitigate crash in AudioStreamPlayer3D when a camera has null viewport 2021-10-27 16:06:09 -07:00
Camille Mohr-Daurat 3c527dcbbd
Merge pull request #54157 from bjauny/fix_potential_nullpointer_collision3d
Fix potential null pointer use, based on #54094 fix
2021-10-27 12:40:50 -07:00
Bastien JAUNY 258b5d0019 Fix potential null pointer use, based on #54094 fix 2021-10-27 20:41:14 +02:00
PouleyKetchoupp daf7dcac7a Improved RigidDynamicBody linear/angular damping override
Damping values are now non-negative.

Add new properties linear_damp_mode and angular_damp_mode to set the way
RigidDynamicBody and PhysicalBone (2D & 3D) use damping values.
It can now be Combine (default) to add to the default/areas, or Replace
to override the value completely (current behavior).
2021-10-25 18:22:12 -07:00
Hugo Locurcio f2c2ecb6e8
Fix properties being displayed when they shouldn't in DirectionalLight3D
The parent `_validate_property()` wasn't called, which led to shadow
properties being visible even if shadows were disabled on a
DirectionalLight3D node.
2021-10-25 22:04:30 +02:00
Rémi Verschelde d98a6363fa
Merge pull request #54084 from reduz/node3d-rotation-options 2021-10-25 20:42:45 +02:00
Rémi Verschelde 8911d6ecc8
Merge pull request #54147 from Calinou/editor-directionallight-3d-only-show-relevant-properties 2021-10-25 20:13:42 +02:00
Pawel Lampe fa26fb865f Improve NavigationObstacle3D usability
Fix NavigationObstacle3D to be attached to navigation map - without it
the NavigationObstacle3D is not working.

Replace radius approximation algorithm with simple "radius" property.
2021-10-25 19:57:33 +02:00
reduz d03b7fbe09 Refactored Node3D rotation modes
* Made the Basis euler orders indexed via enum.
* Node3D has a new rotation_order property to choose Euler rotation order.
* Node3D has also a rotation_mode property to choose between Euler, Quaternion and Basis

Exposing these modes as well as the order makes Godot a lot friendlier for animators, which can choose the best way to interpolate rotations.
The new *Basis* mode makes the (exposed) transform property obsolete, so it was removed (can still be accessed by code of course).
2021-10-25 14:34:00 -03:00
Hugo Locurcio c1de200757
Only show relevant properties in the DirectionalLight3D inspector
Some split distance properties are unused depending on the
current shadow mode. Also, Blend Splits can only be used if the shadow
mode is PSSM 2 Splits or PSSM 4 Splits.

This also moves the Fade Start property to be located after the
split properties. This avoids intertwining "conditional" properties
with a property that's always available.
2021-10-25 18:31:41 +02:00
JFonS c571e4a7f4 Implement distance fade and transparency
The built-in ALPHA in spatial shaders comes pre-set with a per-instance
transparency value. Multiply by it if you want to keep it.

The transparency value of any given GeometryInstance3D is affected by:
   - Its new "transparency" property.
   - Its own visiblity range when the new "visibility_range_fade_mode"
     property is set to "Self".
   - Its parent visibility range when the parent's fade mode is
     set to "Dependencies".

The "Self" mode will fade-out the instance when reaching the visibility
range limits, while the "Dependencies" mode will fade-in its
dependencies.

Per-instance transparency is only implemented in the forward clustered
renderer, support for mobile should be added in the future.

Co-authored-by: reduz <reduzio@gmail.com>
2021-10-25 11:39:34 +02:00
Hristo Stamenov 3ec927cfef Setting the visible multimesh instance to -1 so that they are updated correctly on set_amount.
When emitting stops CPUParticles3D::_set_redraw(bool p_redraw) will set that value to 0 so when you change the amount after that it will actually not update correclty.

This fixes an issue where if it was not emitting when the scene loaded and it start after that the amount is not reflected correclty. This also happened when you checked out the box for emitting in the editor, changed the value of amount and then checked on the box for emitting. With this change if it is emitting during the change it does interrupt the previous particles when you change. The amount and the emit starts from beginning but that is to be expected on an amount of particles change.
2021-10-24 22:04:30 +03:00
Silc 'Tokage' Renew 653e2a550c Fixed animation insertion in SkeletonEditor 2021-10-23 16:50:00 +09:00
Rémi Verschelde 9f7218eb69
Merge pull request #54088 from madmiraal/remove-unimplemented-methods 2021-10-22 12:59:32 +02:00
Marcel Admiraal 87a4ba492e Remove unimplemented methods 2021-10-21 18:44:25 +01:00
Rémi Verschelde 133c1eb0af
Merge pull request #52367 from Duroxxigar/improve-nav-error-messages
Improve readability for failing errors in nav area
2021-10-21 19:36:16 +02:00
Rémi Verschelde 836f86688f
Merge pull request #54053 from nekomatata/fix-soft-body-disable-mode
Fix SoftDynamicBody3D crash when setting disable mode
2021-10-21 19:33:01 +02:00
PouleyKetchoupp e6f7235ffb Fix SoftDynamicBody3D crash when setting disable mode
Proper logic for changing physics state when disabled and disabled mode
is changed (it was unnecessarily making calls to re-initialize physics).

Extra error handling in soft body implementations to avoid crashes with
invalid mesh.
2021-10-21 08:56:12 -07:00
Kemikal1 563d3dbf94 Change the unreacheable return value of shape_find_owner()
Update collision_object_3d.cpp

2d modified and UINT32 usage

Proper uINT32max usage

Change the unreacheable return value of shape_find_owner()

This reverts commit 5be98b81428169ba2dd5baecd00f1adfd9260e5c, reversing
changes made to efa3ff6b95.

Change the unreacheable return value of shape_find_owner()

changed from 0 to uint32_max"

This reverts commit c143bb099af2666454f82428a57f2721af60a84d.

Revert "changed from 0 to uint32_max""

This reverts commit 59e94edb9a32edff15f3cb881e6fc394d2aa7f65.

Revert "changed from 0 to uint32_max"

This reverts commit c143bb099af2666454f82428a57f2721af60a84d.

Revert "Revert "changed from 0 to uint32_max"""

This reverts commit c81d1073ec21b4cde4684a6dbd595f3359283bad.

Revert "changed from 0 to uint32_max"

This reverts commit c143bb099af2666454f82428a57f2721af60a84d.

Revert "changed from 0 to uint32_max""

This reverts commit 59e94edb9a32edff15f3cb881e6fc394d2aa7f65.

Revert "Revert "changed from 0 to uint32_max"""

This reverts commit 6dbd972aa5c4580d4f6270ead6c66eea18617f29.

Revert "changed from 0 to uint32_max""

This reverts commit 59e94edb9a32edff15f3cb881e6fc394d2aa7f65.

Revert "Revert "changed from 0 to uint32_max"""

This reverts commit b769ac2d11ad12f02a388d9dad17519f81d9c3b6.

Revert "Revert "Revert "changed from 0 to uint32_max""""

This reverts commit 1e8d84f7ec12da01c3153e08bb8609cf2c6fd58a.

Revert "Revert "Revert "Revert "changed from 0 to uint32_max"""""

This reverts commit 0dc17abefad6d540c18bba7b4df9d8c04e090d0c.

Change the unreacheable return value of shape_find_owner()
2021-10-21 15:02:28 +03:00
Rémi Verschelde 8688b97dda
Merge pull request #54036 from nekomatata/fix-soft-body-memory-corruption 2021-10-21 11:42:44 +02:00
PouleyKetchoupp 1f816979f6 Fix SoftDynamicBody3D memory corruption when switching mesh at runtime
When switching the mesh at runtime, the physics server wasn't properly
updated with the new mesh. Now we keep track of the soft body mesh to
make sure everything is properly initialized on pre-draw.

Also cleaned a few things around private methods.
2021-10-20 10:57:08 -07:00
Rémi Verschelde da98357e6e
doctool: Fix differences between headless and Vulkan rendering backends
Fixes #53913.
2021-10-20 17:48:50 +02:00
Rémi Verschelde 723b988fde
Merge pull request #52210 from BastiaanOlij/enhance_xr_trackers 2021-10-19 08:11:32 +02:00
Rémi Verschelde 015e0c9fd8
Merge pull request #52773 from Calinou/audiostreamplayer3d-tweak-max-distance 2021-10-18 10:49:01 +02:00
Bastiaan Olij 5d1ea92daf Rework XR positional trackers 2021-10-17 12:12:20 +11:00
Rémi Verschelde c2a616f3ec
Merge pull request #53821 from TwistedTwigleg/Godot_Master_SkeletonModificationIK_FixPoseChange
Fix for SkeletonModification3Ds to work with the new bone pose changes.
2021-10-16 23:54:37 +02:00
TwistedTwigleg 0cedc04769 Fix for SkeletonModification3Ds to work with the new bone pose changes, fixed global_pose_to_local_pose function 2021-10-16 16:34:31 -04:00
Rémi Verschelde a4e1a07d83
Merge pull request #53865 from reduz/implement-blend-shape-tracks 2021-10-16 16:48:10 +02:00
reduz ae1c016547 Implement Animation Blend Shape Tracks
* New track type BLEND_SHAPE
* Blend shapes are imported via this new track type
* Processing is more optimized (no longer relies on variants)
* Modified the Blend Shape API in MeshInstance3D to use indices rather than StringNames (more optimizes)
* Promo: Fixed a small bug in gizmo updating in Node3D that affected performance

Dedicated BlendShape tracks are required for both optimization and eventually implementing them in animation compression.
2021-10-16 08:36:05 -03:00
mennomax b4eeeb315a
Swap args of Plane(point, normal) constructor
Now (normal, point)
2021-10-15 20:49:42 -05:00
Camille Mohr-Daurat 342c1bf1e2
Merge pull request #53054 from MaxLap/doc_shape_signals
Improve area/body_shape_entered/exited signals parameter names and doc
2021-10-14 14:31:58 -07:00
Maxime Lapointe b66fdb8dd2 Improve area/body_shape_entered/exited signals parameter names and doc
Fix some typoed names from the doc
Add _index to "index" parameters of *_shape_* signals, this is both in doc and in the template. This makes the code, signature and doc easier to understand
Add method to get Node from the _index params of those signals. This was not as easy to find as one would expect. Putting this information where it is needed will help.
2021-10-14 15:41:26 -04:00
Silc 'Tokage' Renew 8e9897b6de get rid set_bone_pose and fix some function in SkeletonEditor 2021-10-15 02:41:17 +09:00
reduz 2dc823273e 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).
2021-10-13 14:51:29 -03:00
Rémi Verschelde 3be18d3d37
Merge pull request #53578 from RedHeadphone/patch-1 2021-10-13 12:44:54 +02:00
Rémi Verschelde 3e86ca5586
Merge pull request #53689 from reduz/remove-animation-transform3d-track 2021-10-13 12:40:33 +02:00
reduz ec19ed3723 Remove animation 3D transform track, replace by loc/rot/scale tracks.
* `Animation.TYPE_TRANSFORM3D` track is gone.
* Added POSITION_3D, ROTATION_3D, SCALE_3D tracks.
* GLTF2, Collada, FBX importers will only import the track types found.
* Skeleton3D bone poses are now Pos/Rot/Scale, pose matrix removed.
* AnimationPlayer and AnimationTree animate these tracks separately, only when found.
* Removed BakeReset code, is useless with these changes.

This is the first in a series of commits designed to make the animation system in Godot more useful, which includes:

* Better compatibility with Autodesk products
* Better reusability of animations across models (including retargeting).
* Proper animation compression.
* etc.

*Note* GLTF2 animation saving went broken with this PR, needs to be fixed in a subsequent one.
2021-10-12 20:08:42 -03:00
Rémi Verschelde b372f79dd5
Merge pull request #53676 from Klowner/camera-get-pyramid-rid-shape-crash
Fix Camera3D::get_pyramid_shape_rid() crash when not in scene
2021-10-12 22:32:16 +02:00
Aaron Franke 7e51e4cb84
Fix some LGTM errors of "Multiplication result converted to larger type" 2021-10-12 00:17:27 -05:00
Mark Riedesel 49a4d2bc49 add failure condition for get_pyramid_shape_rid() when camera3d is not in tree. fixes #53564 2021-10-11 10:16:48 -04:00
Douglas Leão 39a90751dc Allow AudioStreamPlayer(2D) to provide `pitch_scale` on playback 2021-10-10 18:52:29 -03:00
Rémi Verschelde 5ae569560d
Fix missing argument names in bindings
While at it, tweak some boolean setters to use `p_enabled` for the bool.

Also renames `draw_minimap()` to `set_draw_minimap()`.
2021-10-09 00:20:10 +02:00
Duroxxigar 54d305eebe Improved readability for failing error conditions 2021-10-08 17:29:25 -04:00
Red Headphone fff70a6427
no limit of negative value for engine_force (VehicleBody class) 2021-10-08 22:25:50 +05:30
Rémi Verschelde f323d25dd3
Merge pull request #53525 from Calinou/comments-replace-visual-server
Replace references to VisualServer in code comments with RenderingServer
2021-10-07 17:06:27 +02:00
Hugo Locurcio bcf4a56c74
Replace references to VisualServer in code comments with RenderingServer
VisualServer no longer exists in the `master` branch.
2021-10-07 15:49:41 +02:00
Hugo Locurcio 9b5785f064
Remove debugging print from the VoxelGI baker 2021-10-07 15:45:54 +02:00
Haoyu Qiu 6072f38bb1 Use loop instead of recursion when clearing proximity groups 2021-10-07 16:31:47 +08:00
Camille Mohr-Daurat 69f80b6631
Merge pull request #53482 from timothyqiu/soft-body-ready
Re-prepare RenderingServer if SoftDynamicBody mesh changed
2021-10-06 14:57:53 -07:00
Rémi Verschelde 164dc11e04
Merge pull request #45699 from TokageItLab/implement-skeleton-editor-gizmo
Implement Skeleton Editor Gizmo
2021-10-06 21:11:20 +02:00
Silc Renew f2e9867e9f Implemented SkeletonEditorGizmo
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
2021-10-07 01:07:46 +09:00
Haoyu Qiu d000ce9130 Re-prepare RenderingServer if SoftDynamicBody mesh changed 2021-10-06 23:25:11 +08:00
Rémi Verschelde c773c709c0
Merge pull request #53051 from kleonc/animated-sprites-centered-rendering 2021-10-05 11:22:17 +02:00
PouleyKetchoupp 4f8d761be6 Fix physics glitch with TileMap moving platforms
Added a parameter in test_body_motion to exclude attached objects from
collision, used to avoid collision with all TileMap tiles with moving
platform motion instead of just the one tile the character touches.

Same changes made in 3D for consistency, and handling potential similar
cases.
2021-10-04 12:27:42 -07:00
Rémi Verschelde 5b270278c8
Merge pull request #53280 from nekomatata/test-body-motion-parameters 2021-10-04 21:05:38 +02:00
Rémi Verschelde 19d090c324
Merge pull request #53394 from TwistedTwigleg/Godot4_SkeletonIK_RegressionFix 2021-10-04 20:26:55 +02:00
PouleyKetchoupp 3ae5687d48 Script interface improvements for test body motion
-Physics servers test body motion use a class to hold parameters instead
of multiple arguments to make it more readable and flexible since there
are many options
-Improved documentation for test body motion and kinematic collision
-Removed read-only properties for body motion results (not handled in
scripts, so they should be get_ methods only instead)
2021-10-04 10:49:10 -07:00
Rémi Verschelde 7722048ed0
Merge pull request #53354 from reduz/remove-clipped-camera 2021-10-04 17:19:15 +02:00
TwistedTwigleg 92a79ace5b Fixed SkeletonIK not rotating correctly when solving 2021-10-04 10:22:51 -04:00
reduz b11bb595d1 Remove ClippedCamera3D
* Usage was always confusing for users
* The ability to generate a pyramid shape was moved to Camera3D
* SpringArm3D now casts using the camera pyramid shape if no shape is supplied.
2021-10-04 10:46:49 -03:00
K. S. Ernest (iFire) Lee 1463fc889b GLTF for game templates.
Convert GLTF Document to use ImporterMeshInstance3D.

Add a GLTFDocument extension list and an extension for converting the importer mesh instance 3d to mesh instance 3d.

Use GLTF module when the editor tools are disabled.

Modified the render server to be less restrictive on matching blend arrays and have more logging.

Misc bugs with multimesh.

Always index the meshes.
2021-10-03 12:37:52 -07:00
kleonc b266b59e56 Fix rendering centered odd-size texture in AnimatedSprite2D/AnimatedSprite3D 2021-10-03 14:30:51 +02:00
PouleyKetchoupp 39f6ca96a3 Rename Joint2D and Joint3D files for consistency
Now matches the class names to be consistent between 2D and 3D and with
other node types.
2021-10-01 12:00:32 -07:00
Camille Mohr-Daurat fdd25d7c84
Merge pull request #53311 from nekomatata/soft-body-remove-mesh-reference
Remove scene code in physics servers
2021-10-01 09:56:49 -07:00
Camille Mohr-Daurat c7ee029acd
Merge pull request #53302 from nekomatata/physics-bone-remove-editor-code
Remove editor code in PhysicalBone3D
2021-10-01 08:45:20 -07:00
PouleyKetchoupp b8eeb34b4e Remove scene code in physics servers
Replaced Mesh with mesh RID in Godot Physics 3D and Bullet.
2021-10-01 08:42:47 -07:00
PouleyKetchoupp ca30b70943 Remove editor code in PhysicalBone3D
_set_gizmo_move_joint is only used in PhysicalBone3DEditor, so the
editor plugin call can be done directly there.
2021-10-01 08:02:38 -07:00
Rémi Verschelde 6ed3e9c182
Merge pull request #53208 from timothyqiu/headless-crash 2021-10-01 11:29:19 +02:00
Yuri Roubinsky 1ade29147b Add `texture_changed` signal to `Sprite3D` 2021-10-01 10:14:05 +03:00
Camille Mohr-Daurat 95432893e2
Merge pull request #53272 from fabriceci/bug-platform-ceiling
Fix #53255 when a body gets stuck when it hits a descending platform in 2D/3D
2021-09-30 18:05:52 -07:00
fabriceci 3fa76dfe58 Fix body stuck on descending platform 2021-09-30 23:55:50 +02:00
Lightning_A c63b18507d Use range iterators for `Map` 2021-09-30 15:09:12 -06:00
PouleyKetchoupp d0ec46be68 Remove shape metadata from 2D physics server
Shape metadata was only used to get tile information when colliding with
tilemaps. It's not needed anymore since there's an API in tilemap using
body ids instead.
2021-09-30 10:45:36 -07:00
Camille Mohr-Daurat 767bde8c28
Merge pull request #53197 from nekomatata/fix-motion-direction-in-slope
Fix motion direction in slope for CharacterBody3D
2021-09-30 09:43:24 -07:00
PouleyKetchoupp eec3f3ec12 Fix motion direction in slope for CharacterBody3D
- More accurate sliding in slopes to keep input direction correct
- More accurate constant speed calculation
- Renamed linear_velocity to motion_velocity for clarity
- General code cleaning and simplifications
2021-09-30 07:47:07 -07:00
Rémi Verschelde 5d6a98f04e
Merge pull request #53239 from nekomatata/fix-animatable-body-initial-state 2021-09-30 15:15:00 +02:00
PouleyKetchoupp 6e6f292f15 Fix AnimatableBody moving and colliding during the first frame
_update_kinematic_motion() shouldn't be called in the constructor
It's too early and causes a first call to set the body position to 0.
Then the second call to set the actual position triggers kinematic
motion, colliding with objects on the path to the initial position.

Side effect of sync to physics now enabled by default.
2021-09-29 18:30:57 -07:00
Haoyu Qiu 82f7f2c46c Fix crash in headless mode 2021-09-29 17:24:53 +08:00
Rémi Verschelde ad635567b1
Merge pull request #53189 from AnilBK/use-class-specific-funcs 2021-09-29 07:40:52 +02:00
Anilforextra fc9767abb1 Use functions defined in the their classes. 2021-09-29 09:36:34 +05:45
Camille Mohr-Daurat 341b532d5e
Merge pull request #52754 from nekomatata/dynamic-body-modes
Clarify RigidDynamicBody modes
2021-09-28 17:11:17 -07:00
fabriceci dd5f01e83e Set stop on slope on by default on CharacterBody. 2021-09-28 22:31:46 +02:00
Camille Mohr-Daurat c38ef94951
Merge pull request #53174 from fabriceci/apply-delta-move-and-collide
Physic API change: apply the delta in move and collide like move and slide
2021-09-28 11:32:09 -07:00
fabriceci 32bf7c419c Sync to physics true by default for AnimatableBody 2021-09-28 16:11:17 +02:00
fabriceci 60fee25c44 Apply delta in move and collide 2021-09-28 14:53:24 +02:00
Rémi Verschelde 60988a06c2
Merge pull request #52953 from nekomatata/fix-collision-recovery-depth 2021-09-28 12:11:38 +02:00
Duroxxigar 3bcf03c40f Fixed typo in bone attachment warning 2021-09-27 18:53:56 -04:00
PouleyKetchoupp bf523a2b2a Improved logic for CharacterBody collision recovery depth
Allows 2D character controller to work without applying gravity when
touching the ground (also more safely in 3D), and collision detection
is more flexible with different safe margin values.

Character body motion changes in 2D and 3D:
-Recovery only for depth > min contact depth to help with collision
detection consistency (rest info could be lost if recovery was too much)
-Adaptive min contact depth (based on margin) instead of space parameter

Extra CharacterBody changes:
-2D: apply changes made in 3D for stop on slope and floor snap that help
fixing some jittering cases
-3D: fix minor inconsistencies in stop on slope and floor snap logic
2021-09-27 15:31:41 -07:00
LATRio 1b55d72c68 fix out of bounds crash in GPUParticle3D::_skinning_changed() 2021-09-25 23:06:32 +09:00
Hugo Locurcio b383181851
Tweak AudioStreamPlayer3D property hints for usability
This also improves the documentation for the `max_distance` property.
2021-09-25 12:24:30 +02:00
Rémi Verschelde 88b347dc27
Merge pull request #51920 from jmb462/missing-sname-macro-optimization-in-some-functions 2021-09-23 13:14:20 +02:00
Rémi Verschelde 011866edcd
Merge pull request #52956 from laws65/skeleton3d-bone-fix 2021-09-23 12:10:09 +02:00
laws65 59ff3fda7f Prevent being able to set bone's parent as itself 2021-09-23 11:30:45 +09:30
PouleyKetchoupp 9269952053 Don't override KinematicCollision reference when still in use in script
In case the reference is stored in script, create a new instance to
avoid overriding the previous values.
Otherwise, re-use the reference as before to avoid extra allocations.
2021-09-22 18:08:04 -07:00
fabriceci fd9e573ba6 Port 2D improvement to move and slide 3D
Co-authored-by: Camille Mohr-Daurat <pouleyketchoup@gmail.com>
2021-09-22 00:14:04 +02:00
Anilforextra 90908cd67d Add Get Center Method for Rect2/Rect2i and AABB. 2021-09-21 21:14:17 +05:45
Rémi Verschelde 43cc6dd479
Merge pull request #52774 from Calinou/audiostreamplayer3d-remove-out-of-range 2021-09-17 21:56:59 +02:00
Hugo Locurcio 973f52b784
Remove unused `out_of_range_mode` property from AudioStreamPlayer3D
The `out_of_range_mode` property is no longer used since audio mixing
was moved out of the various AudioStreamPlayer nodes.
2021-09-17 20:18:38 +02:00
PouleyKetchoupp ed1ba5093f Clarify RigidDynamicBody modes
RigidDynamicBody modes are replaced with several properties to make their
usage clearer:
-lock_rotation: disable body's rotation (instead of MODE_LOCKED)
-freeze: no gravity or forces (instead of MODE_STATIC and MODE_KINEMATIC)
-freeze_mode: Static (can be only teleported) or Kinematic (can be animated)

Also renamed MODE_DYNAMIC_LOCKED to MODE_DYNAMIC_LINEAR in the physics
servers.
2021-09-16 16:03:48 -07:00
Wilson E. Alvarez f3a564f9a5
Rename Listener2D/Listener3D to AudioListener2D/AudioListener3D 2021-09-16 17:51:51 -04:00
Camille Mohr-Daurat 3581b893ed
Merge pull request #52681 from nekomatata/rename-rigid-body
Rename RigidBody to RigidDynamicBody and SoftBody to SoftDynamicBody
2021-09-16 11:20:21 -07:00
PouleyKetchoupp 85819b199a Rename RigidBody to RigidDynamicBody and SoftBody to SoftDynamicBody 2021-09-16 09:55:20 -07:00
Hugo Locurcio 05697ee848
Display a editor gizmo icon for Listener3D
The icon was present in `editor/icons/`, but it was never implemented
in the editor gizmos code.

This also removes some unused gizmo drawing code (overridden methods
that are no longer called anywhere).
2021-09-16 10:56:45 +02:00
Rémi Verschelde e13d8eda1b
Merge pull request #52266 from AndreaCatania/coll 2021-09-14 14:34:22 +02:00
Haoyu Qiu 88e3ba83f0 Make sure IK target is inside tree before using its transform 2021-09-14 17:46:39 +08:00
Juan Linietsky 25291a5b03
Merge pull request #52462 from TokageItLab/fixed-regression-of-skinning
Fixed regression of skinning with skeleton
2021-09-08 10:07:46 -03:00
AndreaCatania e3a06c3a9e Improve collision generation usability in the new 3D scene import workflow.
With this PR it's possible to add a collision during the Mesh import, directly in editor.
To generate the shape is possible to chose between the following options:
- Decompose Convex: The Mesh is decomposed in one or many Convex Shapes (Using the VHACD library).
- Simple Convex: Is generated a convex shape that enclose the entire mesh.
- Trimesh: Generate a trimesh shape using the Mesh faces.
- Box: Add a primitive box shape, where you can tweak the `size`, `position`, `rotation`.
- Sphere: Add a primitive sphere shape, where you can tweak the `radius`, `position`, `rotation`.
- Cylinder: Add a primitive cylinder shape, where you can tweak the `height`, `radius`, `position`, `rotation`.
- Capsule: Add a primitive capsule shape, where you can tweak the `height`, `radius`, `position`, `rotation`.

It's also possible to chose the generated body, so you can create:
- Rigid Body
- Static Body
- Area
2021-09-08 08:12:51 +02:00
Juan Linietsky ca11f8ad30
Merge pull request #52237 from ellenhp/polyphony
Add optional polyphonic playback to built-in audio player nodes
2021-09-07 17:38:51 -03:00
Ellen Poe 0e3cab41eb Add polyphony to Audio Stream Player nodes 2021-09-07 09:44:39 -07:00
Silc 'Tokage' Renew 48aa2d5494 Fixed regression of skinning with skeleton 2021-09-07 23:59:29 +09:00
PouleyKetchoupp 82ea2a7045 Proper support for custom mass properties in 2D/3D physics bodies
Changes:
-Added support for custom inertia and center of mass in 3D
-Added support for custom center of mass in 2D
-Calculated center of mass from shapes in 2D (same as in 3D)
-Fixed mass properties calculation with disabled shapes in 2D/3D
-Removed first_integration which is not used in 2D and doesn't seem to
make a lot of sense (prevents omit_force_integration to work during the
first frame)
-Support for custom inertia on different axes for RigidBody3D
2021-09-06 10:20:16 -07:00
PouleyKetchoupp 83baecdff0 Add AnimatableBody inherited from StaticBody for moving platforms
Instead of having a physics node named Static that can be either Static
or Kinematic, AnimatableBody is added again as a separate node:
-Inherited from StaticBody to make its usage clearer
-Still separated from CharacterBody to make its usage more focused

Properly implemented constant velocity for kinematic bodies in godot
physics servers (induced velocity without actually moving).

Also updated description for the different physics nodes to make their
usage clearer.
2021-08-31 18:14:32 -07:00
Juan Linietsky 7946066577
Merge pull request #49471 from nekomatata/body-state-sync-callback
Clean physics direct body state usage in 2D and 3D physics
2021-08-31 14:30:17 -03:00
Camille Mohr-Daurat 0ee1179c1c
Merge pull request #52279 from fabriceci/delta-double
Change delta type to double in Physics_body_2/3D
2021-08-31 08:25:36 -07:00
Camille Mohr-Daurat a9fcbb1001
Merge pull request #51364 from bengtsts/master
Expose soft body pin methods to GDScript
2021-08-31 07:41:34 -07:00
fabriceci f9d548627d delta time as double 2021-08-31 14:32:56 +02:00
Bengt Söderström 08a80962cf Expose soft body pin methods to GDScript 2021-08-30 20:07:14 +02:00
Juan Linietsky 6dab6e4136
Revert " Improve collision generation usability in the new 3D scene import workflow." 2021-08-30 11:30:36 -03:00
Camille Mohr-Daurat b60a51f023
Merge pull request #51985 from AndreaCatania/coll
Improve collision generation usability in the new 3D scene import workflow.
2021-08-30 07:25:51 -07:00
Juan Linietsky 07707a3627
Revert "Display a matrix for Node2D and don't display a duplicate origin" 2021-08-29 17:01:07 -03:00
Aaron Franke ee7bb9bbb9
Display a matrix for Node2D and don't display a duplicate origin 2021-08-29 10:34:50 -05:00
Max Hilbrunner e0355d5db6
Merge pull request #43573 from lewiji/master
sprite_3d.cpp: return _is_playing() from public is_playing() function
2021-08-28 19:55:54 +02:00
AndreaCatania 2d2d24a538 Improve collision generation usability in the new 3D scene import workflow.
With this PR it's possible to add a collision during the Mesh import, directly in editor.
To generate the shape is possible to chose between the following options:
- Decompose Convex: The Mesh is decomposed in one or many Convex Shapes (Using the VHACD library).
- Simple Convex: Is generated a convex shape that enclose the entire mesh.
- Trimesh: Generate a trimesh shape using the Mesh faces.
- Box: Add a primitive box shape, where you can tweak the `size`, `position`, `rotation`.
- Sphere: Add a primitive sphere shape, where you can tweak the `radius`, `position`, `rotation`.
- Cylinder: Add a primitive cylinder shape, where you can tweak the `height`, `radius`, `position`, `rotation`.
- Capsule: Add a primitive capsule shape, where you can tweak the `height`, `radius`, `position`, `rotation`.

It's also possible to chose the generated body, so you can create:
- Rigid Body.
- Static Body.
- Area.
2021-08-28 08:34:15 +02:00
Juan Linietsky 54caaa21ce
Merge pull request #51296 from ellenhp/mix_in_audio_server
Move mixing out of the AudioStreamPlayback* nodes
2021-08-27 15:38:20 -03:00
Camille Mohr-Daurat 87f575efdd
Merge pull request #52135 from fabriceci/fix-transmission-velocity-on-wall-4
Remove velocity transmission on_wall when collider is CharacterBody.
2021-08-27 10:56:42 -07:00
Ellen Poe 3598d300cb Do all audio mixing in the AudioServer 2021-08-27 10:41:57 -07:00
fabriceci 4da0cfe459 Remove velocity transmission on_wall when collider is CharacterBody. 2021-08-26 23:02:30 +02:00
PouleyKetchoupp 6a9ed72185 Clean physics direct body state usage in 2D and 3D physics
Use a C++ callback instead of Callable for synchronizing physics nodes' state with physics servers.

Remove usage of PhysicsDirectBodyState in physics nodes when not
necessary.

Store PhysicsDirectBodyState for bodies individually instead of a
singleton to avoid issues when accessing direct body state for multiple
bodies.

PhysicsDirectBodyState is initialized only when needed, so it doesn't
have to be created when using the physics server directly.

Move PhysicsDirectBodyState2D and PhysicsDirectBodyState3D to separate
cpp files.
2021-08-25 08:57:42 -07:00
PouleyKetchoupp d9720d4395 Fix CharacterBody motion with RayShape
Make separation ray shapes work properly in move_and_slide, wihtout the
specific code in CharacterBody like before.

Now most of the logic is handled inside the physics server. The only
thing that's needed is to use ray shapes only for recovery and ignore
them when performing the motion itself (unless we're snapping or slips
on slope is on).
2021-08-24 17:34:55 -07:00
PouleyKetchoupp bae06008c8 Port recent move_and_slide fixes to 3D
Improves stop on slopes, sliding on walls and gravity handling by
porting existing changes from CharacterBody2D to CharacterBody3D.

Co-authored-by: fabriceci <fabricecipolla@gmail.com>
2021-08-24 11:30:01 -07:00
Camille Mohr-Daurat 770a1d00a3
Merge pull request #51751 from jeffrey-cochran/windforce
Created an area-specific wind force that interacts with soft bodies
2021-08-23 16:48:19 -07:00
reduz 44d62a9f4b Implement NativeExtension pointer arguments
* Allows calling into native extensions directly with a pointer
* Makes it easier to implement some APIs more efficiently
* Appears with a "*" in the documentation for the argument.
* Implementing the pointer handling is entirely up to the implementation, although the extension API provides some hint.
* AudioStream has been implemented as an example, allowing to create NativeExtension based AudioStreams.
2021-08-23 19:58:40 -03:00
Jeffrey Cochran e806397196 Enabled area-specific wind forces 2021-08-23 17:00:50 -04:00
reduz 5cecdfa8af Entirely removes BIND_VMETHOD in favor of GDVIRTUAL
* `_gui_input`, `_input`, `_unhandled_input` and `_unhandled_key_input` are now regular C++ virutal functions.
* Everything else converted to GDVIRTUAL
* BIND_VMETHOD is gone, always use the new syntax from now on.

Creating `_gui_input` method and using the binder to register events will no longer work, simply override the virtual function now.
2021-08-23 08:10:13 -03:00
QbieShay d6672096fc moved particle parameters to minmax and split scale axis
This commit adds quite a chunk of modifications to particles
- particle (value + randomness) now use min and max instead
- passing a curveXYZtexture is now possible and will scale particles per-axis
- CPUParticle3D have an optional parameter to split the scale curve per-axis
2021-08-22 18:42:17 +02:00
reduz 3682978aee Replace BIND_VMETHOD by new GDVIRTUAL syntax
* New syntax is type safe.
* New syntax allows for type safe virtuals in native extensions.
* New syntax permits extremely fast calling.

Note: Everything was replaced where possible except for `_gui_input` `_input` and `_unhandled_input`.
These will require API rework on a separate PR as they work different than the rest of the functions.

Added a new method flag METHOD_FLAG_OBJECT_CORE, used internally. Allows to not dump the core virtuals like `_notification` to the json API, since each language will implement those as it is best fits.
2021-08-22 08:23:58 -03:00
jmb462 54de7114c5 Add missing SNAME macro optimization for StringName in some functions 2021-08-20 14:50:24 +02:00
jfons 55e7832d7b Improvements to SpotLight3D and OmniLight3D's shadows
OmniLight3D:
* Fixed lack of precision in cube map mode by scaling the projection's
  znear.
* Fixed aliasing issues by making the paraboloids use two square regions instead of two half
  squares.
* Fixed shadowmap atlas bleeding by adding padding.
* Fixed sihadow blur's inconsistent radius and unclamped sampling.

SpotLight3D:
* Fixed lack of precision by scaling the projection's znear.
* Fixed normal biasing.

Both:
* Tweaked biasing to make sure it works out of the box in most situations.
2021-08-19 13:46:51 +02:00
Rémi Verschelde b463ac747a
Merge pull request #51798 from nekomatata/fix-skeleton-child-bones 2021-08-18 00:56:06 +02:00
PouleyKetchoupp 91fdf7c15b Fix Skeleton3D regression when bones are not sorted from root to leaves
Tentative fix for missing bones when bones are not sorted as expected.
For example, if the root comes last, all child bones are removed and
the skeleton ends up with just the root.
2021-08-17 08:31:38 -07:00