summaryrefslogtreecommitdiff
path: root/main/main.cpp
AgeCommit message (Collapse)Author
2020-05-25Add `custom_modules` build option to compile external user modulesAndrii Doroshenko (Xrayez)
This patch adds ability to include external, user-defined C++ modules to be compiled as part of Godot via `custom_modules` build option which can be passed to `scons`. ``` scons platform=x11 tools=yes custom_modules="../project/modules" ``` Features: - detects all available modules under `custom_modules` directory the same way as it does for built-in modules (not recursive); - works with both relative and absolute paths on the filesystem; - multiple search paths can be specified as a comma-separated list. Module custom documentation and editor icons collection and generation process is adapted to work with absolute paths needed by such modules. Also fixed doctool bug mixing absolute and relative paths respectively. Implementation details: - `env.module_list` is a dictionary now, which holds both module name as key and either a relative or absolute path to a module as a value. - `methods.detect_modules` is run twice: once for built-in modules, and second for external modules, all combined later. - `methods.detect_modules` was not doing what it says on the tin. It is split into `detect_modules` which collects a list of available modules and `write_modules` which generates `register_types` sources for each. - whether a module is built-in or external is distinguished by relative or absolute paths respectively. `custom_modules` scons converter ensures that the path is absolute even if relative path is supplied, including expanding user paths and symbolic links. - treats the parent directory as if it was Godot's base directory, so that there's no need to change include paths in cases where custom modules are included as dependencies in other modules.
2020-05-22Fix editor ignoring 'single_window_mode' with no main sceneIgnacio Etcheverry
Previously the editor would ignore the 'single_window_mode' editor setting if the edited project didn't have a main scene configured in the project settings.
2020-05-20Merge pull request #38874 from bruvzg/tab_drv_sel_40Rémi Verschelde
[Windows] Add tablet driver selection.
2020-05-20Merge pull request #38515 from Calinou/cli-scene-allow-res-tresRémi Verschelde
Allow `.res` and `.tres` extensions in the scene CLI positional argument
2020-05-20[Windows] Add tablet driver selection.bruvzg
2020-05-14Style: Enforce braces around if blocks and loopsRémi Verschelde
Using clang-tidy's `readability-braces-around-statements`. https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocksRémi Verschelde
Which means that reduz' beloved style which we all became used to will now be changed automatically to remove the first empty line. This makes us lean closer to 1TBS (the one true brace style) instead of hybridating it with some Allman-inspired spacing. There's still the case of braces around single-statement blocks that needs to be addressed (but clang-format can't help with that, but clang-tidy may if we agree about it). Part of #33027.
2020-05-12Support multiple debug protocols.Fabio Alessandrelli
2020-05-12Rename SSL certificate bundle setting to clarify the "overriding" aspectHugo Locurcio
This closes https://github.com/godotengine/godot-docs/issues/2531.
2020-05-10New lightmapperJuan Linietsky
-Added LocalVector (needed it) -Added stb_rect_pack (It's pretty cool, we could probably use it for other stuff too) -Fixes and changes all around the place -Added library for 128 bits fixed point (required for Delaunay3D)
2020-05-10Style: clang-format: Disable AllowShortIfStatementsOnASingleLineRémi Verschelde
Part of #33027, also discussed in #29848. Enforcing the use of brackets even on single line statements would be preferred, but `clang-format` doesn't have this functionality yet.
2020-05-06Allow `.res` and `.tres` extensions in the scene CLI positional argumentHugo Locurcio
This closes #35709.
2020-05-05[Windows] Add support for the WinTab API for pen input.bruvzg
2020-04-28Rename InputFilter back to InputRémi Verschelde
It changed name as part of the DisplayServer and input refactoring in #37317, with the rationale that input no longer goes through the main loop, so the previous Input singleton now only does filtering. But the gains in consistency are quite limited in the renaming, and it breaks compatibility for all scripts and tutorials that access the Input singleton via the scripting language. A temporary option was suggested to keep the scripting singleton named `Input` even if its type is `InputFilter`, but that adds inconsistency and breaks C#. Fixes godotengine/godot-proposals#639. Fixes #37319. Fixes #37690.
2020-04-20DocData: Keep Mono properties on non-Mono buildsRémi Verschelde
This doesn't make much sense API-wise, but it's important for the documentation workflow that the Mono and non-Mono builds produce the same output, otherwise we keep having non-Mono builds removing Mono properties and losing their descriptions. This is a terrible hack but it's ad hoc, and should be OK for the time being.
2020-04-20DocData: Skip unexposed classesRémi Verschelde
Properly expose classes that we actually want accessible.
2020-04-17Implement global and per instance shader uniforms.Juan Linietsky
Adds two keywords to shader language for uniforms: -'global' -'instance' This allows them to reference values outside the material.
2020-04-16Merge pull request #36868 from Calinou/improve-cli-script-error-messageRémi Verschelde
Tweak the error message when trying to run an invalid script from CLI
2020-04-10Ignore process serial number (`-psn_...`) command line argument passed by ↵bruvzg
macOS Gatekeeper.
2020-04-09Renaming all ARVR nodes to XRBastiaan Olij
2020-04-04Merge pull request #37391 from dreamsComeTrue/embedded-windows-modeRémi Verschelde
Expose 'Embedded Windows Mode' as Editor and Project Settings
2020-04-03Expose 'Embedded Windows Mode' as Editor and Project SettingsDominik 'dreamsComeTrue' Jasiński
2020-04-02Replace NULL with nullptrlupoDharkael
2020-03-27Renaming of servers for coherency.Juan Linietsky
VisualServer -> RenderingServer PhysicsServer -> PhysicsServer3D Physics2DServer -> PhysicsServer2D NavigationServer -> NavigationServer3D Navigation2DServer -> NavigationServer2D Also renamed corresponding files.
2020-03-27DisplayServer: Fix registration of GetRenderingDriversFunctionRémi Verschelde
Also improve `--help` output.
2020-03-26Add macOS DisplayServer implementation.bruvzg
Change global menu to use Callable, add support for check items and submenus.
2020-03-26Multiple changes to DisplayServerX11Mateo Kuruk Miccino
- Travis: Change x11 to linuxbsd - SCons: Change x11 plataform to linuxbsd - Plugins: Remove ; to avoid fallthrough warning - DisplayServerX11: Implement set_icon - DisplayServerX11: Fix X11 bug when a window was erased from windows map, all the changes from that erased windows are sending to the main window - DisplayServerX11: Reorder create_window commands - DisplayServerX11: Change every Size2 to Size2i and Rect2 to Rect2i where it belongs + More X11 fixes which have been integrated directly back into reduz's original commits while rebasing the branch.
2020-03-26Open sub-windows as embedded if the OS does not support themJuan Linietsky
2020-03-26Separate DisplayServer from OS on WindowsJuan Linietsky
2020-03-26Refactored input, goes all via windows now.Juan Linietsky
Also renamed Input to InputFilter because all it does is filter events.
2020-03-26Added a Window node, and made it the scene root.Juan Linietsky
Still a lot of work to do.
2020-03-26Effective DisplayServer separation, rename X11 -> LinuxBSDJuan Linietsky
2020-03-26Refactored Input, create DisplayServer and DisplayServerX11Juan Linietsky
2020-03-24Move DocData and Collada out of their subfoldersRémi Verschelde
Now that the unused DocDump was removed, the `editor/doc` subfolder is redundant. Similarly, there's no reason for Collada to have a subfolder for itself when glTF or OBJ don't.
2020-03-08Refactor ScriptDebugger.Fabio Alessandrelli
EngineDebugger is the new interface to access the debugger. It tries to be as agnostic as possible on the data that various subsystems can expose. It allows 2 types of interactions: - Profilers: A subsystem can register a profiler, assigning it a unique name. That name can be used to activate the profiler or add data to it. The registered profiler can be composed of up to 3 functions: - Toggle: called when the profiler is activated/deactivated. - Add: called whenever data is added to the debugger (via `EngineDebugger::profiler_add_frame_data`) - Tick: called every frame (during idle), receives frame times. - Captures: (Only relevant in remote debugger for now) A subsystem can register a capture, assigning it a unique name. When receiving a message, the remote debugger will check if it starts with `[prefix]:` and call the associated capture with name `prefix`. Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new profiler system. Port SceneDebugger and RemoteDebugger to the new capture system. The LocalDebugger also uses the new profiler system for scripts profiling.
2020-03-08ScriptDebuggerRemote use threadsFabio Alessandrelli
2020-03-06Tweak the error message when trying to run an invalid script from CLIHugo Locurcio
2020-02-26Merge pull request #36551 from AndreaCatania/navigation_destruction_flushRémi Verschelde
Flushes commands just before the navigation server is destroyed
2020-02-26Flushes commands just before the navigation server is destroyedAndrea Catania
2020-02-25Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.Juan Linietsky
- Renames PackedIntArray to PackedInt32Array. - Renames PackedFloatArray to PackedFloat32Array. - Adds PackedInt64Array and PackedFloat64Array. - Renames Variant::REAL to Variant::FLOAT for consistency. Packed arrays are for storing large amount of data and creating stuff like meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of memory. That said, many users requested the ability to have 64 bits packed arrays for their games, so this is just an optional added type. For Variant, the float datatype is always 64 bits, and exposed as `float`. We still have `real_t` which is the datatype that can change from 32 to 64 bits depending on a compile flag (not entirely working right now, but that's the idea). It affects math related datatypes and code only. Neither Variant nor PackedArray make use of real_t, which is only intended for math precision, so the term is removed from there to keep only float.
2020-02-21Huge Debugger/EditorDebugger refactor.Fabio Alessandrelli
2020-02-15Changed logic and optimized ObjectID in ObjectDB and Variant, removed RefPtr.Juan Linietsky
2020-02-13Remove obsolete GLES3 backendRémi Verschelde
Due to the port to Vulkan and complete redesign of the rendering backend, the `drivers/gles3` code is no longer usable in this state and is not planned to be ported to the new architecture. The GLES2 backend is kept (while still disabled and non-working) as it will eventually be ported to serve as the low-end renderer for Godot 4.0. Some GLES3 features might be selectively ported to the updated GLES2 backend if there's a need for them, and extensions we can use for that. So long, OpenGL driver bugs!
2020-02-11More GIProbe work and fixesJuan Linietsky
2020-02-11Rewrote large part of rendering, omni and spot shadows now work.Juan Linietsky
2020-02-11Yay very basic 3D (only white) finally shows.Juan Linietsky
2020-02-11Base 3D engine done, still untested, though.Juan Linietsky
2020-02-11Add runtime GLES2 / Vulkan context selection.bruvzg
2020-02-11Add static Vulkan loader.bruvzg
Initial Vulkan support for Windows. Initial Vulkan support for macOS.
2020-02-11Moved the shader source compilation code outside RenderingDevice and VulkanJuan Linietsky