* 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.
* 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.
This removes the dependency on shared libmonosgen installed locally
and makes the artifacts usable as standalone for testing without
needing a full Mono install.
This makes it easier to spot syntax errors when editing the
class reference. The schema is referenced locally so validation
can still work offline.
Each class XML's schema conformance is also checked on GitHub Actions.
All iOS devices since the iPhone 5S support ARMv8 (64-bit).
The last iOS version supported on ARMv7 devices is 10.x, which is
too old to run Godot 4.0 projects since the minimum supported
iOS version is 11.0.
This prevents errors when encountering options which have been defined in newer
versions of clang-format, and are invalid in the YAML for the old version.
Bump minimum supported clang-format version to 12 (where `--Wno-error=unknown`
was added).
Use clang-format 12 on CI (13 is not available yet on the Ubuntu 20.04 images).
This will enforce that PRs properly sync the class reference templates to match
their changes to the public API, and help notice binding bugs in the process
(e.g. missing enum bindings, unexpected API changes or missing argument names).
This should also serve as a reminder to contributors that their changes impact
the scripting API and might warrant actually filling the descriptions for the
new methods/properties/etc.
A template for `jsdoc` that generat the HTML5 public classref.
The script can be run via `npm run docs` to print to stdout.
You can dry run via `npm run docs -- --d dry-run` or write to file via
`npm run docs -- -d /path/to/file.rst`
Also update Makefile in `doc/` and add dry run test to CI.
We often hit "Too Many Requests" errors when uploading the cache with
`actions/cache` because there's a limit of 10 GB every 5 minutes, and we can
easily go over it when we amend or merge several PRs in a short timespan.
This will make the CI artifacts less useful for debugging crashes but there's
no real way around this.
The Mono builds are with mono_glue=no so they're not usable,
and it would be convenient if the main tools=yes target=release_debug
artifacts could actually be used.
Applies to javascript files inside the platform library folder, the
exposed Engine code, and any javascript files in modules.
Files ending with ".externs.js" will be ignored, you can create a
".eslintignore" file to specify extra files to be ignored.
... on all platforms but MSVC, as it still has a number of unsolved warnings
in its `/Wall` level. Some of it might be valid, others might be overkill,
this needs further assessment and fixes. (We could also change the `extra`
level to `/W4` on MSVC if that's more meaningful.)
No need to waste time downloading all this when it's readily available :)
Also use the official action to setup Java 8.
Also build both architectures (armv7 and arm64v8) and generate the APK,
so we can upload it.
Remove now unused and outdated `misc/ci/android-tools-linux.sh`.
This keeps their size small and allows to compare size changes on templates
in PRs, as the template size is what is most relevant to users.
For editor builds we keep debug symbols so they can be used to debug crashes.
They've been moved to the @godotengine organization's .github
repository, which works as a fallback for all repositories in the
organization. This way, the Sponsor button is automatically displayed
on all repositories.
This closes#40972.
Emscripten is a fast-moving target which gets tons of improvements all the time,
but it's not rare that some regressions affect us and make our CI builds fail.
(See e.g. #33728, #35237, #39168, #40563, and #40914.)
Let's pin to a stable version to avoid having external factors impact our CI,
and update this version manually regularly in a PR to ensure that the new
version works well for us.
It's too hard to get compatibility between GNU and BSD sed,
so let's just use perl oneliners.
And improve it to also remove trailing tabs, not just spaces.
Until https://github.com/psf/black/pull/1328 makes it in a stable release,
we have to use the latest from Git.
Apply new style fixes done by latest black.
Implements exit codes into the engine so tests can return their statuses.
Ideally we don't do this, and we use FIXUP logic to 'begin' and 'end' the engine execution for tests specifically.
Since realistically we're initialising the engine here we don't want to do that, since String should not require an engine startup to test a single header.
This lowers the complexity of running the unit tests and even for
physics should be possible to implement such a fix.
The base branch is hardcoded as an env variable as I couldn't find a simple
way to just get either `3.2` or `master`. But it's easy to change when we
branch off from `master` to a new stable branch, which doesn't happen often.
(There's `{{github.base_ref}}` but it's probably more verbose like
`ref/heads/master`, and only valid for PRs.)
This was based on quarmin's initial configuration, we had compile issues with AppVeyor being super slow and GitHub actions will take less time and also manage a full rebuild in 30 minutes.
This adds cache handling and will work with MSVC and scons 4.0, it will build for every PR submitted to the Godot Engine, and also for the branches specified. I have tested the caching and it seems to be working.
I left the 'publish artefacts' disabled until we can request more storage from Microsoft, 5 GB is far to low for us and we would eat this limit very fast. (it is tested and works fine)
Co-authored-by: Rafał Mikrut <mikrutrafal54@gmail.com>
We now have a proper link to godotengine/godot-proposals thanks to
#39019 and #39132, so that hacky 'Don't open issues here' template
is no longer needed.
Keeping CONTRIBUTING.md at the root so that contributors actually find it.
Also changed the custom FUNDING.yml link to point to godotengine.org/donate,
which also links to PayPal and other options.