mirror of
https://github.com/godotengine/godot.git
synced 2025-10-15 02:49:24 +00:00
Compare commits
228 Commits
cb7cd815ee
...
3.0.2-stab
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2ff3b08583 | ||
![]() |
6ab8fb04af | ||
![]() |
498d177cfe | ||
![]() |
06a60bb6ef | ||
![]() |
c0132f30c4 | ||
![]() |
649cb70ddb | ||
![]() |
65d214d3da | ||
![]() |
9ee98e999b | ||
![]() |
5bcc7f88b6 | ||
![]() |
93e99846b0 | ||
![]() |
5c2e554853 | ||
![]() |
c4468aef5d | ||
![]() |
f967334f53 | ||
![]() |
4132f2ea7e | ||
![]() |
262c97098d | ||
![]() |
cee20e24bd | ||
![]() |
87476c057a | ||
![]() |
53693e393d | ||
![]() |
3f7e036c4f | ||
![]() |
0aab429453 | ||
![]() |
61fd30c00e | ||
![]() |
44b206a3fa | ||
![]() |
675899a521 | ||
![]() |
61a9ef5d81 | ||
![]() |
9c27e4d885 | ||
![]() |
c800653c6f | ||
![]() |
3e931e258c | ||
![]() |
7e5a374825 | ||
![]() |
a850ebf352 | ||
![]() |
4e1d19b20c | ||
![]() |
d7430ef077 | ||
![]() |
17408bea9c | ||
![]() |
2c55064708 | ||
![]() |
42e82b9377 | ||
![]() |
a4b077a0ba | ||
![]() |
f6c65d9d15 | ||
![]() |
990bddcf36 | ||
![]() |
c730a6ce44 | ||
![]() |
115c0a7415 | ||
![]() |
87242c7b92 | ||
![]() |
4eb9ee9355 | ||
![]() |
48ed52184d | ||
![]() |
69274ef368 | ||
![]() |
039fc750d5 | ||
![]() |
58a7d78c22 | ||
![]() |
c0386f0124 | ||
![]() |
b6f958965b | ||
![]() |
dde14e15c6 | ||
![]() |
1ea805a4aa | ||
![]() |
3b96b3fd12 | ||
![]() |
e499b9b4b6 | ||
![]() |
8ea709a7a9 | ||
![]() |
f2e19a26f5 | ||
![]() |
be771e7165 | ||
![]() |
cb65617897 | ||
![]() |
bcbe7a8a6f | ||
![]() |
ae540c2efe | ||
![]() |
5f15642fde | ||
![]() |
17d7084780 | ||
![]() |
fe38b648b0 | ||
![]() |
ad325be5a0 | ||
![]() |
d69d58deea | ||
![]() |
34591f9451 | ||
![]() |
d79a7a2773 | ||
![]() |
05fec82f31 | ||
![]() |
370f84f41c | ||
![]() |
689dfcd9ec | ||
![]() |
46b594054c | ||
![]() |
07e2461995 | ||
![]() |
ca5f3b9f8d | ||
![]() |
3d804778fd | ||
![]() |
3e8c214a19 | ||
![]() |
e9d8dfbf0e | ||
![]() |
3687faa78f | ||
![]() |
eacd66e784 | ||
![]() |
b5f8c1a53b | ||
![]() |
f04cd405ac | ||
![]() |
f55b376d78 | ||
![]() |
fdac09a0aa | ||
![]() |
751806b5c7 | ||
![]() |
40018e995c | ||
![]() |
be6323d848 | ||
![]() |
29089b715d | ||
![]() |
7e89cc46dd | ||
![]() |
a86829211a | ||
![]() |
f01821b60a | ||
![]() |
245c11be08 | ||
![]() |
fa98637aca | ||
![]() |
723613dbc3 | ||
![]() |
99efa7ce62 | ||
![]() |
c7040f3218 | ||
![]() |
5975b44ded | ||
![]() |
8efb9c8cdd | ||
![]() |
75289b4017 | ||
![]() |
ccf27376a6 | ||
![]() |
23b9f09c58 | ||
![]() |
e1fc7776f6 | ||
![]() |
c6a96fc360 | ||
![]() |
4383fae5a4 | ||
![]() |
9cfcf102a0 | ||
![]() |
8dc946c89c | ||
![]() |
327fea741a | ||
![]() |
317cb336eb | ||
![]() |
83b76a8171 | ||
![]() |
70b082c0d9 | ||
![]() |
bbfec2a7cc | ||
![]() |
8849377f6d | ||
![]() |
149ffcb1a4 | ||
![]() |
fb4a784319 | ||
![]() |
8f231d82bb | ||
![]() |
cc280545dc | ||
![]() |
fa02b58b46 | ||
![]() |
000caef623 | ||
![]() |
b7faa76485 | ||
![]() |
a76dfe9c72 | ||
![]() |
a423adbee6 | ||
![]() |
c5b5fd61d4 | ||
![]() |
5bb269d01d | ||
![]() |
d5535d9357 | ||
![]() |
2714b851bf | ||
![]() |
2abbdcaa20 | ||
![]() |
9cba5ef772 | ||
![]() |
416cd9c8b8 | ||
![]() |
7a20495a80 | ||
![]() |
bafbd73b51 | ||
![]() |
ac6811c4fa | ||
![]() |
8372a404bb | ||
![]() |
5b04dcfabd | ||
![]() |
4b581104e7 | ||
![]() |
f49601a934 | ||
![]() |
3e6ab9f3d5 | ||
![]() |
9f9731da3a | ||
![]() |
18735ff6f2 | ||
![]() |
237cf72f89 | ||
![]() |
5c2b2ca95b | ||
![]() |
57f707f951 | ||
![]() |
2f87e7ffe9 | ||
![]() |
12da8dcdeb | ||
![]() |
c5388fb0cf | ||
![]() |
02e910275c | ||
![]() |
285f47f037 | ||
![]() |
9fb843db06 | ||
![]() |
4bdcee2b9d | ||
![]() |
fd033473c7 | ||
![]() |
a39930c5b9 | ||
![]() |
c94d8e6577 | ||
![]() |
eb5e5200cc | ||
![]() |
d54ac732ae | ||
![]() |
62fcd772be | ||
![]() |
150423203b | ||
![]() |
ef60123938 | ||
![]() |
0d03b5f162 | ||
![]() |
148e059940 | ||
![]() |
7af43c4ca3 | ||
![]() |
5b32be4701 | ||
![]() |
47b49200b0 | ||
![]() |
a7d7f763d0 | ||
![]() |
eda94419df | ||
![]() |
e6252bda5e | ||
![]() |
069658f1be | ||
![]() |
a0e59a7259 | ||
![]() |
82b9a13e0c | ||
![]() |
79ef5f92a9 | ||
![]() |
5d7867082d | ||
![]() |
fda35b3f42 | ||
![]() |
a0e9d751a3 | ||
![]() |
d4a70c6c08 | ||
![]() |
65aa9063c4 | ||
![]() |
9eb546e7ff | ||
![]() |
f031e2f665 | ||
![]() |
4bed14f69b | ||
![]() |
91692ce72a | ||
![]() |
05e97db6f2 | ||
![]() |
617bcd1b91 | ||
![]() |
34d8625d82 | ||
![]() |
79b931d093 | ||
![]() |
9173819b71 | ||
![]() |
8787850286 | ||
![]() |
2515d42a14 | ||
![]() |
1a9a40fe31 | ||
![]() |
eda3169cd1 | ||
![]() |
d7f73031fb | ||
![]() |
ba36ef5465 | ||
![]() |
41f9904e71 | ||
![]() |
a206d3d2fc | ||
![]() |
a6ca62ac79 | ||
![]() |
85dedc09a8 | ||
![]() |
9e7c3016d1 | ||
![]() |
906cf28dae | ||
![]() |
801b544ee1 | ||
![]() |
097f95993f | ||
![]() |
c04d868476 | ||
![]() |
50674dbe15 | ||
![]() |
71607d9198 | ||
![]() |
3548f71cc4 | ||
![]() |
a1455f6a03 | ||
![]() |
f64b68d870 | ||
![]() |
f1d26c1c72 | ||
![]() |
7f5fde6459 | ||
![]() |
611caa06a5 | ||
![]() |
3f6e8d70cf | ||
![]() |
40c779fb70 | ||
![]() |
532abf228c | ||
![]() |
248fea2a79 | ||
![]() |
7de47fbabb | ||
![]() |
62dc7ba82f | ||
![]() |
4a3a597377 | ||
![]() |
501880e9ba | ||
![]() |
bd02969263 | ||
![]() |
0fa4325153 | ||
![]() |
acf01c955f | ||
![]() |
0a75a38db4 | ||
![]() |
845f44b976 | ||
![]() |
77ee4ced30 | ||
![]() |
780a7a281b | ||
![]() |
5481ece976 | ||
![]() |
ef49c166f6 | ||
![]() |
77cc0a023b | ||
![]() |
1036a76bc5 | ||
![]() |
e44bef4404 | ||
![]() |
c77047d6a3 | ||
![]() |
a34afa3820 | ||
![]() |
77d27053c3 | ||
![]() |
187c40d64d | ||
![]() |
e69b30b276 | ||
![]() |
99e72894a2 | ||
![]() |
258119a9cf | ||
![]() |
3f6694b894 |
@@ -4,6 +4,7 @@ root = true
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = tab
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{cpp,hpp,c,h,mm}]
|
||||
trim_trailing_whitespace = true
|
||||
|
@@ -70,12 +70,14 @@ name is available.
|
||||
Joshua Grams (JoshuaGrams)
|
||||
Juan Linietsky (reduz)
|
||||
Julian Murgia (StraToN)
|
||||
Justo Delgado (mrcdk)
|
||||
Kostadin Damyanov (Max-Might)
|
||||
Leon Krause (eska014)
|
||||
Marc Gilleron (Zylann)
|
||||
Marcelo Fernandez (marcelofg55)
|
||||
Mariano Javier Suligoy (MarianoGnu)
|
||||
Mario Schlack (hurikhan)
|
||||
Martin Sjursen (binbitten)
|
||||
Masoud BH (masoudbh3)
|
||||
Matthias Hölzl (hoelzl)
|
||||
Max Hilbrunner (mhilbrunner)
|
||||
@@ -85,8 +87,10 @@ name is available.
|
||||
Ovnuniarchos
|
||||
Patrick (firefly2442)
|
||||
Paul Batty (Paulb23)
|
||||
Paul Joannon (paulloz)
|
||||
Pawel Kowal (pkowal1982)
|
||||
Pedro J. Estébanez (RandomShaper)
|
||||
Pieter-Jan Briers (PJB3005)
|
||||
Poommetee Ketson (Noshyaar)
|
||||
Przemysław Gołąb (n-pigeon)
|
||||
Ralf Hölzemer (rollenrolm)
|
||||
|
218
CHANGELOG.md
Normal file
218
CHANGELOG.md
Normal file
@@ -0,0 +1,218 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
## [3.0.2] - 2018-03-03
|
||||
|
||||
### Added
|
||||
|
||||
- Mono: We now display stack traces for inner exceptions.
|
||||
- Mono: Bundle mscorlib.dll with Godot to improve portability.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Running a scene from a project with a main scene now works again (regression in 3.0.1).
|
||||
- Correct line spacing in RichTextLabel (regression in 3.0.1).
|
||||
- TextureProgress now correctly displays when progress > 62 (regression in 3.0.1).
|
||||
- The editor no longer complains about using an enum from an autoloaded resource (regression in 3.0.1).
|
||||
- Pressing Escape no longer closes unexpected subwindows (regression in 3.0.1).
|
||||
- Fix spelling of `apply_torque_impulse()` and deprecate the misspelled method.
|
||||
- Gizmos are now properly hidden on scene load if the object they control is hidden.
|
||||
- Remove spurious errors when using a PanoramaSky without textures.
|
||||
- Show tooltips in the editor when physics object picking is disabled.
|
||||
- Fix a serialization bug that could cause tscn files to grow very large.
|
||||
- Do not show the project manager unless no project was found at all.
|
||||
- The animation editor time offset indicator no longer 'walks' when resizing the editor.
|
||||
- Allow creation of an in-tscn file GDScript function even if the filename suggested already exists.
|
||||
- Mono: Godot no longer crashes when opening a project created with an older release.
|
||||
- Mono: Fix builds of tools=no builds.
|
||||
- Mono: Fix transformation regression since 3.0.1
|
||||
- Android: We now require GLESv3 support in the manifest.
|
||||
- Android: Fix intermittent audio driver crash.
|
||||
|
||||
## [3.0.1] - 2018-02-25
|
||||
|
||||
### Added
|
||||
|
||||
- The 'server' platform is back as it was in Godot 2.1.
|
||||
- It is now again possible to run a headless Godot on Linux.
|
||||
- New CLI options
|
||||
- --build-solutions: build C# solutions without starting the editor.
|
||||
- --quit: quit the engine after the first main loop iteration.
|
||||
- It is now possible to scale an .obj mesh when importing.
|
||||
- Type icons can now be enabled in the editor again.
|
||||
- New GLSL built-in functions in the shader language
|
||||
- radians
|
||||
- degrees
|
||||
- asinh
|
||||
- acosh
|
||||
- atanh
|
||||
- exp2
|
||||
- log2
|
||||
- roundEven
|
||||
- New GDScript features
|
||||
- `OS.center_window()`.
|
||||
- `StreamPeerTCP.set_no_delay()`.
|
||||
- `EditorPlugin.remove_control_from_container()`.
|
||||
- A button has been added to the debugger to copy the error messages.
|
||||
- The Ctrl toggles snapping in the 3D viewport.
|
||||
- Support has been added for a new .escn, for use with the new Blender exporter.
|
||||
- CA certificates have been updated to the latest Mozilla bundle.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Copy/pasting from the editor on X11 will now work more reliably.
|
||||
- The lightmap baker will now use all available cores on Windows.
|
||||
- Fixed missing text in some FileDialog buttons.
|
||||
- Fixes to HTTP requests on the HTML5 platform.
|
||||
- Many, many fixes and improvements to C# support (including a [Signal] attribute).
|
||||
- Static linking of `libgcc_s` as well as `libstdc++` for better Linux binary portability.
|
||||
- Fix broken APK expansion on Android.
|
||||
- Several crashes in the editor have been fixed.
|
||||
- Many documentation fixes.
|
||||
- Several hiDPI fixes.
|
||||
|
||||
## Changed
|
||||
|
||||
- Bullet physics now correctly calculates effective gravity on KinematicBodies.
|
||||
- Setting the color `v` member now correctly sets the `s` member.
|
||||
- RichTextLabels now correctly determine the baseline for all fonts.
|
||||
- SpinBoxes now correctly calculate their initial size.
|
||||
- OGG streams now correctly signal the end of playback.
|
||||
|
||||
## [3.0] - 2018-01-29
|
||||
|
||||
### Added
|
||||
|
||||
- Physically-based renderer using OpenGL ES 3.0.
|
||||
- Uses the Disney PBR model, with clearcoat, sheen and anisotropy parameters available.
|
||||
- Uses a forward renderer, supporting multi-sample anti-aliasing (MSAA).
|
||||
- Parallax occlusion mapping.
|
||||
- Reflection probes.
|
||||
- Screen-space reflections.
|
||||
- Real-time global illumination using voxel cone tracing (GIProbe).
|
||||
- Proximity fade and distance fade (useful for creating soft particles and various effects).
|
||||
- [Lightmapper](https://godotengine.org/article/introducing-new-last-minute-lightmapper) for lower-end desktop and mobile platforms, as an alternative to GIProbe.
|
||||
- New SpatialMaterial resource, replacing FixedMaterial.
|
||||
- Multiple passes can now be specified (with an optional "grow" property), allowing for effects such as cel shading.
|
||||
- Brand new 3D post-processing system.
|
||||
- Depth of field (near and far).
|
||||
- Fog, supporting light transmittance, sun-oriented fog, depth fog and height fog.
|
||||
- Tonemapping and Auto-exposure.
|
||||
- Screen-space ambient occlusion.
|
||||
- Multi-stage glow and bloom, supporting optional bicubic upscaling for better quality.
|
||||
- Color grading and various adjustments.
|
||||
- Rewritten audio engine from scratch.
|
||||
- Supports audio routing with arbitrary number of channels, including Area-based audio redirection ([video](https://youtu.be/K2XOBaJ5OQ0)).
|
||||
- More than a dozen of audio effects included.
|
||||
- Rewritten 3D physics using [Bullet](http://bulletphysics.org/).
|
||||
- UDP-based high-level networking API using [ENet](http://enet.bespin.org/).
|
||||
- IPv6 support for all of the engine's networking APIs.
|
||||
- Visual scripting.
|
||||
- Rewritten import system.
|
||||
- Assets are now referenced with their source files, then imported in a transparent manner by the engine.
|
||||
- Imported assets are now cached in a `.import` directory, making distribution and versioning easier.
|
||||
- Support for ETC2 compression.
|
||||
- Support for uncompressed Targa (.tga) textures, allowing for faster importing.
|
||||
- Rewritten export system.
|
||||
- GPU-based texture compression can now be tweaked per-target.
|
||||
- Support for exporting resource packs to build DLC / content addons.
|
||||
- Improved GDScript.
|
||||
- Pattern matching using the `match` keyword.
|
||||
- `$` shorthand for `get_node()`.
|
||||
- Setters and getters for node properties.
|
||||
- Underscores in number literals are now allowed for improved readability (for example,`1_000_000`).
|
||||
- Improved performance (+20% to +40%, based on various benchmarks).
|
||||
- [Feature tags](http://docs.godotengine.org/en/latest/learning/workflow/export/feature_tags.html) in the Project Settings, for custom per-platform settings.
|
||||
- Full support for the [glTF 2.0](https://www.khronos.org/gltf/) 3D interchange format.
|
||||
- Freelook and fly navigation to the 3D editor.
|
||||
- Built-in editor logging (logging standard output to a file), disabled by default.
|
||||
- Improved, more intuitive file chooser in the editor.
|
||||
- Smoothed out 3D editor zooming, panning and movement.
|
||||
- Toggleable rendering information box in the 3D editor viewport.
|
||||
- FPS display can also be enabled in the editor viewport.
|
||||
- Ability to render the 3D editor viewport at half resolution to achieve better performance.
|
||||
- GDNative for binding languages like C++ to Godot as dynamic libraries.
|
||||
- Community bindings for [D](https://github.com/GodotNativeTools/godot-d), [Nim](https://github.com/pragmagic/godot-nim) and [Python](https://github.com/touilleMan/godot-python) are available.
|
||||
- Editor settings and export templates are now versioned, making it easier to use several Godot versions on the same system.
|
||||
- Optional soft shadows for 2D rendering.
|
||||
- HDR sky support.
|
||||
- Ability to toggle V-Sync while the project is running.
|
||||
- Panorama sky support (sphere maps).
|
||||
- Support for WebM videos (VP8/VP9 with Vorbis/Opus).
|
||||
- Exporting to HTML5 using WebAssembly.
|
||||
- C# support using Mono.
|
||||
- The Mono module is disabled by default, and needs to be compiled in at build-time.
|
||||
- The latest Mono version (5.4) can be used, fully supporting C# 7.0.
|
||||
- Support for rasterizing SVG to images on-the-fly, using the nanosvg library.
|
||||
- Editor icons are now in SVG format, making them better-looking at non-integer scales.
|
||||
- Due to the library used, only simpler SVGs are well-supported, more complex SVGs may not render correctly.
|
||||
- Support for oversampling DynamicFonts, keeping them sharp when scaled to high resolutions.
|
||||
- Improved StyleBoxFlat.
|
||||
- Border widths can now be set per-corner.
|
||||
- Support for anti-aliased rounded and beveled corners.
|
||||
- Support for soft drop shadows.
|
||||
- VeryLoDPI (75%) and MiDPI (150%) scaling modes for the editor.
|
||||
- Improved internationalization support for projects.
|
||||
- Language changes are now effective without reloading the current scene.
|
||||
- Implemented missing features in the HTML5 platform.
|
||||
- Cursor style changes.
|
||||
- Cursor capturing and hiding.
|
||||
- Improved styling and presentation of HTML5 exports.
|
||||
- A spinner is now displayed during loading.
|
||||
- Rewritten the 2D and 3D particle systems.
|
||||
- Particles are now GPU-based, allowing their use in much higher quantities than before.
|
||||
- Meshes can now be used as particles.
|
||||
- Particles can now be emitted from a mesh's shape.
|
||||
- Properties can now be modified over time using an editable curve.
|
||||
- Custom particle shaders can now be used.
|
||||
- New editor theme, with customizable base color, highlight color and contrast.
|
||||
- A light editor theme option is now available, with icons suited to light backgrounds.
|
||||
- Alternative dark gray and Arc colors are available out of the box.
|
||||
- New adaptive text editor theme, adjusting automatically based on the editor colors.
|
||||
- Support for macOS trackpad gestures in the editor.
|
||||
- Exporting to macOS now creates a `.dmg` disk image if exporting from an editor running on macOS.
|
||||
- Signing the macOS export now is possible if running macOS (requires a valid code signing certificate).
|
||||
- Exporting to Windows now changes the exported project's icon using `rcedit` (requires WINE if exporting from Linux or macOS).
|
||||
- Improved build system.
|
||||
- Support for compiling using Visual Studio 2017.
|
||||
- [SCons](http://scons.org/) 3.0 and Python 3 are now supported (SCons 2.5 and Python 2.7 still work).
|
||||
- Link-time optimization can now be enabled by passing `use_lto=yes` to the SCons command line.
|
||||
- Produces faster and sometimes smaller binaries.
|
||||
- Currently only supported with GCC and MSVC.
|
||||
- Added a progress percentage when compiling Godot.
|
||||
- `.zip` archives are automatically created when compiling HTML5 export templates.
|
||||
- Easier and more powerful way to create editor plugins with EditorPlugin and related APIs.
|
||||
|
||||
### Changed
|
||||
|
||||
- Increased the default low-processor-usage mode FPS limit (60 → 125).
|
||||
- This makes the editor smoother and more responsive.
|
||||
- Increased the default 3D editor camera's field of view (55 → 70).
|
||||
- Increased the default 3D Camera node's field of view (65 → 70).
|
||||
- Changed the default editor font (Droid Sans → [Noto Sans](https://www.google.com/get/noto/)).
|
||||
- Changed the default script editor font (Source Code Pro → [Hack](http://sourcefoundry.org/hack/))
|
||||
- Renamed `engine.cfg` to `project.godot`.
|
||||
- This allows users to open a project by double-clicking the file if Godot is associated to `.godot` files.
|
||||
- Some methods from the `OS` singleton were moved to the new `Engine` singleton.
|
||||
- Switched from [GLEW](http://glew.sourceforge.net/) to [GLAD](http://glad.dav1d.de/) for OpenGL wrapping.
|
||||
- Changed the SCons build flag for simple logs (`colored=yes` → `verbose=no`).
|
||||
- The HTML5 platform now uses WebGL 2.0 (instead of 1.0).
|
||||
- Redesigned the Godot logo to be more legible at small sizes.
|
||||
|
||||
### Deprecated
|
||||
|
||||
- `opacity` and `self_opacity` are replaced by `modulate` and `self_modulate` in all 2D nodes, allowing for full color changes in addition to opacity changes.
|
||||
|
||||
### Removed
|
||||
|
||||
- Skybox support.
|
||||
- Replaced with panorama skies, which are easier to import.
|
||||
- Opus audio codec support.
|
||||
- This is due to the way the new audio engine is designed.
|
||||
- HTML5 export using asm.js.
|
||||
- Only WebAssembly is supported now, since all browsers supporting WebGL 2.0 also support WebAssembly.
|
||||
|
||||
[3.0]: https://github.com/godotengine/godot/compare/2.1-stable...3.0-stable
|
94
DONORS.md
94
DONORS.md
@@ -18,24 +18,29 @@ generous deed immortalized in the next stable release of Godot Engine.
|
||||
|
||||
Gamblify <https://www.gamblify.com>
|
||||
GameDev.TV <https://www.gamedev.tv>
|
||||
Skirmish <https://skirmish.io>
|
||||
|
||||
## Mini sponsors
|
||||
|
||||
Andreas
|
||||
Brandon Lamb
|
||||
Christian Uldall Pedersen
|
||||
Christopher Igoe
|
||||
Christoph Woinke
|
||||
codetrotter
|
||||
E Hewert
|
||||
Hein-Pieter van Braam
|
||||
Jamal Alyafei
|
||||
Jordan M Lucas
|
||||
Jay Sistar
|
||||
Matthieu Huvé
|
||||
Nathan Warden
|
||||
Neal Gompa (Conan Kudo)
|
||||
Pascal Julien
|
||||
Ruslan Mustakov
|
||||
Sébastien Manin
|
||||
Slobodan Milnovic
|
||||
Stephan Lanfermann
|
||||
Stoney Meyerhoeffer
|
||||
Thomas Mathews
|
||||
|
||||
## Gold donors
|
||||
@@ -50,62 +55,76 @@ generous deed immortalized in the next stable release of Godot Engine.
|
||||
Rémi Verschelde
|
||||
Zaven Muradyan
|
||||
|
||||
Allen Schade
|
||||
Andreas Schüle
|
||||
Austen McRae
|
||||
Benjamin Botwin
|
||||
Bernhard Liebl
|
||||
Cody Brocious
|
||||
Gerald E Butler
|
||||
Jahn Johansen
|
||||
Johannes Wuensch
|
||||
Josep G. Camarasa
|
||||
Kris Michael
|
||||
Libre-Dépanne
|
||||
Mike King
|
||||
Ranoller
|
||||
Rob Messick
|
||||
Svenne Krap
|
||||
Timothy Hagberg
|
||||
|
||||
BanjoNode2D
|
||||
Brandon
|
||||
Chris Serino
|
||||
Conrad Curry
|
||||
Craig Smith
|
||||
David Churchill
|
||||
Dean Harmon
|
||||
Dexter Miguel
|
||||
Garrett Dockins
|
||||
Guilherme Felipe de C. G. da Silva
|
||||
Harman Bains
|
||||
Henrique Alves
|
||||
Karsten Bock
|
||||
Laurence Bannister
|
||||
Przemysław Gołąb (n-pigeon)
|
||||
Rami
|
||||
Robert Willes
|
||||
Robin Arys
|
||||
ScottMakesGames
|
||||
summerblind
|
||||
Testus Maximus
|
||||
Thomas Bjarnelöf
|
||||
Wojciech Chojnacki
|
||||
Xavier Tan
|
||||
Zaq Poi
|
||||
|
||||
Alexey Dyadchenko
|
||||
Amanda Haldy
|
||||
Andreas Haas
|
||||
Arnaud Verstuyf
|
||||
Chris Brown
|
||||
Chris Wilson
|
||||
Cody Parker
|
||||
D
|
||||
Daniel Eliasinski
|
||||
Daniel Langegger
|
||||
Eric Monson
|
||||
Ezra Theunissen
|
||||
flesk
|
||||
François Cantin
|
||||
Giovanni Solimeno
|
||||
G Barnes
|
||||
GGGames.org
|
||||
Heath Hayes
|
||||
Jeppe Zapp
|
||||
Jeremi Biernacki
|
||||
joe513
|
||||
Jordan M Lucas
|
||||
Juraj Móza
|
||||
Justin Arnold
|
||||
Justo Delgado Baudí
|
||||
Leandro Voltolino
|
||||
Lucien Boudy
|
||||
Lisandro Lorea
|
||||
Markus Wiesner
|
||||
Marty Plumbo
|
||||
Marvin
|
||||
Nick Nikitin
|
||||
Pablo Cholaky
|
||||
Patrick Schnorbus
|
||||
Pete Goodwin
|
||||
Ryan Estes
|
||||
Phyronnaz
|
||||
Ted
|
||||
Travis Womack
|
||||
Trent McPheron
|
||||
@@ -113,85 +132,107 @@ generous deed immortalized in the next stable release of Godot Engine.
|
||||
## Silver donors
|
||||
|
||||
1D_Inc
|
||||
Adam Carr
|
||||
Adam Smeltzer
|
||||
Alder Stefano
|
||||
Alessandro Senese
|
||||
Alex Barsukov
|
||||
Álvaro Domínguez López
|
||||
Andres Cuevas
|
||||
Andrea Badii
|
||||
Andrew Thomas
|
||||
Anthony Bongiovanni
|
||||
Arda Erol
|
||||
Arthur S. Muszynski
|
||||
Avencherus
|
||||
Bastian Böhm
|
||||
Benedikt
|
||||
Benjamin Beshara
|
||||
Ben Vercammen
|
||||
Blair Allen
|
||||
Bryan Crow
|
||||
Bryanna M
|
||||
Bryan Stevenson
|
||||
Carwyn Edwards
|
||||
Casey Foote
|
||||
Chris Chapin
|
||||
Christian Baune
|
||||
Christian Winter
|
||||
Collin Shooltz
|
||||
Daniel Egger
|
||||
Daniel Kaplan
|
||||
Daniel Langegger
|
||||
Daniel Mircea
|
||||
David Cravens
|
||||
David May
|
||||
Diego Moreira Guimarães
|
||||
Dominik Wetzel
|
||||
Eric Martini
|
||||
Fabian Becker
|
||||
fengjiongmax
|
||||
Francesco Lisi
|
||||
Fredy Romero Sam
|
||||
G3Dev sàrl
|
||||
Geequlim
|
||||
Gerrit Großkopf
|
||||
Gerrit Procee
|
||||
Gilberto K. Otubo
|
||||
Guldoman
|
||||
HardRound
|
||||
HeartBeast
|
||||
Heribert Hirth
|
||||
Hunter Jones
|
||||
ialex32x
|
||||
Jaime Ruiz-Borau Vizárraga
|
||||
Jed Rose
|
||||
Jeff Hungerford
|
||||
Jerry Chen
|
||||
Jesse Liles
|
||||
Joel Fivat
|
||||
Johannes du Randt
|
||||
Jonas Yamazaki
|
||||
Jonathan Martin
|
||||
Jonathan Nieto
|
||||
Jonathon
|
||||
Josh 'Cheeseness' Bush
|
||||
Juan Negrier
|
||||
Judd
|
||||
JuDelCo
|
||||
Julian Murgia
|
||||
Juraj Móza
|
||||
Karonis
|
||||
Justin Luk
|
||||
KC Chan
|
||||
Kevin Boyer
|
||||
Kevin Kamper Meejach Petersen
|
||||
Klavdij Voncina
|
||||
Lars pfeffer
|
||||
Linus Lind Lundgren
|
||||
Lisandro Lorea
|
||||
magodev
|
||||
Martin Eigel
|
||||
Martin Novák
|
||||
Matthew Fitzpatrick
|
||||
Matthias Hölzl
|
||||
Max R.R. Collada
|
||||
memoryruins
|
||||
mhilbrunner
|
||||
Michael Dürwald
|
||||
Michael Gringauz
|
||||
Michael Labbe
|
||||
Mikael Olsson
|
||||
MoM
|
||||
monokrome
|
||||
Moritz Laass
|
||||
nee
|
||||
Neil Blakey-Milner
|
||||
Niclas Eriksen
|
||||
Nik Lee
|
||||
Niko Leopold
|
||||
nivardus
|
||||
Noi Sek
|
||||
Oleg Tyshchenko
|
||||
Pablo Seibelt
|
||||
Pan Ip
|
||||
Pat LaBine
|
||||
Patrick Nafarrete
|
||||
Patric Vormstein
|
||||
Paul Mason
|
||||
Paweł Kowal
|
||||
Pedro Luz
|
||||
Pierre-Igor Berthet
|
||||
Pietro Vertechi
|
||||
Piotr Kaczmarski
|
||||
Richman Stewart
|
||||
Rodolfo Baeza
|
||||
Roger Burgess
|
||||
@@ -200,13 +241,16 @@ generous deed immortalized in the next stable release of Godot Engine.
|
||||
Sasori Olkof
|
||||
Scott D. Yelich
|
||||
Sootstone
|
||||
Stephen Traskal
|
||||
Theo Cranmore
|
||||
Thomas Norman
|
||||
Thibault Barbaroux
|
||||
Thomas Bell
|
||||
Thomas Herzog & Xananax
|
||||
Tom Larrow
|
||||
Tyler Stafos
|
||||
UltyX
|
||||
Victor Holt
|
||||
Wout Standaert
|
||||
Xananax & karroffel
|
||||
Yu He
|
||||
|
||||
## Bronze donors
|
||||
|
||||
|
18
SConstruct
18
SConstruct
@@ -161,11 +161,11 @@ opts.Add(BoolVariable('xml', "XML format support for resources", True))
|
||||
|
||||
# Advanced options
|
||||
opts.Add(BoolVariable('disable_3d', "Disable 3D nodes for smaller executable", False))
|
||||
opts.Add(BoolVariable('disable_advanced_gui', "Disable advance 3D gui nodes and behaviors", False))
|
||||
opts.Add(BoolVariable('disable_advanced_gui', "Disable advanced 3D gui nodes and behaviors", False))
|
||||
opts.Add('extra_suffix', "Custom extra suffix added to the base filename of all generated binary files", '')
|
||||
opts.Add('unix_global_settings_path', "UNIX-specific path to system-wide settings. Currently only used for templates", '')
|
||||
opts.Add(BoolVariable('verbose', "Enable verbose output for the compilation", False))
|
||||
opts.Add(BoolVariable('vsproj', "Generate Visual Studio Project.", False))
|
||||
opts.Add(BoolVariable('vsproj', "Generate Visual Studio Project", False))
|
||||
opts.Add(EnumVariable('warnings', "Set the level of warnings emitted during compilation", 'no', ('extra', 'all', 'moderate', 'no')))
|
||||
opts.Add(BoolVariable('progress', "Show a progress indicator during build", True))
|
||||
opts.Add(BoolVariable('dev', "If yes, alias for verbose=yes warnings=all", False))
|
||||
@@ -445,7 +445,7 @@ if selected_platform in platform_list:
|
||||
if not env['verbose']:
|
||||
methods.no_verbose(sys, env)
|
||||
|
||||
if (True): # FIXME: detect GLES3
|
||||
if (not env["platform"] == "server"): # FIXME: detect GLES3
|
||||
env.Append( BUILDERS = { 'GLES3_GLSL' : env.Builder(action = methods.build_gles3_headers, suffix = 'glsl.gen.h',src_suffix = '.glsl') } )
|
||||
|
||||
scons_cache_path = os.environ.get("SCONS_CACHE")
|
||||
@@ -498,7 +498,6 @@ screen = sys.stdout
|
||||
node_count = 0
|
||||
node_count_max = 0
|
||||
node_count_interval = 1
|
||||
node_pruning = 8 # Number of nodes to process before prunning the cache
|
||||
if ('env' in locals()):
|
||||
node_count_fname = str(env.Dir('#')) + '/.scons_node_count'
|
||||
# Progress reporting is not available in non-TTY environments since it
|
||||
@@ -513,17 +512,15 @@ import time, math
|
||||
class cache_progress:
|
||||
# The default is 1 GB cache and 12 hours half life
|
||||
def __init__(self, path = None, limit = 1073741824, half_life = 43200):
|
||||
global node_pruning
|
||||
self.path = path
|
||||
self.limit = limit
|
||||
self.exponent_scale = math.log(2) / half_life
|
||||
if env['verbose'] and path != None:
|
||||
screen.write('Current cache limit is ' + self.convert_size(limit) + ' (used: ' + self.convert_size(self.get_size(path)) + ')\n')
|
||||
self.pruning = node_pruning
|
||||
self.delete(self.file_list())
|
||||
|
||||
def __call__(self, node, *args, **kw):
|
||||
global node_count, node_count_max, node_count_interval, node_count_fname, node_pruning, show_progress
|
||||
global node_count, node_count_max, node_count_interval, node_count_fname, show_progress
|
||||
if show_progress:
|
||||
# Print the progress percentage
|
||||
node_count += node_count_interval
|
||||
@@ -536,11 +533,6 @@ class cache_progress:
|
||||
else:
|
||||
screen.write('\r[Initial build] ')
|
||||
screen.flush()
|
||||
# Prune if the number of nodes processed is 'node_pruning' or bigger
|
||||
self.pruning -= node_count_interval
|
||||
if self.pruning <= 0:
|
||||
self.pruning = node_pruning
|
||||
self.delete(self.file_list())
|
||||
|
||||
def delete(self, files):
|
||||
if len(files) == 0:
|
||||
@@ -548,7 +540,7 @@ class cache_progress:
|
||||
if env['verbose']:
|
||||
# Utter something
|
||||
screen.write('\rPurging %d %s from cache...\n' % (len(files), len(files) > 1 and 'files' or 'file'))
|
||||
map(os.remove, files)
|
||||
[os.remove(f) for f in files]
|
||||
|
||||
def file_list(self):
|
||||
if self.path == None:
|
||||
|
@@ -264,6 +264,10 @@ Size2 _OS::get_window_size() const {
|
||||
return OS::get_singleton()->get_window_size();
|
||||
}
|
||||
|
||||
Size2 _OS::get_real_window_size() const {
|
||||
return OS::get_singleton()->get_real_window_size();
|
||||
}
|
||||
|
||||
void _OS::set_window_size(const Size2 &p_size) {
|
||||
OS::get_singleton()->set_window_size(p_size);
|
||||
}
|
||||
@@ -929,6 +933,11 @@ void _OS::request_attention() {
|
||||
OS::get_singleton()->request_attention();
|
||||
}
|
||||
|
||||
void _OS::center_window() {
|
||||
|
||||
OS::get_singleton()->center_window();
|
||||
}
|
||||
|
||||
bool _OS::is_debug_build() const {
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
@@ -1017,6 +1026,8 @@ void _OS::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_window_maximized", "enabled"), &_OS::set_window_maximized);
|
||||
ClassDB::bind_method(D_METHOD("is_window_maximized"), &_OS::is_window_maximized);
|
||||
ClassDB::bind_method(D_METHOD("request_attention"), &_OS::request_attention);
|
||||
ClassDB::bind_method(D_METHOD("get_real_window_size"), &_OS::get_real_window_size);
|
||||
ClassDB::bind_method(D_METHOD("center_window"), &_OS::center_window);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_borderless_window", "borderless"), &_OS::set_borderless_window);
|
||||
ClassDB::bind_method(D_METHOD("get_borderless_window"), &_OS::get_borderless_window);
|
||||
|
@@ -155,6 +155,7 @@ public:
|
||||
virtual Point2 get_window_position() const;
|
||||
virtual void set_window_position(const Point2 &p_position);
|
||||
virtual Size2 get_window_size() const;
|
||||
virtual Size2 get_real_window_size() const;
|
||||
virtual void set_window_size(const Size2 &p_size);
|
||||
virtual void set_window_fullscreen(bool p_enabled);
|
||||
virtual bool is_window_fullscreen() const;
|
||||
@@ -165,6 +166,7 @@ public:
|
||||
virtual void set_window_maximized(bool p_enabled);
|
||||
virtual bool is_window_maximized() const;
|
||||
virtual void request_attention();
|
||||
virtual void center_window();
|
||||
|
||||
virtual void set_borderless_window(bool p_borderless);
|
||||
virtual bool get_borderless_window() const;
|
||||
|
@@ -207,6 +207,47 @@ MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12) {
|
||||
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(12);
|
||||
md.args[0] = StaticCString::create(p_arg1);
|
||||
md.args[1] = StaticCString::create(p_arg2);
|
||||
md.args[2] = StaticCString::create(p_arg3);
|
||||
md.args[3] = StaticCString::create(p_arg4);
|
||||
md.args[4] = StaticCString::create(p_arg5);
|
||||
md.args[5] = StaticCString::create(p_arg6);
|
||||
md.args[6] = StaticCString::create(p_arg7);
|
||||
md.args[7] = StaticCString::create(p_arg8);
|
||||
md.args[8] = StaticCString::create(p_arg9);
|
||||
md.args[9] = StaticCString::create(p_arg10);
|
||||
md.args[10] = StaticCString::create(p_arg11);
|
||||
md.args[11] = StaticCString::create(p_arg12);
|
||||
return md;
|
||||
}
|
||||
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12, const char *p_arg13) {
|
||||
|
||||
MethodDefinition md;
|
||||
md.name = StaticCString::create(p_name);
|
||||
md.args.resize(13);
|
||||
md.args[0] = StaticCString::create(p_arg1);
|
||||
md.args[1] = StaticCString::create(p_arg2);
|
||||
md.args[2] = StaticCString::create(p_arg3);
|
||||
md.args[3] = StaticCString::create(p_arg4);
|
||||
md.args[4] = StaticCString::create(p_arg5);
|
||||
md.args[5] = StaticCString::create(p_arg6);
|
||||
md.args[6] = StaticCString::create(p_arg7);
|
||||
md.args[7] = StaticCString::create(p_arg8);
|
||||
md.args[8] = StaticCString::create(p_arg9);
|
||||
md.args[9] = StaticCString::create(p_arg10);
|
||||
md.args[10] = StaticCString::create(p_arg11);
|
||||
md.args[11] = StaticCString::create(p_arg12);
|
||||
md.args[12] = StaticCString::create(p_arg13);
|
||||
return md;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
ClassDB::APIType ClassDB::current_api = API_CORE;
|
||||
@@ -306,7 +347,7 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
|
||||
OBJTYPE_RLOCK;
|
||||
#ifdef DEBUG_METHODS_ENABLED
|
||||
|
||||
uint64_t hash = hash_djb2_one_64(HashMapHasherDefault::hash(VERSION_FULL_NAME));
|
||||
uint64_t hash = hash_djb2_one_64(HashMapHasherDefault::hash(VERSION_FULL_CONFIG));
|
||||
|
||||
List<StringName> names;
|
||||
|
||||
|
@@ -68,6 +68,8 @@ MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12);
|
||||
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11, const char *p_arg12, const char *p_arg13);
|
||||
|
||||
#else
|
||||
|
||||
|
@@ -55,7 +55,7 @@
|
||||
#define _COMMA_11 ,
|
||||
#define _COMMA_12 ,
|
||||
|
||||
// 1-based comma separed list of ITEMs
|
||||
// 1-based comma separated list of ITEMs
|
||||
#define COMMA_SEP_LIST(ITEM, LENGTH) _COMMA_SEP_LIST_##LENGTH(ITEM)
|
||||
#define _COMMA_SEP_LIST_12(ITEM) \
|
||||
_COMMA_SEP_LIST_11(ITEM) \
|
||||
@@ -95,7 +95,7 @@
|
||||
ITEM(1)
|
||||
#define _COMMA_SEP_LIST_0(ITEM)
|
||||
|
||||
// 1-based semicolon separed list of ITEMs
|
||||
// 1-based semicolon separated list of ITEMs
|
||||
#define SEMIC_SEP_LIST(ITEM, LENGTH) _SEMIC_SEP_LIST_##LENGTH(ITEM)
|
||||
#define _SEMIC_SEP_LIST_12(ITEM) \
|
||||
_SEMIC_SEP_LIST_11(ITEM); \
|
||||
@@ -135,7 +135,7 @@
|
||||
ITEM(1)
|
||||
#define _SEMIC_SEP_LIST_0(ITEM)
|
||||
|
||||
// 1-based space separed list of ITEMs
|
||||
// 1-based space separated list of ITEMs
|
||||
#define SPACE_SEP_LIST(ITEM, LENGTH) _SPACE_SEP_LIST_##LENGTH(ITEM)
|
||||
#define _SPACE_SEP_LIST_12(ITEM) \
|
||||
_SPACE_SEP_LIST_11(ITEM) \
|
||||
@@ -309,9 +309,9 @@ class CommandQueueMT {
|
||||
};
|
||||
|
||||
uint8_t command_mem[COMMAND_MEM_SIZE];
|
||||
uint32_t read_ptr;
|
||||
uint32_t write_ptr;
|
||||
uint32_t dealloc_ptr;
|
||||
uint32_t read_ptr = 0;
|
||||
uint32_t write_ptr = 0;
|
||||
uint32_t dealloc_ptr = 0;
|
||||
SyncSemaphore sync_sems[SYNC_SEMAPHORES];
|
||||
Mutex *mutex;
|
||||
Semaphore *sync;
|
||||
|
@@ -38,7 +38,7 @@ class PHashTranslation : public Translation {
|
||||
GDCLASS(PHashTranslation, Translation);
|
||||
|
||||
//this translation uses a sort of modified perfect hash algorithm
|
||||
//it requieres hashing strings twice and then does a binary search,
|
||||
//it requires hashing strings twice and then does a binary search,
|
||||
//so it's slower, but at the same time it has an extreemly high chance
|
||||
//of catching untranslated strings
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
|
||||
#include "typedefs.h"
|
||||
/**
|
||||
* Error macros. Unlike exceptions and asserts, these macros try to mantain consistency and stability
|
||||
* Error macros. Unlike exceptions and asserts, these macros try to maintain consistency and stability
|
||||
* inside the code. It is recommended to always return processable data, so in case of an error, the
|
||||
* engine can stay working well.
|
||||
* In most cases, bugs and/or invalid data are not fatal and should never allow a perfectly running application
|
||||
|
@@ -580,7 +580,7 @@ void register_global_constants() {
|
||||
BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR_ARRAY", Variant::POOL_COLOR_ARRAY);
|
||||
BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_MAX", Variant::VARIANT_MAX);
|
||||
|
||||
//comparation
|
||||
//comparison
|
||||
BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_EQUAL", Variant::OP_EQUAL);
|
||||
BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_NOT_EQUAL", Variant::OP_NOT_EQUAL);
|
||||
BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_LESS", Variant::OP_LESS);
|
||||
|
@@ -83,7 +83,7 @@ int64_t FileAccessNetworkClient::get_64() {
|
||||
|
||||
void FileAccessNetworkClient::_thread_func() {
|
||||
|
||||
client->set_nodelay(true);
|
||||
client->set_no_delay(true);
|
||||
while (!quit) {
|
||||
|
||||
DEBUG_PRINT("SEM WAIT - " + itos(sem->get()));
|
||||
@@ -418,8 +418,6 @@ int FileAccessNetwork::get_buffer(uint8_t *p_dst, int p_length) const {
|
||||
if (page != last_page) {
|
||||
buffer_mutex->lock();
|
||||
if (pages[page].buffer.empty()) {
|
||||
//fuck
|
||||
|
||||
waiting_on_page = page;
|
||||
for (int j = 0; j < read_ahead; j++) {
|
||||
|
||||
|
@@ -211,7 +211,7 @@ IP_Address::IP_Address(const String &p_string) {
|
||||
clear();
|
||||
|
||||
if (p_string == "*") {
|
||||
// Wildcard (not a vaild IP)
|
||||
// Wildcard (not a valid IP)
|
||||
wildcard = true;
|
||||
|
||||
} else if (p_string.find(":") >= 0) {
|
||||
|
@@ -1124,7 +1124,7 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
|
||||
DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
da->remove(p_path + ".depren");
|
||||
memdelete(da);
|
||||
//fuck it, use the old approach;
|
||||
//use the old approach
|
||||
|
||||
WARN_PRINT(("This file is old, so it can't refactor dependencies, opening and resaving: " + p_path).utf8().get_data());
|
||||
|
||||
|
@@ -310,7 +310,7 @@ float StreamPeer::get_float() {
|
||||
return decode_float(buf);
|
||||
}
|
||||
|
||||
float StreamPeer::get_double() {
|
||||
double StreamPeer::get_double() {
|
||||
|
||||
uint8_t buf[8];
|
||||
get_data(buf, 8);
|
||||
|
@@ -83,7 +83,7 @@ public:
|
||||
uint64_t get_u64();
|
||||
int64_t get_64();
|
||||
float get_float();
|
||||
float get_double();
|
||||
double get_double();
|
||||
String get_string(int p_bytes);
|
||||
String get_utf8_string(int p_bytes);
|
||||
Variant get_var();
|
||||
|
@@ -55,6 +55,7 @@ void StreamPeerTCP::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_connected_host"), &StreamPeerTCP::get_connected_host);
|
||||
ClassDB::bind_method(D_METHOD("get_connected_port"), &StreamPeerTCP::get_connected_port);
|
||||
ClassDB::bind_method(D_METHOD("disconnect_from_host"), &StreamPeerTCP::disconnect_from_host);
|
||||
ClassDB::bind_method(D_METHOD("set_no_delay", "enabled"), &StreamPeerTCP::set_no_delay);
|
||||
|
||||
BIND_ENUM_CONSTANT(STATUS_NONE);
|
||||
BIND_ENUM_CONSTANT(STATUS_CONNECTING);
|
||||
|
@@ -65,7 +65,7 @@ public:
|
||||
virtual void disconnect_from_host() = 0;
|
||||
virtual IP_Address get_connected_host() const = 0;
|
||||
virtual uint16_t get_connected_port() const = 0;
|
||||
virtual void set_nodelay(bool p_enabled) = 0;
|
||||
virtual void set_no_delay(bool p_enabled) = 0;
|
||||
|
||||
static Ref<StreamPeerTCP> create_ref();
|
||||
static StreamPeerTCP *create();
|
||||
|
@@ -244,7 +244,7 @@ def make_version(template, nargs, argmax, const, ret):
|
||||
|
||||
def run(target, source, env):
|
||||
|
||||
versions = 11
|
||||
versions = 13
|
||||
versions_ext = 6
|
||||
text = ""
|
||||
text_ext = ""
|
||||
|
@@ -197,7 +197,7 @@ private:
|
||||
if (node->right != _data._nil) {
|
||||
|
||||
node = node->right;
|
||||
while (node->left != _data._nil) { /* returns the minium of the right subtree of node */
|
||||
while (node->left != _data._nil) { /* returns the minimum of the right subtree of node */
|
||||
node = node->left;
|
||||
}
|
||||
return node;
|
||||
@@ -219,7 +219,7 @@ private:
|
||||
if (node->left != _data._nil) {
|
||||
|
||||
node = node->left;
|
||||
while (node->right != _data._nil) { /* returns the minium of the left subtree of node */
|
||||
while (node->right != _data._nil) { /* returns the minimum of the left subtree of node */
|
||||
node = node->right;
|
||||
}
|
||||
return node;
|
||||
|
@@ -51,7 +51,8 @@ real_t Triangulate::get_area(const Vector<Vector2> &contour) {
|
||||
bool Triangulate::is_inside_triangle(real_t Ax, real_t Ay,
|
||||
real_t Bx, real_t By,
|
||||
real_t Cx, real_t Cy,
|
||||
real_t Px, real_t Py)
|
||||
real_t Px, real_t Py,
|
||||
bool include_edges)
|
||||
|
||||
{
|
||||
real_t ax, ay, bx, by, cx, cy, apx, apy, bpx, bpy, cpx, cpy;
|
||||
@@ -74,10 +75,14 @@ bool Triangulate::is_inside_triangle(real_t Ax, real_t Ay,
|
||||
cCROSSap = cx * apy - cy * apx;
|
||||
bCROSScp = bx * cpy - by * cpx;
|
||||
|
||||
return ((aCROSSbp >= 0.0) && (bCROSScp >= 0.0) && (cCROSSap >= 0.0));
|
||||
if (include_edges) {
|
||||
return ((aCROSSbp > 0.0) && (bCROSScp > 0.0) && (cCROSSap > 0.0));
|
||||
} else {
|
||||
return ((aCROSSbp >= 0.0) && (bCROSScp >= 0.0) && (cCROSSap >= 0.0));
|
||||
}
|
||||
};
|
||||
|
||||
bool Triangulate::snip(const Vector<Vector2> &p_contour, int u, int v, int w, int n, const Vector<int> &V) {
|
||||
bool Triangulate::snip(const Vector<Vector2> &p_contour, int u, int v, int w, int n, const Vector<int> &V, bool relaxed) {
|
||||
int p;
|
||||
real_t Ax, Ay, Bx, By, Cx, Cy, Px, Py;
|
||||
const Vector2 *contour = &p_contour[0];
|
||||
@@ -91,13 +96,20 @@ bool Triangulate::snip(const Vector<Vector2> &p_contour, int u, int v, int w, in
|
||||
Cx = contour[V[w]].x;
|
||||
Cy = contour[V[w]].y;
|
||||
|
||||
if (CMP_EPSILON > (((Bx - Ax) * (Cy - Ay)) - ((By - Ay) * (Cx - Ax)))) return false;
|
||||
// It can happen that the triangulation ends up with three aligned vertices to deal with.
|
||||
// In this scenario, making the check below strict may reject the possibility of
|
||||
// forming a last triangle with these aligned vertices, preventing the triangulatiom
|
||||
// from completing.
|
||||
// To avoid that we allow zero-area triangles if all else failed.
|
||||
float threshold = relaxed ? -CMP_EPSILON : CMP_EPSILON;
|
||||
|
||||
if (threshold > (((Bx - Ax) * (Cy - Ay)) - ((By - Ay) * (Cx - Ax)))) return false;
|
||||
|
||||
for (p = 0; p < n; p++) {
|
||||
if ((p == u) || (p == v) || (p == w)) continue;
|
||||
Px = contour[V[p]].x;
|
||||
Py = contour[V[p]].y;
|
||||
if (is_inside_triangle(Ax, Ay, Bx, By, Cx, Cy, Px, Py)) return false;
|
||||
if (is_inside_triangle(Ax, Ay, Bx, By, Cx, Cy, Px, Py, relaxed)) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -121,6 +133,8 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour, Vector<int> &resul
|
||||
for (int v = 0; v < n; v++)
|
||||
V[v] = (n - 1) - v;
|
||||
|
||||
bool relaxed = false;
|
||||
|
||||
int nv = n;
|
||||
|
||||
/* remove nv-2 Vertices, creating 1 triangle every time */
|
||||
@@ -129,8 +143,20 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour, Vector<int> &resul
|
||||
for (int v = nv - 1; nv > 2;) {
|
||||
/* if we loop, it is probably a non-simple polygon */
|
||||
if (0 >= (count--)) {
|
||||
//** Triangulate: ERROR - probable bad polygon!
|
||||
return false;
|
||||
if (relaxed) {
|
||||
//** Triangulate: ERROR - probable bad polygon!
|
||||
return false;
|
||||
} else {
|
||||
// There may be aligned vertices that the strict
|
||||
// checks prevent from triangulating. In this situation
|
||||
// we are better off adding flat triangles than
|
||||
// failing, so we relax the checks and try one last
|
||||
// round.
|
||||
// Only relaxing the constraints as a last resort avoids
|
||||
// degenerate triangles when they aren't necessary.
|
||||
count = 2 * nv;
|
||||
relaxed = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* three consecutive vertices in current polygon, <u,v,w> */
|
||||
@@ -141,7 +167,7 @@ bool Triangulate::triangulate(const Vector<Vector2> &contour, Vector<int> &resul
|
||||
int w = v + 1;
|
||||
if (nv <= w) w = 0; /* next */
|
||||
|
||||
if (snip(contour, u, v, w, nv, V)) {
|
||||
if (snip(contour, u, v, w, nv, V, relaxed)) {
|
||||
int a, b, c, s, t;
|
||||
|
||||
/* true names of the vertices */
|
||||
|
@@ -51,10 +51,11 @@ public:
|
||||
static bool is_inside_triangle(real_t Ax, real_t Ay,
|
||||
real_t Bx, real_t By,
|
||||
real_t Cx, real_t Cy,
|
||||
real_t Px, real_t Py);
|
||||
real_t Px, real_t Py,
|
||||
bool include_edges);
|
||||
|
||||
private:
|
||||
static bool snip(const Vector<Vector2> &p_contour, int u, int v, int w, int n, const Vector<int> &V);
|
||||
static bool snip(const Vector<Vector2> &p_contour, int u, int v, int w, int n, const Vector<int> &V, bool relaxed);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -278,7 +278,7 @@ void MessageQueue::flush() {
|
||||
|
||||
while (read_pos < buffer_end) {
|
||||
|
||||
//lock on each interation, so a call can re-add itself to the message queue
|
||||
//lock on each iteration, so a call can re-add itself to the message queue
|
||||
|
||||
Message *message = (Message *)&buffer[read_pos];
|
||||
|
||||
|
@@ -962,6 +962,11 @@ Ref<InputEvent> InputEventMagnifyGesture::xformed_by(const Transform2D &p_xform,
|
||||
return ev;
|
||||
}
|
||||
|
||||
String InputEventMagnifyGesture::as_text() const {
|
||||
|
||||
return "InputEventMagnifyGesture : factor=" + rtos(get_factor()) + ", position=(" + String(get_position()) + ")";
|
||||
}
|
||||
|
||||
void InputEventMagnifyGesture::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_factor", "factor"), &InputEventMagnifyGesture::set_factor);
|
||||
@@ -999,6 +1004,11 @@ Ref<InputEvent> InputEventPanGesture::xformed_by(const Transform2D &p_xform, con
|
||||
return ev;
|
||||
}
|
||||
|
||||
String InputEventPanGesture::as_text() const {
|
||||
|
||||
return "InputEventPanGesture : delta=(" + String(get_delta()) + "), position=(" + String(get_position()) + ")";
|
||||
}
|
||||
|
||||
void InputEventPanGesture::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_delta", "delta"), &InputEventPanGesture::set_delta);
|
||||
|
@@ -494,6 +494,7 @@ public:
|
||||
real_t get_factor() const;
|
||||
|
||||
virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const;
|
||||
virtual String as_text() const;
|
||||
|
||||
InputEventMagnifyGesture();
|
||||
};
|
||||
@@ -511,6 +512,7 @@ public:
|
||||
Vector2 get_delta() const;
|
||||
|
||||
virtual Ref<InputEvent> xformed_by(const Transform2D &p_xform, const Vector2 &p_local_ofs = Vector2()) const;
|
||||
virtual String as_text() const;
|
||||
|
||||
InputEventPanGesture();
|
||||
};
|
||||
|
@@ -616,6 +616,17 @@ bool OS::has_feature(const String &p_feature) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void OS::center_window() {
|
||||
|
||||
if (is_window_fullscreen()) return;
|
||||
|
||||
Size2 scr = get_screen_size(get_current_screen());
|
||||
Size2 wnd = get_real_window_size();
|
||||
int x = scr.width / 2 - wnd.width / 2;
|
||||
int y = scr.height / 2 - wnd.height / 2;
|
||||
set_window_position(Vector2(x, y));
|
||||
}
|
||||
|
||||
OS::OS() {
|
||||
void *volatile stack_bottom;
|
||||
|
||||
|
@@ -182,6 +182,7 @@ public:
|
||||
virtual Point2 get_window_position() const { return Vector2(); }
|
||||
virtual void set_window_position(const Point2 &p_position) {}
|
||||
virtual Size2 get_window_size() const = 0;
|
||||
virtual Size2 get_real_window_size() const { return get_window_size(); }
|
||||
virtual void set_window_size(const Size2 p_size) {}
|
||||
virtual void set_window_fullscreen(bool p_enabled) {}
|
||||
virtual bool is_window_fullscreen() const { return true; }
|
||||
@@ -192,6 +193,7 @@ public:
|
||||
virtual void set_window_maximized(bool p_enabled) {}
|
||||
virtual bool is_window_maximized() const { return true; }
|
||||
virtual void request_attention() {}
|
||||
virtual void center_window();
|
||||
|
||||
virtual void set_borderless_window(bool p_borderless) {}
|
||||
virtual bool get_borderless_window() { return 0; }
|
||||
|
@@ -90,7 +90,7 @@ bool PoolAllocator::find_hole(EntryArrayPos *p_pos, int p_for_size) {
|
||||
|
||||
int hole_size = entry.pos - prev_entry_end_pos;
|
||||
|
||||
/* detemine if what we want fits in that hole */
|
||||
/* determine if what we want fits in that hole */
|
||||
if (hole_size >= p_for_size) {
|
||||
*p_pos = i;
|
||||
return true;
|
||||
@@ -100,7 +100,7 @@ bool PoolAllocator::find_hole(EntryArrayPos *p_pos, int p_for_size) {
|
||||
prev_entry_end_pos = entry_end(entry);
|
||||
}
|
||||
|
||||
/* No holes between entrys, check at the end..*/
|
||||
/* No holes between entries, check at the end..*/
|
||||
|
||||
if ((pool_size - prev_entry_end_pos) >= p_for_size) {
|
||||
*p_pos = entry_count;
|
||||
|
@@ -268,12 +268,12 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
|
||||
if (FileAccessNetworkClient::get_singleton()) {
|
||||
|
||||
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
|
||||
|
||||
_load_settings("res://override.cfg");
|
||||
Error err = _load_settings_text_or_binary("res://project.godot", "res://project.binary");
|
||||
if (err == OK) {
|
||||
// Optional, we don't mind if it fails
|
||||
_load_settings_text("res://override.cfg");
|
||||
}
|
||||
|
||||
return OK;
|
||||
return err;
|
||||
}
|
||||
|
||||
String exec_path = OS::get_singleton()->get_executable_path();
|
||||
@@ -285,12 +285,13 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
bool ok = _load_resource_pack(p_main_pack);
|
||||
ERR_FAIL_COND_V(!ok, ERR_CANT_OPEN);
|
||||
|
||||
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
|
||||
//load override from location of the main pack
|
||||
_load_settings(p_main_pack.get_base_dir().plus_file("override.cfg"));
|
||||
Error err = _load_settings_text_or_binary("res://project.godot", "res://project.binary");
|
||||
if (err == OK) {
|
||||
// Load override from location of the main pack
|
||||
// Optional, we don't mind if it fails
|
||||
_load_settings_text(p_main_pack.get_base_dir().plus_file("override.cfg"));
|
||||
}
|
||||
|
||||
return OK;
|
||||
return err;
|
||||
}
|
||||
|
||||
//Attempt with execname.pck
|
||||
@@ -313,12 +314,13 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
|
||||
// if we opened our package, try and load our project...
|
||||
if (found) {
|
||||
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
|
||||
// load override from location of executable
|
||||
_load_settings(exec_path.get_base_dir().plus_file("override.cfg"));
|
||||
Error err = _load_settings_text_or_binary("res://project.godot", "res://project.binary");
|
||||
if (err == OK) {
|
||||
// Load override from location of executable
|
||||
// Optional, we don't mind if it fails
|
||||
_load_settings_text(exec_path.get_base_dir().plus_file("override.cfg"));
|
||||
}
|
||||
|
||||
return OK;
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,11 +336,13 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
// data.pck and data.zip are deprecated and no longer supported, apologies.
|
||||
// make sure this is loaded from the resource path
|
||||
|
||||
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
|
||||
_load_settings("res://override.cfg");
|
||||
Error err = _load_settings_text_or_binary("res://project.godot", "res://project.binary");
|
||||
if (err == OK) {
|
||||
// Optional, we don't mind if it fails
|
||||
_load_settings_text("res://override.cfg");
|
||||
}
|
||||
|
||||
return OK;
|
||||
return err;
|
||||
}
|
||||
|
||||
//Nothing was found, try to find a project.godot somewhere!
|
||||
@@ -350,20 +354,23 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
|
||||
String candidate = d->get_current_dir();
|
||||
String current_dir = d->get_current_dir();
|
||||
|
||||
bool found = false;
|
||||
Error err;
|
||||
|
||||
while (true) {
|
||||
//try to load settings in ascending through dirs shape!
|
||||
|
||||
if (_load_settings(current_dir + "/project.godot") == OK || _load_settings_binary(current_dir + "/project.binary") == OK) {
|
||||
|
||||
_load_settings(current_dir + "/override.cfg");
|
||||
err = _load_settings_text_or_binary(current_dir.plus_file("project.godot"), current_dir.plus_file("project.binary"));
|
||||
if (err == OK) {
|
||||
// Optional, we don't mind if it fails
|
||||
_load_settings_text(current_dir.plus_file("override.cfg"));
|
||||
candidate = current_dir;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (p_upwards) {
|
||||
// Try to load settings ascending through dirs shape!
|
||||
d->change_dir("..");
|
||||
if (d->get_current_dir() == current_dir)
|
||||
break; //not doing anything useful
|
||||
@@ -378,7 +385,7 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bo
|
||||
memdelete(d);
|
||||
|
||||
if (!found)
|
||||
return ERR_FILE_NOT_FOUND;
|
||||
return err;
|
||||
|
||||
if (resource_path.length() && resource_path[resource_path.length() - 1] == '/')
|
||||
resource_path = resource_path.substr(0, resource_path.length() - 1); // chop end
|
||||
@@ -440,13 +447,17 @@ Error ProjectSettings::_load_settings_binary(const String p_path) {
|
||||
|
||||
return OK;
|
||||
}
|
||||
Error ProjectSettings::_load_settings(const String p_path) {
|
||||
|
||||
Error ProjectSettings::_load_settings_text(const String p_path) {
|
||||
|
||||
Error err;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
|
||||
if (!f)
|
||||
return ERR_CANT_OPEN;
|
||||
if (!f) {
|
||||
// FIXME: Above 'err' error code is ERR_FILE_CANT_OPEN if the file is missing
|
||||
// This needs to be streamlined if we want decent error reporting
|
||||
return ERR_FILE_NOT_FOUND;
|
||||
}
|
||||
|
||||
VariantParser::StreamFile stream;
|
||||
stream.f = f;
|
||||
@@ -471,7 +482,7 @@ Error ProjectSettings::_load_settings(const String p_path) {
|
||||
memdelete(f);
|
||||
return OK;
|
||||
} else if (err != OK) {
|
||||
ERR_PRINTS("ProjectSettings::load - " + p_path + ":" + itos(lines) + " error: " + error_text);
|
||||
ERR_PRINTS("Error parsing " + p_path + " at line " + itos(lines) + ": " + error_text + " File might be corrupted.");
|
||||
memdelete(f);
|
||||
return err;
|
||||
}
|
||||
@@ -497,6 +508,23 @@ Error ProjectSettings::_load_settings(const String p_path) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
Error ProjectSettings::_load_settings_text_or_binary(const String p_text_path, const String p_bin_path) {
|
||||
|
||||
// Attempt first to load the text-based project.godot file
|
||||
Error err_text = _load_settings_text(p_text_path);
|
||||
if (err_text == OK) {
|
||||
return OK;
|
||||
} else if (err_text != ERR_FILE_NOT_FOUND) {
|
||||
// If the text-based file exists but can't be loaded, we want to know it
|
||||
ERR_PRINTS("Couldn't load file '" + p_text_path + "', error code " + itos(err_text) + ".");
|
||||
return err_text;
|
||||
}
|
||||
|
||||
// Fallback to binary project.binary file if text-based was not found
|
||||
Error err_bin = _load_settings_binary(p_bin_path);
|
||||
return err_bin;
|
||||
}
|
||||
|
||||
int ProjectSettings::get_order(const String &p_name) const {
|
||||
|
||||
ERR_FAIL_COND_V(!props.has(p_name), -1);
|
||||
@@ -525,7 +553,7 @@ void ProjectSettings::clear(const String &p_name) {
|
||||
|
||||
Error ProjectSettings::save() {
|
||||
|
||||
return save_custom(get_resource_path() + "/project.godot");
|
||||
return save_custom(get_resource_path().plus_file("project.godot"));
|
||||
}
|
||||
|
||||
Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<String, List<String> > &props, const CustomMap &p_custom, const String &p_custom_features) {
|
||||
|
@@ -93,8 +93,9 @@ protected:
|
||||
|
||||
static ProjectSettings *singleton;
|
||||
|
||||
Error _load_settings(const String p_path);
|
||||
Error _load_settings_text(const String p_path);
|
||||
Error _load_settings_binary(const String p_path);
|
||||
Error _load_settings_text_or_binary(const String p_text_path, const String p_bin_path);
|
||||
|
||||
Error _save_settings_text(const String &p_file, const Map<String, List<String> > &props, const CustomMap &p_custom = CustomMap(), const String &p_custom_features = String());
|
||||
Error _save_settings_binary(const String &p_file, const Map<String, List<String> > &props, const CustomMap &p_custom = CustomMap(), const String &p_custom_features = String());
|
||||
|
@@ -119,8 +119,8 @@ _ALWAYS_INLINE_ uint64_t _atomic_exchange_if_greater_impl(register uint64_t *pw,
|
||||
|
||||
// The actual advertised functions; they'll call the right implementation
|
||||
|
||||
uint32_t atomic_conditional_increment(register uint32_t *counter) {
|
||||
return _atomic_conditional_increment_impl(counter);
|
||||
uint32_t atomic_conditional_increment(register uint32_t *pw) {
|
||||
return _atomic_conditional_increment_impl(pw);
|
||||
}
|
||||
|
||||
uint32_t atomic_decrement(register uint32_t *pw) {
|
||||
@@ -143,8 +143,8 @@ uint32_t atomic_exchange_if_greater(register uint32_t *pw, register uint32_t val
|
||||
return _atomic_exchange_if_greater_impl(pw, val);
|
||||
}
|
||||
|
||||
uint64_t atomic_conditional_increment(register uint64_t *counter) {
|
||||
return _atomic_conditional_increment_impl(counter);
|
||||
uint64_t atomic_conditional_increment(register uint64_t *pw) {
|
||||
return _atomic_conditional_increment_impl(pw);
|
||||
}
|
||||
|
||||
uint64_t atomic_decrement(register uint64_t *pw) {
|
||||
|
@@ -598,7 +598,13 @@ void ScriptDebuggerRemote::_send_object_id(ObjectID p_id) {
|
||||
Array send_props;
|
||||
for (int i = 0; i < properties.size(); i++) {
|
||||
const PropertyInfo &pi = properties[i].first;
|
||||
const Variant &var = properties[i].second;
|
||||
Variant &var = properties[i].second;
|
||||
|
||||
WeakRef *ref = Object::cast_to<WeakRef>(var);
|
||||
if (ref) {
|
||||
var = ref->get_ref();
|
||||
}
|
||||
|
||||
RES res = var;
|
||||
|
||||
Array prop;
|
||||
@@ -1010,11 +1016,11 @@ void ScriptDebuggerRemote::add_profiling_frame_data(const StringName &p_name, co
|
||||
}
|
||||
|
||||
void ScriptDebuggerRemote::profiling_start() {
|
||||
//ignores this, uses it via connnection
|
||||
//ignores this, uses it via connection
|
||||
}
|
||||
|
||||
void ScriptDebuggerRemote::profiling_end() {
|
||||
//ignores this, uses it via connnection
|
||||
//ignores this, uses it via connection
|
||||
}
|
||||
|
||||
void ScriptDebuggerRemote::profiling_set_frame_times(float p_frame_time, float p_idle_time, float p_physics_time, float p_physics_frame_time) {
|
||||
|
@@ -185,7 +185,7 @@ private:
|
||||
if (node->right != _data._nil) {
|
||||
|
||||
node = node->right;
|
||||
while (node->left != _data._nil) { /* returns the minium of the right subtree of node */
|
||||
while (node->left != _data._nil) { /* returns the minimum of the right subtree of node */
|
||||
node = node->left;
|
||||
}
|
||||
return node;
|
||||
@@ -207,7 +207,7 @@ private:
|
||||
if (node->left != _data._nil) {
|
||||
|
||||
node = node->left;
|
||||
while (node->right != _data._nil) { /* returns the minium of the left subtree of node */
|
||||
while (node->right != _data._nil) { /* returns the minimum of the left subtree of node */
|
||||
node = node->right;
|
||||
}
|
||||
return node;
|
||||
|
@@ -34,6 +34,14 @@
|
||||
#include "os/os.h"
|
||||
#include "project_settings.h"
|
||||
|
||||
// ISO 639-1 language codes, with the addition of glibc locales with their
|
||||
// regional identifiers. This list must match the language names (in English)
|
||||
// of locale_names.
|
||||
//
|
||||
// References:
|
||||
// - https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
||||
// - https://lh.2xlibre.net/locales/
|
||||
|
||||
static const char *locale_list[] = {
|
||||
"aa", // Afar
|
||||
"aa_DJ", // Afar (Djibouti)
|
||||
@@ -756,8 +764,17 @@ static const char *locale_names[] = {
|
||||
0
|
||||
};
|
||||
|
||||
// Windows has some weird locale identifiers which do not honor the ISO 639-1
|
||||
// standardized nomenclature. Whenever those don't conflict with existing ISO
|
||||
// identifiers, we override them.
|
||||
//
|
||||
// Reference:
|
||||
// - https://msdn.microsoft.com/en-us/library/windows/desktop/ms693062(v=vs.85).aspx
|
||||
|
||||
static const char *locale_renames[][2] = {
|
||||
{ "no", "nb" },
|
||||
{ "in", "id" }, // Indonesian
|
||||
{ "iw", "he" }, // Hebrew
|
||||
{ "no", "nb" }, // Norwegian Bokmål
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
@@ -1135,6 +1135,36 @@ String String::num_int64(int64_t p_num, int base, bool capitalize_hex) {
|
||||
return s;
|
||||
}
|
||||
|
||||
String String::num_uint64(uint64_t p_num, int base, bool capitalize_hex) {
|
||||
|
||||
uint64_t n = p_num;
|
||||
|
||||
int chars = 0;
|
||||
do {
|
||||
n /= base;
|
||||
chars++;
|
||||
} while (n);
|
||||
|
||||
String s;
|
||||
s.resize(chars + 1);
|
||||
CharType *c = s.ptrw();
|
||||
c[chars] = 0;
|
||||
n = p_num;
|
||||
do {
|
||||
int mod = ABS(n % base);
|
||||
if (mod >= 10) {
|
||||
char a = (capitalize_hex ? 'A' : 'a');
|
||||
c[--chars] = a + (mod - 10);
|
||||
} else {
|
||||
c[--chars] = '0' + mod;
|
||||
}
|
||||
|
||||
n /= base;
|
||||
} while (n);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
String String::num_real(double p_num) {
|
||||
|
||||
String s;
|
||||
|
@@ -146,6 +146,7 @@ public:
|
||||
static String num_scientific(double p_num);
|
||||
static String num_real(double p_num);
|
||||
static String num_int64(int64_t p_num, int base = 10, bool capitalize_hex = false);
|
||||
static String num_uint64(uint64_t p_num, int base = 10, bool capitalize_hex = false);
|
||||
static String chr(CharType p_char);
|
||||
static String md5(const uint8_t *p_md5);
|
||||
static String hex_encode_buffer(const uint8_t *p_buffer, int p_len);
|
||||
|
@@ -293,7 +293,7 @@ public:
|
||||
// If this changes the table in variant_op must be updated
|
||||
enum Operator {
|
||||
|
||||
//comparation
|
||||
//comparison
|
||||
OP_EQUAL,
|
||||
OP_NOT_EQUAL,
|
||||
OP_LESS,
|
||||
|
@@ -147,7 +147,7 @@ Variant::operator bool() const {
|
||||
return booleanize();
|
||||
}
|
||||
|
||||
// We consider all unitialized or empty types to be false based on the type's
|
||||
// We consider all uninitialized or empty types to be false based on the type's
|
||||
// zeroiness.
|
||||
bool Variant::booleanize() const {
|
||||
return !is_zero();
|
||||
@@ -1501,7 +1501,7 @@ void Variant::set_named(const StringName &p_index, const Variant &p_value, bool
|
||||
v->set_hsv(v->get_h(), p_value._data._real, v->get_v());
|
||||
valid = true;
|
||||
} else if (p_index == CoreStringNames::singleton->v) {
|
||||
v->set_hsv(v->get_h(), v->get_v(), p_value._data._real);
|
||||
v->set_hsv(v->get_h(), v->get_s(), p_value._data._real);
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
|
@@ -30,9 +30,32 @@
|
||||
|
||||
#include "version_generated.gen.h"
|
||||
|
||||
// Godot versions are of the form <major>.<minor> for the initial release,
|
||||
// and then <major>.<minor>.<patch> for subsequent bugfix releases where <patch> != 0
|
||||
// That's arbitrary, but we find it pretty and it's the current policy.
|
||||
|
||||
// Defines the main "branch" version. Patch versions in this branch should be
|
||||
// forward-compatible.
|
||||
// Example: "3.1"
|
||||
#define VERSION_BRANCH "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR)
|
||||
#ifdef VERSION_PATCH
|
||||
#define VERSION_MKSTRING "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR) "." _MKSTR(VERSION_PATCH) "." VERSION_STATUS "." VERSION_BUILD VERSION_MODULE_CONFIG
|
||||
// Example: "3.1.4"
|
||||
#define VERSION_NUMBER "" VERSION_BRANCH "." _MKSTR(VERSION_PATCH)
|
||||
#else
|
||||
#define VERSION_MKSTRING "" _MKSTR(VERSION_MAJOR) "." _MKSTR(VERSION_MINOR) "." VERSION_STATUS "." VERSION_BUILD VERSION_MODULE_CONFIG
|
||||
// Example: "3.1"
|
||||
#define VERSION_NUMBER "" VERSION_BRANCH
|
||||
#endif // VERSION_PATCH
|
||||
#define VERSION_FULL_NAME "" VERSION_NAME " v" VERSION_MKSTRING
|
||||
|
||||
// Describes the full configuration of that Godot version, including the version number,
|
||||
// the status (beta, stable, etc.) and potential module-specific features (e.g. mono).
|
||||
// Example: "3.1.4.stable.mono"
|
||||
#define VERSION_FULL_CONFIG "" VERSION_NUMBER "." VERSION_STATUS VERSION_MODULE_CONFIG
|
||||
|
||||
// Similar to VERSION_FULL_CONFIG, but also includes the (potentially custom) VERSION_BUILD
|
||||
// description (e.g. official, custom_build, etc.).
|
||||
// Example: "3.1.4.stable.mono.official"
|
||||
#define VERSION_FULL_BUILD "" VERSION_FULL_CONFIG "." VERSION_BUILD
|
||||
|
||||
// Same as above, but prepended with Godot's name and a cosmetic "v" for "version".
|
||||
// Example: "Godot v3.1.4.stable.official.mono"
|
||||
#define VERSION_FULL_NAME "" VERSION_NAME " v" VERSION_FULL_BUILD
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="@GDScript" category="Core" version="3.0-stable">
|
||||
<class name="@GDScript" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Built-in GDScript functions.
|
||||
</brief_description>
|
||||
@@ -20,7 +20,7 @@
|
||||
</argument>
|
||||
<argument index="2" name="b8" type="int">
|
||||
</argument>
|
||||
<argument index="3" name="a8" type="int">
|
||||
<argument index="3" name="a8" type="int" default="255">
|
||||
</argument>
|
||||
<description>
|
||||
Returns a 32 bit color with red, green, blue and alpha channels. Each channel has 8 bits of information ranging from 0 to 255.
|
||||
@@ -38,7 +38,7 @@
|
||||
</return>
|
||||
<argument index="0" name="name" type="String">
|
||||
</argument>
|
||||
<argument index="1" name="alpha" type="float">
|
||||
<argument index="1" name="alpha" type="float" default="1.0">
|
||||
</argument>
|
||||
<description>
|
||||
Returns a color according to the standardised [code]name[/code] with [code]alpha[/code] ranging from 0 to 1.
|
||||
@@ -608,6 +608,7 @@
|
||||
<description>
|
||||
Parse JSON text to a Variant (use [method typeof] to check if it is what you expect).
|
||||
Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to [float] types.
|
||||
Note that JSON objects do not preserve key order like Godot dictionaries, thus you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements:
|
||||
[codeblock]
|
||||
p = parse_json('["a", "b", "c"]')
|
||||
if typeof(p) == TYPE_ARRAY:
|
||||
@@ -1130,9 +1131,9 @@
|
||||
<method name="yield">
|
||||
<return type="GDScriptFunctionState">
|
||||
</return>
|
||||
<argument index="0" name="object" type="Object">
|
||||
<argument index="0" name="object" type="Object" default="null">
|
||||
</argument>
|
||||
<argument index="1" name="signal" type="String">
|
||||
<argument index="1" name="signal" type="String" default="""">
|
||||
</argument>
|
||||
<description>
|
||||
Stops the function execution and returns the current state. Call [method GDScriptFunctionState.resume] on the state to resume execution. This invalidates the state.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="@GlobalScope" category="Core" version="3.0-stable">
|
||||
<class name="@GlobalScope" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Global scope constants and variables.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="@NativeScript" category="Core" version="3.0-stable">
|
||||
<class name="@NativeScript" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="@VisualScript" category="Core" version="3.0-stable">
|
||||
<class name="@VisualScript" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Built-in visual script functions.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AABB" category="Built-In Types" version="3.0-stable">
|
||||
<class name="AABB" category="Built-In Types" version="3.0.2">
|
||||
<brief_description>
|
||||
Axis-Aligned Bounding Box.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0-stable">
|
||||
<class name="ARVRAnchor" inherits="Spatial" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Anchor point in AR Space
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0-stable">
|
||||
<class name="ARVRCamera" inherits="Camera" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
A camera node with a few overrules for AR/VR applied such as location tracking.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRController" inherits="Spatial" category="Core" version="3.0-stable">
|
||||
<class name="ARVRController" inherits="Spatial" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
A spatial node representing a spatially tracked controller.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0-stable">
|
||||
<class name="ARVRInterface" inherits="Reference" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Base class for ARVR interface implementation.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0-stable">
|
||||
<class name="ARVROrigin" inherits="Spatial" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Our origin point in AR/VR.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0-stable">
|
||||
<class name="ARVRPositionalTracker" inherits="Object" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
A tracked object
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ARVRServer" inherits="Object" category="Core" version="3.0-stable">
|
||||
<class name="ARVRServer" inherits="Object" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
This is our AR/VR Server.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AStar" inherits="Reference" category="Core" version="3.0-stable">
|
||||
<class name="AStar" inherits="Reference" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
AStar class representation that uses vectors as edges.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0-stable">
|
||||
<class name="AcceptDialog" inherits="WindowDialog" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Base dialog for user notification.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0-stable">
|
||||
<class name="AnimatedSprite" inherits="Node2D" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Sprite node that can use multiple textures for animation.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0-stable">
|
||||
<class name="AnimatedSprite3D" inherits="SpriteBase3D" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
2D sprite node in 3D world, that can use multiple 2D textures for animation.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="Animation" inherits="Resource" category="Core" version="3.0-stable">
|
||||
<class name="Animation" inherits="Resource" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Contains data used to animate everything in the engine.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0-stable">
|
||||
<class name="AnimationPlayer" inherits="Node" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Container and player of [Animation] resources.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0-stable">
|
||||
<class name="AnimationTreePlayer" inherits="Node" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Animation Player that uses a node graph for blending Animations.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="Area" inherits="CollisionObject" category="Core" version="3.0-stable">
|
||||
<class name="Area" inherits="CollisionObject" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
General purpose area node for detection and 3D physics influence.
|
||||
</brief_description>
|
||||
@@ -192,7 +192,7 @@
|
||||
<argument index="0" name="body" type="Object">
|
||||
</argument>
|
||||
<description>
|
||||
Emitted when a [PhysicsBody2D] object exits.
|
||||
Emitted when a [PhysicsBody] object exits.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="body_shape_entered">
|
||||
@@ -205,7 +205,7 @@
|
||||
<argument index="3" name="area_shape" type="int">
|
||||
</argument>
|
||||
<description>
|
||||
Emitted when a [PhysicsBody2D] object enters, reporting which shapes overlapped.
|
||||
Emitted when a [PhysicsBody] object enters, reporting which shapes overlapped.
|
||||
</description>
|
||||
</signal>
|
||||
<signal name="body_shape_exited">
|
||||
@@ -218,7 +218,7 @@
|
||||
<argument index="3" name="area_shape" type="int">
|
||||
</argument>
|
||||
<description>
|
||||
Emitted when a [PhysicsBody2D] object exits, reporting which shapes were overlapping.
|
||||
Emitted when a [PhysicsBody] object exits, reporting which shapes were overlapping.
|
||||
</description>
|
||||
</signal>
|
||||
</signals>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0-stable">
|
||||
<class name="Area2D" inherits="CollisionObject2D" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
2D area for detection and 2D physics influence.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="Array" category="Built-In Types" version="3.0-stable">
|
||||
<class name="Array" category="Built-In Types" version="3.0.2">
|
||||
<brief_description>
|
||||
Generic array datatype.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0-stable">
|
||||
<class name="ArrayMesh" inherits="Mesh" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
@@ -66,6 +66,16 @@
|
||||
Return the amount of surfaces that the [code]ArrayMesh[/code] holds.
|
||||
</description>
|
||||
</method>
|
||||
<method name="lightmap_unwrap">
|
||||
<return type="int" enum="Error">
|
||||
</return>
|
||||
<argument index="0" name="arg0" type="Transform">
|
||||
</argument>
|
||||
<argument index="1" name="arg1" type="float">
|
||||
</argument>
|
||||
<description>
|
||||
</description>
|
||||
</method>
|
||||
<method name="regen_normalmaps">
|
||||
<return type="void">
|
||||
</return>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0-stable">
|
||||
<class name="AtlasTexture" inherits="Texture" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Packs multiple small textures in a single, bigger one. Helps to optimize video memory costs and render calls.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0-stable">
|
||||
<class name="AudioBusLayout" inherits="Resource" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Stores information about the audiobusses.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffect" inherits="Resource" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffect" inherits="Resource" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Audio Effect For Audio.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectAmplify" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Amplify audio effect to an Audio bus.
|
||||
Increases or decreases the volume of the selected audio bus.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a band limit filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a band pass filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectChorus" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a chorus audio effect.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectCompressor" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Compressor audio effect to an Audio bus.
|
||||
Reduces sounds that exceed a certain threshold level, smooths out the dynamics and increases the overall volume.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectDelay" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Delay audio effect to an Audio bus. Plays input signal back after a period of time.
|
||||
Two tap delay and feedback options.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectDistortion" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Distortion audio effect to an Audio bus.
|
||||
Modify the sound to make it dirty.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectEQ" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Base class for audio equalizers. Gives you control over frequencies.
|
||||
Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] or [AudioEffectEQ21] don't fit your needs.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectEQ10" inherits="AudioEffectEQ" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a 10-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 31 Hz to 16000 Hz.
|
||||
Each frequency can be modulated between -60/+24 dB.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectEQ21" inherits="AudioEffectEQ" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a 21-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 22 Hz to 22000 Hz.
|
||||
Each frequency can be modulated between -60/+24 dB.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectEQ6" inherits="AudioEffectEQ" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a 6-band equalizer audio effect to an Audio bus. Gives you control over frequencies from 32 Hz to 10000 Hz.
|
||||
Each frequency can be modulated between -60/+24 dB.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a high pass filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectHighShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectLimiter" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a soft clip Limiter audio effect to an Audio bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a low pass filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectLowShelfFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a notch filter to the Audio Bus.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectPanner" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Panner audio effect to an Audio bus. Pans sound left or right.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectPhaser" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Phaser audio effect to an Audio bus.
|
||||
Combines the original signal with a copy that is slightly out of phase with the original.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectPitchShift" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Pitch shift audio effect to an Audio bus.
|
||||
Raises or lowers the pitch of original sound.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectReverb" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Adds a Reverb audio effect to an Audio bus.
|
||||
Simulates the sound of acoustic environments such as rooms, concert halls, caverns, or an open spaces.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0-stable">
|
||||
<class name="AudioEffectStereoEnhance" inherits="AudioEffect" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioServer" inherits="Object" category="Core" version="3.0-stable">
|
||||
<class name="AudioServer" inherits="Object" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Server interface for low level audio access.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStream" inherits="Resource" category="Core" version="3.0-stable">
|
||||
<class name="AudioStream" inherits="Resource" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Base class for audio streams.
|
||||
</brief_description>
|
||||
@@ -12,6 +12,12 @@
|
||||
<demos>
|
||||
</demos>
|
||||
<methods>
|
||||
<method name="get_length" qualifiers="const">
|
||||
<return type="float">
|
||||
</return>
|
||||
<description>
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<constants>
|
||||
</constants>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamPlayback" inherits="Reference" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Meta class for playing back audio.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamPlayer" inherits="Node" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Plays back audio.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamPlayer2D" inherits="Node2D" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Plays audio in 2D.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamPlayer3D" inherits="Spatial" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Plays 3D sound in 3D space
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamRandomPitch" inherits="AudioStream" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Plays audio with random pitch tweaking.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0-stable">
|
||||
<class name="AudioStreamSample" inherits="AudioStream" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Plays audio.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0-stable">
|
||||
<class name="BackBufferCopy" inherits="Node2D" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
Copies a region of the screen (or the whole screen) to a buffer so it can be accessed with the texscreen() shader instruction.
|
||||
</brief_description>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0-stable">
|
||||
<class name="BakedLightmap" inherits="VisualInstance" category="Core" version="3.0.2">
|
||||
<brief_description>
|
||||
</brief_description>
|
||||
<description>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user