summaryrefslogtreecommitdiff
path: root/main
AgeCommit message (Collapse)Author
2021-09-28Improve unregistering XR interfaces so we don't get crashes in GDExtensions ↵Bastiaan Olij
by destroying the XRServer too early
2021-09-20Display an alert when attempting to run a project with no main sceneHugo Locurcio
This gives visual feedback when not starting Godot from a terminal. This could lead to confusion when placing a Godot binary within a project folder that has no main scene defined.
2021-09-20Add remaning code edit unit testsPaulb23
2021-09-15--single-window is passed through project manager.Jacob Edie
This means you can start godot with --single-window
2021-09-15Merge pull request #52562 from BastiaanOlij/gd_extensions_register_driversRémi Verschelde
Add driver types to GD extension initialisation levels
2021-09-14Merge pull request #52226 from Faless/debugger/4.x_start_optionsRémi Verschelde
2021-09-13Merge pull request #50375 from Paulb23/code_edit_unit_testsRémi Verschelde
2021-09-13Add driver types to GD extension initialisation levelsBastiaan Olij
2021-09-07Merge pull request #47391 from Calinou/platform-feature-tags-lowercaseJuan Linietsky
Make platform feature tag names lowercase
2021-09-01Allow unit testing SceneTree OjectsPaulb23
2021-08-31Fix negative delta argumentsManuel Moos
Three attack points, all after the regular calculations: 1. Prevent negative physics timestep counts. They could occur if physics_jtter_fix is changed at runtime. 2. idle_step is not allowed to go below 1/8th of the input step. That could happen on physics_jitter_fix changes or heavily fluctuating performance. 3. Prevent that the idle_step modification breaks the promise that Engine.get_physics_interpolation_fraction() is between 0 and 1 by doing more physics steps than the base system wants. Fixes #26887 Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
2021-08-31Make platform feature tag names lowercaseHugo Locurcio
Feature tag names are still case-sensitive, but this makes built-in feature tags more consistent. - `Windows` -> `windows` - `OSX` -> `osx` - `LinuxBSD` -> `linuxbsd` - `Android` -> `android` - `iOS` -> `ios` - `HTML5` -> `html5` - `JavaScript` -> `javascript` - `UWP` -> `uwp`
2021-08-29Rename String::is_rel_path to String::is_relative_pathWilson E. Alvarez
2021-08-29[Editor] Add "--debug-server <uri>" option.Fabio Alessandrelli
Allow starting the editor debugger server for the given protocol (and optionally bound to the given ip/port combination: godot -e --debug-server tcp://*:8080
2021-08-26Use OrderedHashMap for autoloads to preserve orderLyuma
2021-08-23Merge pull request #51947 from AnilBK/redundant-assignmentsMichael Alexsander
[cppcheck] Remove some redundant assignments.
2021-08-22Merge pull request #37260 from Calinou/define-minimum-window-sizeHugo Locurcio
Define a default minimum window size to workaround rendering issues
2021-08-22Merge pull request #36872 from Calinou/default-stretch-aspect-expandHugo Locurcio
Use the `keep` stretch aspect by default
2021-08-22Define a default minimum window size to workaround rendering issuesHugo Locurcio
The minimum window size can still be set to `Vector2(0, 0)` in a script if needed. This closes #37242.
2021-08-21Remove redundant assignments.Anilforextra
Use used_in_transfer instead of used_in_compute twice.
2021-08-13Add project setting for agile input event flushingPedro J. Estébanez
If enabled, key/touch/joystick events will be flushed just before every idle and physics frame. Enabling this can greatly improve the responsiveness to input, specially in devices that need to run multiple physics frames per each idle frame, because of not being powerful enough to run at the target frame rate. This will only work for platforms using input buffering (regardless event accumulation). Currenly, only Android does so, but could be implemented for iOS in an upcoming PR.
2021-08-13Add input buffering frameworkPedro J. Estébanez
Input buffering is implicitly used by event accumulation, but this commit makes it more generic so it can be enabled for other uses. For desktop OSs it's currently not feasible given main and UI threads are the same).
2021-08-11Merge pull request #51486 from reduz/fixes-to-mobile-rendererRémi Verschelde
Fixes and optimizations to mobile renderer
2021-08-10Fixes and optimizations to mobile rendererreduz
* Only apply final actions to attachments used in the last pass. * Fixes to draw list final action (was using continue instead of read/drop). * Profiling regions inside draw lists now properly throw errors. * Ability to enable gpu profile printing from project settings. (used to debug).
2021-08-11Rename `iterations_per_second` to `physics_ticks_per_second`Hugo Locurcio
This makes it clearer that this property is only about physics FPS, not rendering FPS. The `physics_fps` project setting was also renamed to `physics_ticks_per_second` for consistency.
2021-08-03[Headless] Add --headless switch (no rendering, no audio).Fabio Alessandrelli
Also remove now unused "--no-window" option, and relative OS getter and setter.
2021-07-31Print a warning when the engine is started as `root`/superuserHugo Locurcio
This is a security risk (especially when hosting a game server) and can make audio non-functional on Linux.
2021-07-26Use doubles for time everywhere in Timer/SceneTreeAaron Franke
2021-07-24Merge pull request #50786 from reduz/implement-resource-uidsRémi Verschelde
Implement Resource UIDs
2021-07-24Implement Resource UIDsreduz
* Most resource types now have unique identifiers. * Applies to text, binary and imported resources. * File formats reference both by text and UID (when available). UID always has priority. * Resource UIDs are 64 bits for better compatibility with the engine. * Can be represented and used textually, example `uuid://dapwmgsmnl28u`. * A special binary cache file is used and exported, containing the mappings. Example of how it looks: ```GDScript [gd_scene load_steps=2 format=3 uid="uid://dw86wq31afig2"] [ext_resource type="PackedScene" uid="uid://bt36ojelx8q6c" path="res://subscene.scn" id="1_t56hs"] ``` GDScript, shaders and other special resource files can't currently provide UIDs, but this should be doable with special keywords on the files. This will be reserved for future PRs.
2021-07-23Use C++ iterators for Lists in many situationsAaron Franke
2021-07-22Move `alert` function from `DisplayServer` to `OS`.bruvzg
2021-07-20Adds ability to debug stringnamesreduz
* References (which include hash tables) can be profiled with --debug-stringnames
2021-07-13Implement the ability to disable classesreduz
* This PR adds the ability to disable classes when building. * For now it's only possible to do this via command like: `scons disable_classes=RayCast2D,Area3D` * Eventually, a proper UI will be implemented to create a build config file to do this at large scale, as well as detect what is used in the project.
2021-07-12Change VSync mode project setting enum type from string to integerHendrik Brucker
2021-07-06Restructure and reimplement vsync optionsHendrik Brucker
-Add a v-sync mode setting which allows to choose between DISABLED, ON, ADAPTIVE and MAILBOX -Removed the V-Sync via Compositor option
2021-07-03Fix Render Inforeduz
* Fixed and redone the process to obtain render information from a viewport * Some stats, such as material changes are too difficult to guess on Vulkan, were removed. * Separated visible and shadow stats, which causes confusion. * Texture, buffer and general video memory can be queried now. * Fixed the performance metrics too.
2021-06-25Implement native extension systemreduz
* Deprecates GDNative in favor of a simpler, lower level interface. * New extension system allows registering core engine classes. * Simple header interface in gdnative_interace.h
2021-06-19Rename `instance()`->`instantiate()` when it's a verbLightning_A
2021-06-19Use the `keep` stretch aspect by defaultHugo Locurcio
This makes Godot avoid distortion when resizing the window to an aspect ratio that doesn't match the project's base aspect ratio. Since this setting has no effect when the stretch mode is `disabled` (the default), this won't impact projects not using the `canvas_items` or `viewport` stretch modes.
2021-06-16Main: Fixup bogus fallback to project manager with more bologneseRémi Verschelde
WARNING: Hacks everywhere! The logic in `main.cpp` is due a full rewrite as it's extremely hacky, splitting argument parsing over several functions, with a mess of global state and assumptions about what combinations of arguments or lack thereof should mean in terms of what we want to read: game, editor, project manager, or command line tools such as `--doctool`, `--export` or `--script`. Until this is fully rewritten, this patch hacks things some more to ensure that we don't fall back to the project manager in cases where it's not warranted, and especially not *too late*, as it can mean that we haven't properly initialized stuff like `EditorPaths` needed by the PM (which in turn impacts what kind of path will be used for logs and the shader cache, etc... the rabbit hole goes deep). Fixes #41435. Fixes #49392. Fixes #49658. Fixes https://github.com/godotengine/godot/issues/38202#issuecomment-773158477.
2021-06-15Merge pull request #49432 from Calinou/tweak-physics-fps-property-hintRémi Verschelde
Tweak the physics FPS property hint to only allow reasonable values
2021-06-14Refactor editor paths validation in EditorPaths and EditorSettingsRémi Verschelde
- EditorSettings: Ensure that `create()` makes a valid singleton. Fixes #49179, fixes #49450. - EditorPaths: Cleanup code, properly set `paths_valid`. - EditorPaths: Move more paths validation (check, mkdir) from EditorSettings for a better separation of concerns. - EditorPaths: Move EditorFileSystem creation of `.godot/imported` next to other paths.
2021-06-12Merge pull request #49123 from aaronfranke/it-is-timeRémi Verschelde
Add a Time singleton
2021-06-11Add Time singletonAaron Franke
2021-06-11Core: Move DirAccess and FileAccess to `core/io`Rémi Verschelde
File handling APIs are typically considered part of I/O, and we did have most `FileAccess` implementations in `core/io` already.
2021-06-08Tweak the physics FPS property hint to only allow reasonable valuesHugo Locurcio
Physics FPS above 1000 cause the whole project to slow down and are not very practical in the first place (since no CPU currently available can keep up).
2021-05-31Implement shader cachingreduz
* Shader compilation is now cached. Subsequent loads take less than a millisecond. * Improved game, editor and project manager startup time. * Editor uses .godot/shader_cache to store shaders. * Game uses user://shader_cache * Project manager uses $config_dir/shader_cache * Options to tweak shader caching in project settings. * Editor path configuration moved from EditorSettings to new class, EditorPaths, so it can be available early on (before shaders are compiled). * Reworked ShaderCompilerRD to ensure deterministic shader code creation (else shader may change and cache will be invalidated). * Added shader compression with SMOLV: https://github.com/aras-p/smol-v
2021-05-24Use an enum to represent screen orientation in the Project SettingsHugo Locurcio
- Tweak the setting property hint to be more informative. - Make the setting a "basic" setting so it appears when Advanced Settings is disabled. - Remove redundant orientation setting in the iOS export preset. The project setting is now used (like on Android). Projects upgrading from a previous version will have to set the screen orientation again in the Project Settings if it wasn't set to the default value ("landscape").
2021-05-06Tweak CanvasItem/material sampling property hints for readabilityHugo Locurcio
The "Anisotropic" term is abbreviated as spelling it out would cause the PopupMenu to overflow the editor window when using the default inspector width.