feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
36
engine/misc/dist/html/editor.html
vendored
36
engine/misc/dist/html/editor.html
vendored
|
|
@ -363,24 +363,28 @@ window.addEventListener('load', () => {
|
|||
btn.style.display = '';
|
||||
}
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('service.worker.js').then(function (reg) {
|
||||
if (reg.waiting) {
|
||||
notifyUpdate(reg.waiting);
|
||||
}
|
||||
reg.addEventListener('updatefound', function () {
|
||||
const update = reg.installing;
|
||||
update.addEventListener('statechange', function () {
|
||||
if (update.state === 'installed') {
|
||||
// It's a new install, claim and perform aggressive caching.
|
||||
if (!reg.active) {
|
||||
update.postMessage('claim');
|
||||
} else {
|
||||
notifyUpdate(update);
|
||||
try {
|
||||
navigator.serviceWorker.register('service.worker.js').then(function (reg) {
|
||||
if (reg.waiting) {
|
||||
notifyUpdate(reg.waiting);
|
||||
}
|
||||
reg.addEventListener('updatefound', function () {
|
||||
const update = reg.installing;
|
||||
update.addEventListener('statechange', function () {
|
||||
if (update.state === 'installed') {
|
||||
// It's a new install, claim and perform aggressive caching.
|
||||
if (!reg.active) {
|
||||
update.postMessage('claim');
|
||||
} else {
|
||||
notifyUpdate(update);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
console.error('Error while registering service worker:', e);
|
||||
}
|
||||
}
|
||||
|
||||
const missing = Engine.getMissingFeatures({
|
||||
|
|
@ -706,7 +710,7 @@ function startEditor(zip) {
|
|||
} else if (typeof err === 'string') {
|
||||
setStatusNotice(err);
|
||||
} else {
|
||||
setStatusNotice('An unknown error occured');
|
||||
setStatusNotice('An unknown error occurred.');
|
||||
}
|
||||
setStatusMode('notice');
|
||||
initializing = false;
|
||||
|
|
|
|||
35
engine/misc/dist/html/full-size.html
vendored
35
engine/misc/dist/html/full-size.html
vendored
|
|
@ -38,7 +38,7 @@ body {
|
|||
}
|
||||
|
||||
#status {
|
||||
background-color: #242424;
|
||||
background-color: $GODOT_SPLASH_COLOR;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
|
@ -52,6 +52,20 @@ body {
|
|||
margin: auto;
|
||||
}
|
||||
|
||||
#status-splash.show-image--false {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#status-splash.fullsize--true {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
#status-splash.use-filter--false {
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
#status-progress, #status-notice {
|
||||
display: none;
|
||||
}
|
||||
|
|
@ -88,7 +102,7 @@ body {
|
|||
</noscript>
|
||||
|
||||
<div id="status">
|
||||
<img id="status-splash" src="$GODOT_SPLASH" alt="">
|
||||
<img id="status-splash" class="$GODOT_SPLASH_CLASSES" src="$GODOT_SPLASH" alt="">
|
||||
<progress id="status-progress"></progress>
|
||||
<div id="status-notice"></div>
|
||||
</div>
|
||||
|
|
@ -140,7 +154,7 @@ const engine = new Engine(GODOT_CONFIG);
|
|||
} else if (typeof err === 'string') {
|
||||
setStatusNotice(err);
|
||||
} else {
|
||||
setStatusNotice('An unknown error occured');
|
||||
setStatusNotice('An unknown error occurred.');
|
||||
}
|
||||
setStatusMode('notice');
|
||||
initializing = false;
|
||||
|
|
@ -152,9 +166,15 @@ const engine = new Engine(GODOT_CONFIG);
|
|||
|
||||
if (missing.length !== 0) {
|
||||
if (GODOT_CONFIG['serviceWorker'] && GODOT_CONFIG['ensureCrossOriginIsolationHeaders'] && 'serviceWorker' in navigator) {
|
||||
let serviceWorkerRegistrationPromise;
|
||||
try {
|
||||
serviceWorkerRegistrationPromise = navigator.serviceWorker.getRegistration();
|
||||
} catch (err) {
|
||||
serviceWorkerRegistrationPromise = Promise.reject(new Error('Service worker registration failed.'));
|
||||
}
|
||||
// There's a chance that installing the service worker would fix the issue
|
||||
Promise.race([
|
||||
navigator.serviceWorker.getRegistration().then((registration) => {
|
||||
serviceWorkerRegistrationPromise.then((registration) => {
|
||||
if (registration != null) {
|
||||
return Promise.reject(new Error('Service worker already exists.'));
|
||||
}
|
||||
|
|
@ -164,10 +184,11 @@ const engine = new Engine(GODOT_CONFIG);
|
|||
new Promise((resolve) => {
|
||||
setTimeout(() => resolve(), 2000);
|
||||
}),
|
||||
]).catch((err) => {
|
||||
console.error('Error while registering service worker:', err);
|
||||
}).then(() => {
|
||||
]).then(() => {
|
||||
// Reload if there was no error.
|
||||
window.location.reload();
|
||||
}).catch((err) => {
|
||||
console.error('Error while registering service worker:', err);
|
||||
});
|
||||
} else {
|
||||
// Display the message as usual
|
||||
|
|
|
|||
12
engine/misc/dist/html/service-worker.js
vendored
12
engine/misc/dist/html/service-worker.js
vendored
|
|
@ -17,8 +17,8 @@ const ENSURE_CROSSORIGIN_ISOLATION_HEADERS = ___GODOT_ENSURE_CROSSORIGIN_ISOLATI
|
|||
const CACHED_FILES = ___GODOT_CACHE___;
|
||||
// Files that we might not want the user to preload, and will only be cached on first load.
|
||||
/** @type {string[]} */
|
||||
const CACHABLE_FILES = ___GODOT_OPT_CACHE___;
|
||||
const FULL_CACHE = CACHED_FILES.concat(CACHABLE_FILES);
|
||||
const CACHEABLE_FILES = ___GODOT_OPT_CACHE___;
|
||||
const FULL_CACHE = CACHED_FILES.concat(CACHEABLE_FILES);
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(CACHED_FILES)));
|
||||
|
|
@ -99,8 +99,8 @@ self.addEventListener(
|
|||
const referrer = event.request.referrer || '';
|
||||
const base = referrer.slice(0, referrer.lastIndexOf('/') + 1);
|
||||
const local = url.startsWith(base) ? url.replace(base, '') : '';
|
||||
const isCachable = FULL_CACHE.some((v) => v === local) || (base === referrer && base.endsWith(CACHED_FILES[0]));
|
||||
if (isNavigate || isCachable) {
|
||||
const isCacheable = FULL_CACHE.some((v) => v === local) || (base === referrer && base.endsWith(CACHED_FILES[0]));
|
||||
if (isNavigate || isCacheable) {
|
||||
event.respondWith((async () => {
|
||||
// Try to use cache first
|
||||
const cache = await caches.open(CACHE_NAME);
|
||||
|
|
@ -112,7 +112,7 @@ self.addEventListener(
|
|||
if (missing) {
|
||||
try {
|
||||
// Try network if some cached file is missing (so we can display offline page in case).
|
||||
const response = await fetchAndCache(event, cache, isCachable);
|
||||
const response = await fetchAndCache(event, cache, isCacheable);
|
||||
return response;
|
||||
} catch (e) {
|
||||
// And return the hopefully always cached offline page in case of network failure.
|
||||
|
|
@ -129,7 +129,7 @@ self.addEventListener(
|
|||
return cached;
|
||||
}
|
||||
// Try network if don't have it in cache.
|
||||
const response = await fetchAndCache(event, cache, isCachable);
|
||||
const response = await fetchAndCache(event, cache, isCacheable);
|
||||
return response;
|
||||
})());
|
||||
} else if (ENSURE_CROSSORIGIN_ISOLATION_HEADERS) {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
054F8BE62D38852F00B81423 /* MetalFX.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 054F8BE52D38852F00B81423 /* MetalFX.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
1F1575721F582BE20003B888 /* dylibs in Resources */ = {isa = PBXBuildFile; fileRef = 1F1575711F582BE20003B888 /* dylibs */; };
|
||||
DEADBEEF2F582BE20003B888 /* $binary.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = DEADBEEF1F582BE20003B888 /* $binary.xcframework */; };
|
||||
$modules_buildfile
|
||||
|
|
@ -42,6 +43,7 @@
|
|||
1FF4C1881F584E6300A41E41 /* $binary.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "$binary.entitlements"; sourceTree = "<group>"; };
|
||||
1FF8DBB01FBA9DE1009DE660 /* dummy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = dummy.cpp; sourceTree = "<group>"; };
|
||||
9039D3BD24C093AC0020482C /* MoltenVK.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MoltenVK; path = MoltenVK.xcframework; sourceTree = "<group>"; };
|
||||
054F8BE52D38852F00B81423 /* MetalFX.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalFX.framework; path = System/Library/Frameworks/MetalFX.framework; sourceTree = SDKROOT; };
|
||||
D07CD44D1C5D589C00B7FB28 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
|
||||
D0BCFE3418AEBDA2004A7AAE /* $binary.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "$binary.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
D0BCFE4318AEBDA2004A7AAE /* $binary-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "$binary-Info.plist"; sourceTree = "<group>"; };
|
||||
|
|
@ -60,6 +62,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9039D3BE24C093AC0020482C /* MoltenVK.xcframework in Frameworks */,
|
||||
054F8BE62D38852F00B81423 /* MetalFX.framework in Frameworks */,
|
||||
DEADBEEF2F582BE20003B888 /* $binary.xcframework */,
|
||||
$modules_buildphase
|
||||
$additional_pbx_frameworks_build
|
||||
|
|
@ -94,6 +97,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
9039D3BD24C093AC0020482C /* MoltenVK.xcframework */,
|
||||
054F8BE52D38852F00B81423 /* MetalFX.framework */,
|
||||
DEADBEEF1F582BE20003B888 /* $binary.xcframework */,
|
||||
$modules_buildgrp
|
||||
$additional_pbx_frameworks_refs
|
||||
|
|
@ -339,6 +343,7 @@
|
|||
MARKETING_VERSION = $short_version;
|
||||
CURRENT_PROJECT_VERSION = $version;
|
||||
PROVISIONING_PROFILE = "$provisioning_profile_uuid_debug";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "$provisioning_profile_specifier_debug";
|
||||
TARGETED_DEVICE_FAMILY = "$targeted_device_family";
|
||||
VALID_ARCHS = "arm64 x86_64";
|
||||
WRAPPER_EXTENSION = app;
|
||||
|
|
@ -374,6 +379,7 @@
|
|||
MARKETING_VERSION = $short_version;
|
||||
CURRENT_PROJECT_VERSION = $version;
|
||||
PROVISIONING_PROFILE = "$provisioning_profile_uuid_release";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "$provisioning_profile_specifier_release";
|
||||
TARGETED_DEVICE_FAMILY = "$targeted_device_family";
|
||||
VALID_ARCHS = "arm64 x86_64";
|
||||
WRAPPER_EXTENSION = app;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,6 @@
|
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
$entitlements_push_notifications
|
||||
$entitlements_full
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<project_license>MIT</project_license>
|
||||
<name>Godot Engine</name>
|
||||
<summary>Multi-platform 2D and 3D game engine with a feature-rich editor</summary>
|
||||
<launchable type="desktop-id">org.godotengine.Godot.desktop</launchable>
|
||||
<launchable type="desktop-id">org.godotengine.Godot.desktop</launchable>
|
||||
<description>
|
||||
<p>
|
||||
Godot is an advanced, feature-packed, multi-platform 2D and 3D game
|
||||
|
|
|
|||
|
|
@ -4,11 +4,15 @@ GenericName=Libre game engine
|
|||
GenericName[el]=Ελεύθερη μηχανή παιχνιδιού
|
||||
GenericName[fr]=Moteur de jeu libre
|
||||
GenericName[nl]=Libre game-engine
|
||||
GenericName[ru]=Свободный игровой движок
|
||||
GenericName[uk]=Вільний ігровий рушій
|
||||
GenericName[zh_CN]=自由的游戏引擎
|
||||
Comment=Multi-platform 2D and 3D game engine with a feature-rich editor
|
||||
Comment[el]=2D και 3D μηχανή παιχνιδιού πολλαπλών πλατφορμών με επεξεργαστή πλούσιο σε χαρακτηριστικά
|
||||
Comment[fr]=Moteur de jeu 2D et 3D multiplateforme avec un éditeur riche en fonctionnalités
|
||||
Comment[nl]=Multi-platform 2D- en 3d-game-engine met een veelzijdige editor
|
||||
Comment[nl]=Multi-platform 2D- en 3D-game-engine met een veelzijdige editor
|
||||
Comment[ru]=Кроссплатформенный движок с многофункциональным редактором для 2D- и 3D-игр
|
||||
Comment[uk]=Багатофункціональний кросплатформний рушій для створення 2D та 3D ігор
|
||||
Comment[zh_CN]=多平台 2D 和 3D 游戏引擎,带有功能丰富的编辑器
|
||||
Exec=godot %f
|
||||
Icon=godot
|
||||
|
|
|
|||
|
|
@ -49,12 +49,17 @@ $usage_descriptions
|
|||
<string>NSApplication</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.$app_category</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$min_version</string>
|
||||
<key>LSArchitecturePriority</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>LSMinimumSystemVersionByArchitecture</key>
|
||||
<dict>
|
||||
<key>arm64</key>
|
||||
<string>$min_version_arm64</string>
|
||||
<key>x86_64</key>
|
||||
<string>$min_version</string>
|
||||
<string>$min_version_x86_64</string>
|
||||
</dict>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
$highres
|
||||
|
|
|
|||
|
|
@ -17,17 +17,19 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.3</string>
|
||||
<string>4.4</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>godot</string>
|
||||
<string>GODO</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>4.3</string>
|
||||
<string>4.4</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>Microphone access is required to capture audio.</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>Camera access is required to capture video.</string>
|
||||
<key>NSRequiresAquaSystemAppearance</key>
|
||||
<false/>
|
||||
<key>NSCameraUseContinuityCameraDeviceType</key>
|
||||
<true/>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>© 2007-present Juan Linietsky, Ariel Manzur & Godot Engine contributors</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
|
|
@ -38,10 +40,15 @@
|
|||
<string>NSApplication</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.developer-tools</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.12</string>
|
||||
<key>LSArchitecturePriority</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>LSMinimumSystemVersionByArchitecture</key>
|
||||
<dict>
|
||||
<key>arm64</key>
|
||||
<string>11.0</string>
|
||||
<key>x86_64</key>
|
||||
<string>10.12</string>
|
||||
</dict>
|
||||
|
|
|
|||
2
engine/misc/dist/windows/godot.iss
vendored
2
engine/misc/dist/windows/godot.iss
vendored
|
|
@ -1,5 +1,5 @@
|
|||
#define MyAppName "Godot Engine"
|
||||
#define MyAppVersion "4.3"
|
||||
#define MyAppVersion "4.4"
|
||||
#define MyAppPublisher "Godot Engine contributors"
|
||||
#define MyAppURL "https://godotengine.org/"
|
||||
#define MyAppExeName "godot.exe"
|
||||
|
|
|
|||
63
engine/misc/error_suppressions/ubsan.txt
Normal file
63
engine/misc/error_suppressions/ubsan.txt
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
enum:thirdparty/glslang/SPIRV/spirv.hpp
|
||||
float-divide-by-zero:thirdparty/amd-fsr2/ffx_fsr2.cpp
|
||||
float-divide-by-zero:thirdparty/misc/ok_color.h
|
||||
float-divide-by-zero:thirdparty/rvo2/rvo2_2d/Agent2d.cpp
|
||||
float-divide-by-zero:thirdparty/thorvg/src/renderer/sw_engine/tvgSwFill.cpp
|
||||
function:thirdparty/embree/common/sys/thread.cpp
|
||||
function:thirdparty/embree/kernels/common/accel.h
|
||||
function:thirdparty/xatlas/xatlas.cpp
|
||||
implicit-integer-sign-change:thirdparty/basis_universal/transcoder/basisu_astc_helpers.h
|
||||
implicit-integer-sign-change:thirdparty/embree/common/lexers/../sys/ref.h
|
||||
implicit-integer-sign-change:thirdparty/embree/common/lexers/tokenstream.cpp
|
||||
implicit-integer-sign-change:thirdparty/embree/common/sys/sysinfo.cpp
|
||||
implicit-integer-sign-change:thirdparty/embree/common/tasking/taskschedulerinternal.cpp
|
||||
implicit-integer-sign-change:thirdparty/embree/common/tasking/taskschedulerinternal.h
|
||||
implicit-integer-sign-change:thirdparty/embree/kernels/bvh/../common/../builders/primref.h
|
||||
implicit-integer-sign-change:thirdparty/embree/kernels/bvh/../common/../../common/sys/../math/../simd/vfloat4_sse2.h
|
||||
implicit-integer-sign-change:thirdparty/embree/kernels/bvh/../common/../../common/sys/../math/../simd/vuint4_sse2.h
|
||||
implicit-integer-sign-change:thirdparty/embree/kernels/bvh/../common/vector.h
|
||||
implicit-integer-sign-change:thirdparty/embree/kernels/bvh/../geometry/triangle.h
|
||||
implicit-integer-sign-change:thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
|
||||
implicit-integer-sign-change:thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
|
||||
implicit-integer-sign-change:thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
|
||||
implicit-integer-sign-change:thirdparty/glslang/glslang/MachineIndependent/Versions.cpp
|
||||
implicit-integer-sign-change:thirdparty/glslang/SPIRV/hex_float.h
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/hb-algs.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/hb-buffer.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/hb-cache.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/hb-face.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/OT/Layout/GDEF/../../../hb-cache.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/OT/Layout/GPOS/../../../hb-ot-layout-gsubgpos.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/OT/Layout/GPOS/../../../OT/Layout/GDEF/../../../hb-cache.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/OT/Layout/GSUB/../../../hb-ot-layout-gsubgpos.hh
|
||||
implicit-integer-sign-change:thirdparty/harfbuzz/src/OT/name/name.hh
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/bmpset.cpp
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/ubidiln.cpp
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/unicode/unistr.h
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/unistr.cpp
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/uresbund.cpp
|
||||
implicit-integer-sign-change:thirdparty/icu4c/common/ustrtrns.cpp
|
||||
implicit-integer-sign-change:thirdparty/jpeg-compressor/jpgd.cpp
|
||||
implicit-integer-sign-change:thirdparty/libogg/bitwise.c
|
||||
implicit-integer-sign-change:thirdparty/libvorbis/info.c
|
||||
implicit-integer-sign-change:thirdparty/libvorbis/sharedbook.c
|
||||
implicit-integer-sign-change:thirdparty/mbedtls/library/base64.c
|
||||
implicit-integer-sign-change:thirdparty/misc/smolv.cpp
|
||||
implicit-integer-sign-change:thirdparty/recastnavigation/Recast/Include/Recast.h
|
||||
implicit-integer-sign-change:thirdparty/recastnavigation/Recast/Source/RecastMesh.cpp
|
||||
implicit-integer-sign-change:thirdparty/spirv-reflect/spirv_reflect.c
|
||||
implicit-integer-sign-change:thirdparty/thorvg/src/renderer/sw_engine/tvgSwRaster.cpp
|
||||
implicit-integer-sign-change:thirdparty/tinyexr/tinyexr.h
|
||||
implicit-integer-sign-change:thirdparty/vulkan/vk_mem_alloc.h
|
||||
implicit-integer-sign-change:thirdparty/xatlas/xatlas.cpp
|
||||
implicit-integer-sign-change:thirdparty/zlib/trees.c
|
||||
implicit-integer-sign-change:thirdparty/zstd/compress/zstd_cwksp.h
|
||||
nonnull-attribute:thirdparty/spirv-reflect/spirv_reflect.c
|
||||
pointer-overflow:thirdparty/libogg/framing.c
|
||||
shift-base:thirdparty/libogg/bitwise.c
|
||||
shift-base:thirdparty/libvorbis/sharedbook.c
|
||||
shift-base:thirdparty/misc/FastNoiseLite.h
|
||||
shift-base:thirdparty/tinyexr/tinyexr.h
|
||||
shift-exponent:thirdparty/misc/mikktspace.c
|
||||
signed-integer-overflow:thirdparty/misc/FastNoiseLite.h
|
||||
|
|
@ -1,10 +1,5 @@
|
|||
This file contains the expected output of --validate-extension-api when run against the extension_api.json of the
|
||||
4.1-stable tag (the basename of this file).
|
||||
|
||||
Only lines that start with "Validate extension JSON:" matter, everything else is considered a comment and ignored. They
|
||||
should instead be used to justify these changes and describe how users should work around these changes.
|
||||
|
||||
Add new entries at the end of the file.
|
||||
This file contains, when concatenated to the expected output since 4.2, the expected output of --validate-extension-api
|
||||
when run against the extension_api.json of the 4.1-stable tag (first part of the basename of this file).
|
||||
|
||||
## Changes between 4.1-stable and 4.2-stable
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,5 @@
|
|||
This file contains the expected output of --validate-extension-api when run against the extension_api.json of the
|
||||
4.2-stable tag (the basename of this file).
|
||||
|
||||
Only lines that start with "Validate extension JSON:" matter, everything else is considered a comment and ignored. They
|
||||
should instead be used to justify these changes and describe how users should work around these changes.
|
||||
|
||||
Add new entries at the end of the file.
|
||||
This file contains, when concatenated to the expected output since 4.3, the expected output of --validate-extension-api
|
||||
when run against the extension_api.json of the 4.2-stable tag (first part of the basename of this file).
|
||||
|
||||
## Changes between 4.2-stable and 4.3-stable
|
||||
|
||||
|
|
@ -212,7 +207,7 @@ Compatibility method registered.
|
|||
|
||||
GH-89024
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RichTextLabel/methods/push_meta/arguments': size changed value in new API, from 1 to 2.
|
||||
Validate extension JSON: Error: Field 'classes/RichTextLabel/methods/push_meta/arguments': size changed value in new API, from 1 to 3.
|
||||
|
||||
Added optional argument. Compatibility method registered.
|
||||
|
||||
336
engine/misc/extension_api_validation/4.3-stable.expected
Normal file
336
engine/misc/extension_api_validation/4.3-stable.expected
Normal file
|
|
@ -0,0 +1,336 @@
|
|||
This file contains the expected output of --validate-extension-api when run against the extension_api.json of the
|
||||
4.3-stable tag (the basename of this file).
|
||||
|
||||
Only lines that start with "Validate extension JSON:" matter, everything else is considered a comment and ignored. They
|
||||
should instead be used to justify these changes and describe how users should work around these changes.
|
||||
|
||||
Add new entries at the end of the file.
|
||||
|
||||
## Changes between 4.3-stable and 4.4-stable
|
||||
GH-95374
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/ShapeCast2D/properties/collision_result': getter changed value in new API, from "_get_collision_result" to &"get_collision_result".
|
||||
Validate extension JSON: Error: Field 'classes/ShapeCast3D/properties/collision_result': getter changed value in new API, from "_get_collision_result" to &"get_collision_result".
|
||||
|
||||
These getters have been renamed to expose them. GDExtension language bindings couldn't have exposed these properties before.
|
||||
|
||||
|
||||
GH-90993
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments': size changed value in new API, from 9 to 10.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/9': type changed value in new API, from "Array" to "int".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/9': default_value changed value in new API, from "Array[RID]([])" to "0".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/9': type changed value in new API, from "typedarray::RID" to "int".
|
||||
|
||||
draw_list_begin added a new optional debug argument called breadcrumb.
|
||||
There used to be an Array argument as arg #9 initially, then changed to typedarray::RID in 4.1, and finally removed in 4.3.
|
||||
Since we're adding a new one at the same location, we need to silence those warnings for 4.1 and 4.3.
|
||||
|
||||
|
||||
GH-95126
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/Shader/methods/get_default_texture_parameter/return_value': type changed value in new API, from "Texture2D" to "Texture".
|
||||
Validate extension JSON: Error: Field 'classes/Shader/methods/set_default_texture_parameter/arguments/1': type changed value in new API, from "Texture2D" to "Texture".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeCubemap/methods/get_cube_map/return_value': type changed value in new API, from "Cubemap" to "TextureLayered".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeCubemap/methods/set_cube_map/arguments/0': type changed value in new API, from "Cubemap" to "TextureLayered".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeCubemap/properties/cube_map': type changed value in new API, from "Cubemap" to "Cubemap,CompressedCubemap,PlaceholderCubemap,TextureCubemapRD".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeTexture2DArray/methods/get_texture_array/return_value': type changed value in new API, from "Texture2DArray" to "TextureLayered".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeTexture2DArray/methods/set_texture_array/arguments/0': type changed value in new API, from "Texture2DArray" to "TextureLayered".
|
||||
Validate extension JSON: Error: Field 'classes/VisualShaderNodeTexture2DArray/properties/texture_array': type changed value in new API, from "Texture2DArray" to "Texture2DArray,CompressedTexture2DArray,PlaceholderTexture2DArray,Texture2DArrayRD".
|
||||
|
||||
Allow setting a cubemap as default parameter to shader.
|
||||
Compatibility methods registered.
|
||||
|
||||
|
||||
GH-93605
|
||||
--------
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/Semaphore/methods/post': arguments
|
||||
|
||||
Optional arguments added. Compatibility methods registered.
|
||||
|
||||
|
||||
GH-95212
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RegEx/methods/compile/arguments': size changed value in new API, from 1 to 2.
|
||||
Validate extension JSON: Error: Field 'classes/RegEx/methods/create_from_string/arguments': size changed value in new API, from 1 to 2.
|
||||
|
||||
Add optional argument to control error printing on compilation fail. Compatibility methods registered.
|
||||
|
||||
|
||||
GH-95375
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/AudioStreamPlayer/properties/playing': setter changed value in new API, from "_set_playing" to &"set_playing".
|
||||
Validate extension JSON: Error: Field 'classes/AudioStreamPlayer2D/properties/playing': setter changed value in new API, from "_set_playing" to &"set_playing".
|
||||
Validate extension JSON: Error: Field 'classes/AudioStreamPlayer3D/properties/playing': setter changed value in new API, from "_set_playing" to &"set_playing".
|
||||
|
||||
These setters have been renamed to expose them. GDExtension language bindings couldn't have exposed these properties before.
|
||||
|
||||
|
||||
GH-94322
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/EditorInterface/methods/popup_node_selector/arguments': size changed value in new API, from 2 to 3.
|
||||
Validate extension JSON: Error: Field 'classes/EditorInterface/methods/popup_property_selector/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Added optional argument to popup_property_selector and popup_node_selector to specify the current value.
|
||||
|
||||
|
||||
GH-94434
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/OS/methods/execute_with_pipe/arguments': size changed value in new API, from 2 to 3.
|
||||
|
||||
Optional argument added. Compatibility method registered.
|
||||
|
||||
|
||||
GH-94684
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/SoftBody3D/methods/set_point_pinned/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Optional argument added to allow for adding pin point at specific index. Compatibility method registered.
|
||||
|
||||
|
||||
GH-97281
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/InputMap/methods/add_action/arguments/1': default_value changed value in new API, from "0.5" to "0.2".
|
||||
|
||||
Default deadzone value was changed. No adjustments should be necessary.
|
||||
Compatibility method registered.
|
||||
|
||||
|
||||
GH-97020
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/AnimationNode/methods/_process': is_const changed value in new API, from true to false.
|
||||
|
||||
`_process` virtual method fixed to be non const instead.
|
||||
|
||||
|
||||
GH-97257
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/EditorFeatureProfile/enums/Feature/values/FEATURE_MAX': value changed value in new API, from 8.0 to 9.
|
||||
|
||||
New entry to the `EditorFeatureProfile.Feature` enum added. Those need to go before `FEATURE_MAX`, which will always cause a compatibility break.
|
||||
|
||||
|
||||
GH-91201
|
||||
--------
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/OS/methods/read_string_from_stdin': arguments
|
||||
|
||||
Added optional argument. Compatibility method registered.
|
||||
|
||||
|
||||
GH-98918
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/FileAccess/methods/open_encrypted/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Optional argument added to allow setting initialization vector. Compatibility method registered.
|
||||
|
||||
|
||||
GH-98972
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/TranslationServer/methods/standardize_locale/arguments': size changed value in new API, from 1 to 2.
|
||||
|
||||
Optional argument added. Compatibility method registered.
|
||||
|
||||
|
||||
GH-99424
|
||||
--------
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_BOTTOM
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_FAR
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_LEFT
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_NEAR
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_RIGHT
|
||||
Validate extension JSON: API was removed: builtin_classes/Projection/constants/PLANE_TOP
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector2/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector2/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector2i/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector2i/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3/constants/AXIS_Z
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3i/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3i/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector3i/constants/AXIS_Z
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4/constants/AXIS_W
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4/constants/AXIS_Z
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4i/constants/AXIS_W
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4i/constants/AXIS_X
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4i/constants/AXIS_Y
|
||||
Validate extension JSON: API was removed: builtin_classes/Vector4i/constants/AXIS_Z
|
||||
|
||||
These constants have been replaced with corresponding enum constants.
|
||||
|
||||
|
||||
GH-98670
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RenderSceneBuffersRD/methods/create_texture/arguments': size changed value in new API, from 9 to 10.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments': size changed value in new API, from 10 to 7.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments': size changed value in new API, from 9 to 7.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/1': type changed value in new API, from "enum::RenderingDevice.InitialAction" to "bitfield::RenderingDevice.DrawFlags".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/2': type changed value in new API, from "enum::RenderingDevice.FinalAction" to "PackedColorArray".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/3': type changed value in new API, from "enum::RenderingDevice.InitialAction" to "float".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/4': type changed value in new API, from "enum::RenderingDevice.FinalAction" to "int".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/5': default_value changed value in new API, from "PackedColorArray()" to "Rect2(0, 0, 0, 0)".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/5': type changed value in new API, from "PackedColorArray" to "Rect2".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/6': default_value changed value in new API, from "1.0" to "0".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/6': meta changed value in new API, from "float" to "uint32".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/draw_list_begin/arguments/6': type changed value in new API, from "float" to "int".
|
||||
|
||||
Draw lists no longer require the initial and final action for color and depth attachments to be specified.
|
||||
Draw lists can now specify if a particular color, depth, or stencil attachment should be cleared.
|
||||
|
||||
|
||||
GH-78289
|
||||
--------
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_16': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_32': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_64': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_8': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_buffer': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_csv_line': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_double': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_half': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_float': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_line': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_pascal_string': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_real': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_string': return_value
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/FileAccess/methods/store_var': return_value
|
||||
|
||||
Added return values. Compatibility method registered.
|
||||
|
||||
|
||||
GH-99481
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RichTextLabel/methods/push_meta/arguments': size changed value in new API, from 2 to 3.
|
||||
|
||||
Optional argument added to set tooltip. Compatibility method registered.
|
||||
|
||||
|
||||
GH-98443
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/Control/properties/offset_bottom': type changed value in new API, from "int" to "float".
|
||||
Validate extension JSON: Error: Field 'classes/Control/properties/offset_left': type changed value in new API, from "int" to "float".
|
||||
Validate extension JSON: Error: Field 'classes/Control/properties/offset_right': type changed value in new API, from "int" to "float".
|
||||
Validate extension JSON: Error: Field 'classes/Control/properties/offset_top': type changed value in new API, from "int" to "float".
|
||||
|
||||
Property type changed to float to match the actual internal API and documentation.
|
||||
|
||||
|
||||
GH-99455
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RenderingServer/methods/multimesh_allocate_data/arguments': size changed value in new API, from 5 to 6.
|
||||
|
||||
Optional argument added to allow setting indirect draw mode on Multimesh. Compatibility method registered.
|
||||
|
||||
|
||||
GH-100129
|
||||
---------
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer2D/methods/query_path': is_const changed value in new API, from true to false.
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer3D/methods/query_path': is_const changed value in new API, from true to false.
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer2D/methods/query_path/arguments': size changed value in new API, from 2 to 3.
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer3D/methods/query_path/arguments': size changed value in new API, from 2 to 3.
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer2D/methods/map_get_path': is_const changed value in new API, from true to false.
|
||||
Validate extension JSON: Error: Field 'classes/NavigationServer3D/methods/map_get_path': is_const changed value in new API, from true to false.
|
||||
|
||||
`query_path` and `map_get_path` methods changed to be non const due to internal compatibility and server changes.
|
||||
Added optional callback parameters to `query_path` functions. Compatibility methods registered.
|
||||
|
||||
|
||||
GH-90057
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/EditorInterface/methods/open_scene_from_path/arguments': size changed value in new API, from 1 to 2.
|
||||
|
||||
Added optional argument to open_scene_from_path to create a new inherited scene.
|
||||
Compatibility method registered.
|
||||
|
||||
|
||||
GH-97449
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/GraphEdit/methods/connect_node/arguments': size changed value in new API, from 4 to 5.
|
||||
|
||||
Added optional argument to connect_node to specify whether the connection should be automatically deleted if invalid. Compatibility method registered.
|
||||
|
||||
|
||||
GH-88349
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/CSGMesh3D/properties/mesh': type changed value in new API, from "Mesh" to "Mesh,-PlaneMesh,-PointMesh,-QuadMesh,-RibbonTrailMesh".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_albedo': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_emission': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_normal': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_orm': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_albedo': type changed value in new API, from "Texture" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_emission': type changed value in new API, from "Texture" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_normal': type changed value in new API, from "Texture" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Decal/properties/texture_orm': type changed value in new API, from "Texture" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/Light3D/properties/light_projector': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
Validate extension JSON: Error: Field 'classes/PointLight2D/properties/texture': type changed value in new API, from "Texture2D" to "Texture2D,-AnimatedTexture,-AtlasTexture,-CameraTexture,-CanvasTexture,-MeshTexture,-Texture2DRD,-ViewportTexture".
|
||||
|
||||
Property hints modified to disallow resource types that don't work. The types allowed are now more restricted, but this change only impacts the editor and not the actual exposed API. No adjustments should be necessary.
|
||||
Decal properties were previously changed from Texture to Texture2D in 4.2, so we need to silence those warnings too.
|
||||
|
||||
|
||||
GH-98441
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'global_enums/KeyModifierMask/values/KEY_MODIFIER_MASK': value changed value in new API, from 5.32677e+08 to 2130706432.
|
||||
|
||||
Key modifier mask value corrected. API change documented for compatibility.
|
||||
|
||||
|
||||
GH-92089
|
||||
--------
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/CPUParticles2D/methods/restart': arguments
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/CPUParticles3D/methods/restart': arguments
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/GPUParticles2D/methods/restart': arguments
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/GPUParticles3D/methods/restart': arguments
|
||||
|
||||
Added an optional keep_seed parameter to restart particles, to avoid modifying the seed to do particle seeking.
|
||||
|
||||
|
||||
GH-101482
|
||||
---------
|
||||
Validate extension JSON: Error: Field 'classes/RichTextLabel/methods/set_table_column_expand/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Added optional "shrink" argument. Compatibility method registered.
|
||||
|
||||
|
||||
GH-101561
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/index_buffer_create/arguments': size changed value in new API, from 4 to 5.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/uniform_buffer_create/arguments': size changed value in new API, from 2 to 3.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/storage_buffer_create/arguments': size changed value in new API, from 3 to 4.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/vertex_buffer_create/arguments': size changed value in new API, from 3 to 4.
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/vertex_buffer_create/arguments/2': default_value changed value in new API, from "false" to "0".
|
||||
Validate extension JSON: Error: Field 'classes/RenderingDevice/methods/vertex_buffer_create/arguments/2': type changed value in new API, from "bool" to "bitfield::RenderingDevice.BufferCreationBits".
|
||||
|
||||
Optional argument (creation flags) added. Compatibility methods registered.
|
||||
|
||||
|
||||
GH-101531
|
||||
---------
|
||||
Validate extension JSON: API was removed: classes/EditorSceneFormatImporter/methods/_get_import_flags
|
||||
|
||||
This virtual method, and the internal public `get_import_flags`, were never used by the engine, since it was open sourced.
|
||||
So we're removing it despite the compat breakage as there's no way for users to rely on this affecting engine behavior.
|
||||
|
||||
|
||||
GH-100913
|
||||
---------
|
||||
Validate extension JSON: Error: Field 'classes/TextEdit/methods/get_line_column_at_pos/arguments': size changed value in new API, from 2 to 3.
|
||||
|
||||
Added optional argument to disallow positions that are outside the column range of the line. Compatibility method registered.
|
||||
|
||||
|
||||
GH-102796
|
||||
---------
|
||||
Validate extension JSON: Error: Field 'classes/GraphEdit/signals/frame_rect_changed/arguments/1': type changed value in new API, from "Vector2" to "Rect2".
|
||||
|
||||
Previous type was incorrect. No compatibility system for signal arguments.
|
||||
|
||||
|
||||
GH-99297
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/EditorTranslationParserPlugin/methods/_parse_file/arguments': size changed value in new API, from 3 to 1.
|
||||
Validate extension JSON: JSON file: Field was added in a way that breaks compatibility 'classes/EditorTranslationParserPlugin/methods/_parse_file': return_value
|
||||
|
||||
Returning by argument reference is not safe in extensions, changed to returning as an Array and merged with `get_comments`. Compatibility method registered.
|
||||
|
|
@ -36,11 +36,16 @@ for file in sys.argv[1:]:
|
|||
break
|
||||
|
||||
if HEADER_CHECK_OFFSET < 0:
|
||||
invalid.append(file)
|
||||
continue
|
||||
|
||||
HEADER_BEGIN_OFFSET = HEADER_CHECK_OFFSET + 1
|
||||
HEADER_END_OFFSET = len(lines) - 1
|
||||
|
||||
if HEADER_BEGIN_OFFSET >= HEADER_END_OFFSET:
|
||||
invalid.append(file)
|
||||
continue
|
||||
|
||||
split = file.split("/") # Already in posix-format.
|
||||
|
||||
prefix = ""
|
||||
|
|
|
|||
21
engine/misc/scripts/install_d3d12_sdk_windows.py
Executable file → Normal file
21
engine/misc/scripts/install_d3d12_sdk_windows.py
Executable file → Normal file
|
|
@ -6,16 +6,9 @@ import subprocess
|
|||
import sys
|
||||
import urllib.request
|
||||
|
||||
# Enable ANSI escape code support on Windows 10 and later (for colored console output).
|
||||
# <https://github.com/python/cpython/issues/73245>
|
||||
if sys.platform == "win32":
|
||||
from ctypes import byref, c_int, windll
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../"))
|
||||
|
||||
stdout_handle = windll.kernel32.GetStdHandle(c_int(-11))
|
||||
mode = c_int(0)
|
||||
windll.kernel32.GetConsoleMode(c_int(stdout_handle), byref(mode))
|
||||
mode = c_int(mode.value | 4)
|
||||
windll.kernel32.SetConsoleMode(c_int(stdout_handle), mode)
|
||||
from misc.utility.color import Ansi
|
||||
|
||||
# Base Godot dependencies path
|
||||
# If cross-compiling (no LOCALAPPDATA), we install in `bin`
|
||||
|
|
@ -49,7 +42,7 @@ if not os.path.exists(deps_folder):
|
|||
os.makedirs(deps_folder)
|
||||
|
||||
# Mesa NIR
|
||||
print("\x1b[1m[1/3] Mesa NIR\x1b[0m")
|
||||
print(f"{Ansi.BOLD}[1/3] Mesa NIR{Ansi.RESET}")
|
||||
if os.path.isfile(mesa_archive):
|
||||
os.remove(mesa_archive)
|
||||
print(f"Downloading Mesa NIR {mesa_filename} ...")
|
||||
|
|
@ -76,7 +69,7 @@ if dlltool == "":
|
|||
dlltool = shutil.which("x86_64-w64-mingw32-dlltool") or ""
|
||||
has_mingw = gendef != "" and dlltool != ""
|
||||
|
||||
print("\x1b[1m[2/3] WinPixEventRuntime\x1b[0m")
|
||||
print(f"{Ansi.BOLD}[2/3] WinPixEventRuntime{Ansi.RESET}")
|
||||
if os.path.isfile(pix_archive):
|
||||
os.remove(pix_archive)
|
||||
print(f"Downloading WinPixEventRuntime {pix_version} ...")
|
||||
|
|
@ -107,7 +100,7 @@ else:
|
|||
print(f"WinPixEventRuntime {pix_version} installed successfully.\n")
|
||||
|
||||
# DirectX 12 Agility SDK
|
||||
print("\x1b[1m[3/3] DirectX 12 Agility SDK\x1b[0m")
|
||||
print(f"{Ansi.BOLD}[3/3] DirectX 12 Agility SDK{Ansi.RESET}")
|
||||
if os.path.isfile(agility_sdk_archive):
|
||||
os.remove(agility_sdk_archive)
|
||||
print(f"Downloading DirectX 12 Agility SDK {agility_sdk_version} ...")
|
||||
|
|
@ -123,5 +116,5 @@ os.remove(agility_sdk_archive)
|
|||
print(f"DirectX 12 Agility SDK {agility_sdk_version} installed successfully.\n")
|
||||
|
||||
# Complete message
|
||||
print(f'\x1b[92mAll Direct3D 12 SDK components were installed to "{deps_folder}" successfully!\x1b[0m')
|
||||
print('\x1b[92mYou can now build Godot with Direct3D 12 support enabled by running "scons d3d12=yes".\x1b[0m')
|
||||
print(f'{Ansi.GREEN}All Direct3D 12 SDK components were installed to "{deps_folder}" successfully!{Ansi.RESET}')
|
||||
print(f'{Ansi.GREEN}You can now build Godot with Direct3D 12 support enabled by running "scons d3d12=yes".{Ansi.RESET}')
|
||||
|
|
|
|||
|
|
@ -2,21 +2,40 @@
|
|||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
new_ver_full=''
|
||||
|
||||
# Check currently installed and latest available Vulkan SDK versions.
|
||||
if command -v jq 2>&1 >/dev/null; then
|
||||
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/config.json" -o /tmp/vulkan-sdk.json
|
||||
|
||||
new_ver_full=`jq -r '.version' /tmp/vulkan-sdk.json`
|
||||
new_ver=`echo "$new_ver_full" | awk -F. '{ printf("%d%02d%04d%02d\n", $1,$2,$3,$4); }';`
|
||||
|
||||
rm -f /tmp/vulkan-sdk.json
|
||||
|
||||
for f in $HOME/VulkanSDK/*; do
|
||||
if [ -d "$f" ]; then
|
||||
f=`echo "${f##*/}" | awk -F. '{ printf("%d%02d%04d%02d\n", $1,$2,$3,$4); }';`
|
||||
if [ $f -ge $new_ver ]; then
|
||||
echo 'Latest or newer Vulkan SDK is already installed. Skipping installation.'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Download and install the Vulkan SDK.
|
||||
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.dmg" -o /tmp/vulkan-sdk.dmg
|
||||
hdiutil attach /tmp/vulkan-sdk.dmg -mountpoint /Volumes/vulkan-sdk
|
||||
/Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan \
|
||||
--accept-licenses --default-answer --confirm-command install
|
||||
curl -L "https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.zip" -o /tmp/vulkan-sdk.zip
|
||||
unzip /tmp/vulkan-sdk.zip -d /tmp
|
||||
|
||||
cnt=5
|
||||
until hdiutil detach -force /Volumes/vulkan-sdk
|
||||
do
|
||||
[[ cnt -eq "0" ]] && break
|
||||
sleep 1
|
||||
((cnt--))
|
||||
done
|
||||
if [ -d "/tmp/InstallVulkan-$new_ver_full.app" ]; then
|
||||
/tmp/InstallVulkan-$new_ver_full.app/Contents/MacOS/InstallVulkan-$new_ver_full --accept-licenses --default-answer --confirm-command install
|
||||
rm -rf /tmp/InstallVulkan-$new_ver_full.app
|
||||
elif [ -d "/tmp/InstallVulkan.app" ]; then
|
||||
/tmp/InstallVulkan.app/Contents/MacOS/InstallVulkan --accept-licenses --default-answer --confirm-command install
|
||||
rm -rf /tmp/InstallVulkan.app
|
||||
fi
|
||||
|
||||
rm -f /tmp/vulkan-sdk.dmg
|
||||
rm -f /tmp/vulkan-sdk.zip
|
||||
|
||||
echo 'Vulkan SDK installed successfully! You can now build Godot by running "scons".'
|
||||
|
|
|
|||
120
engine/misc/scripts/ucaps_fetch.py
Executable file
120
engine/misc/scripts/ucaps_fetch.py
Executable file
|
|
@ -0,0 +1,120 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# Script used to dump case mappings from
|
||||
# the Unicode Character Database to the `ucaps.h` file.
|
||||
# NOTE: This script is deliberately not integrated into the build system;
|
||||
# you should run it manually whenever you want to update the data.
|
||||
|
||||
import os
|
||||
import sys
|
||||
from typing import Final, List, Tuple
|
||||
from urllib.request import urlopen
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.path.insert(1, os.path.join(os.path.dirname(__file__), "../../"))
|
||||
|
||||
from methods import generate_copyright_header
|
||||
|
||||
URL: Final[str] = "https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt"
|
||||
|
||||
|
||||
lower_to_upper: List[Tuple[str, str]] = []
|
||||
upper_to_lower: List[Tuple[str, str]] = []
|
||||
|
||||
|
||||
def parse_unicode_data() -> None:
|
||||
lines: List[str] = [line.decode("utf-8") for line in urlopen(URL)]
|
||||
|
||||
for line in lines:
|
||||
split_line: List[str] = line.split(";")
|
||||
|
||||
code_value: str = split_line[0].strip()
|
||||
uppercase_mapping: str = split_line[12].strip()
|
||||
lowercase_mapping: str = split_line[13].strip()
|
||||
|
||||
if uppercase_mapping:
|
||||
lower_to_upper.append((f"0x{code_value}", f"0x{uppercase_mapping}"))
|
||||
if lowercase_mapping:
|
||||
upper_to_lower.append((f"0x{code_value}", f"0x{lowercase_mapping}"))
|
||||
|
||||
|
||||
def make_cap_table(table_name: str, len_name: str, table: List[Tuple[str, str]]) -> str:
|
||||
result: str = f"static const int {table_name}[{len_name}][2] = {{\n"
|
||||
|
||||
for first, second in table:
|
||||
result += f"\t{{ {first}, {second} }},\n"
|
||||
|
||||
result += "};\n\n"
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def generate_ucaps_fetch() -> None:
|
||||
parse_unicode_data()
|
||||
|
||||
source: str = generate_copyright_header("ucaps.h")
|
||||
|
||||
source += f"""
|
||||
#ifndef UCAPS_H
|
||||
#define UCAPS_H
|
||||
|
||||
// This file was generated using the `misc/scripts/ucaps_fetch.py` script.
|
||||
|
||||
#define LTU_LEN {len(lower_to_upper)}
|
||||
#define UTL_LEN {len(upper_to_lower)}\n\n"""
|
||||
|
||||
source += make_cap_table("caps_table", "LTU_LEN", lower_to_upper)
|
||||
source += make_cap_table("reverse_caps_table", "UTL_LEN", upper_to_lower)
|
||||
|
||||
source += """static int _find_upper(int ch) {
|
||||
\tint low = 0;
|
||||
\tint high = LTU_LEN - 1;
|
||||
\tint middle;
|
||||
|
||||
\twhile (low <= high) {
|
||||
\t\tmiddle = (low + high) / 2;
|
||||
|
||||
\t\tif (ch < caps_table[middle][0]) {
|
||||
\t\t\thigh = middle - 1; // Search low end of array.
|
||||
\t\t} else if (caps_table[middle][0] < ch) {
|
||||
\t\t\tlow = middle + 1; // Search high end of array.
|
||||
\t\t} else {
|
||||
\t\t\treturn caps_table[middle][1];
|
||||
\t\t}
|
||||
\t}
|
||||
|
||||
\treturn ch;
|
||||
}
|
||||
|
||||
static int _find_lower(int ch) {
|
||||
\tint low = 0;
|
||||
\tint high = UTL_LEN - 1;
|
||||
\tint middle;
|
||||
|
||||
\twhile (low <= high) {
|
||||
\t\tmiddle = (low + high) / 2;
|
||||
|
||||
\t\tif (ch < reverse_caps_table[middle][0]) {
|
||||
\t\t\thigh = middle - 1; // Search low end of array.
|
||||
\t\t} else if (reverse_caps_table[middle][0] < ch) {
|
||||
\t\t\tlow = middle + 1; // Search high end of array.
|
||||
\t\t} else {
|
||||
\t\t\treturn reverse_caps_table[middle][1];
|
||||
\t\t}
|
||||
\t}
|
||||
|
||||
\treturn ch;
|
||||
}
|
||||
|
||||
#endif // UCAPS_H
|
||||
"""
|
||||
|
||||
ucaps_path: str = os.path.join(os.path.dirname(__file__), "../../core/string/ucaps.h")
|
||||
with open(ucaps_path, "w", newline="\n") as f:
|
||||
f.write(source)
|
||||
|
||||
print("`ucaps.h` generated successfully.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_ucaps_fetch()
|
||||
|
|
@ -8,6 +8,7 @@ fi
|
|||
|
||||
if [ $# != 1 ]; then
|
||||
echo "Usage: @0 <path-to-godot-executable>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
api_validation_dir="$( dirname -- "$( dirname -- "${BASH_SOURCE[0]//\.\//}" )" )/extension_api_validation/"
|
||||
|
|
@ -70,7 +71,9 @@ while read -r file; do
|
|||
obsolete_validation_error="$(comm -13 "$validation_output" "$allowed_errors")"
|
||||
|
||||
if [ -n "$obsolete_validation_error" ] && [ "$warn_extra" = "1" ]; then
|
||||
make_annotation "The following validation errors no longer occur (compared to $reference_tag):" "$obsolete_validation_error" warning "$file"
|
||||
#make_annotation "The following validation errors no longer occur (compared to $reference_tag):" "$obsolete_validation_error" warning "$file"
|
||||
echo "The following validation errors no longer occur (compared to $reference_tag):"
|
||||
echo "$obsolete_validation_error"
|
||||
fi
|
||||
if [ -n "$new_validation_error" ]; then
|
||||
make_annotation "Compatibility to $reference_tag is broken in the following ways:" "$new_validation_error" error "$file"
|
||||
|
|
|
|||
44
engine/misc/utility/clang_format_glsl.yml
Normal file
44
engine/misc/utility/clang_format_glsl.yml
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# GLSL-specific rules.
|
||||
# The rules should be the same as .clang-format, except those explicitly mentioned.
|
||||
BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -4
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AlignOperands: DontAlign
|
||||
AlignTrailingComments:
|
||||
Kind: Never
|
||||
OverEmptyLines: 0
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
BreakConstructorInitializers: AfterColon
|
||||
ColumnLimit: 0
|
||||
ConstructorInitializerIndentWidth: 8
|
||||
ContinuationIndentWidth: 8
|
||||
Cpp11BracedListStyle: false
|
||||
IncludeCategories:
|
||||
- Regex: ^".*"$
|
||||
Priority: 1
|
||||
- Regex: ^<.*\.h>$
|
||||
Priority: 2
|
||||
- Regex: ^<.*>$
|
||||
Priority: 3
|
||||
IndentCaseLabels: true
|
||||
IndentWidth: 4
|
||||
InsertBraces: true
|
||||
JavaImportGroups:
|
||||
- org.godotengine
|
||||
- android
|
||||
- androidx
|
||||
- com.android
|
||||
- com.google
|
||||
- java
|
||||
- javax
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
ObjCBlockIndentWidth: 4
|
||||
PackConstructorInitializers: NextLine
|
||||
RemoveSemicolon: false # Differs from base .clang-format
|
||||
SpacesInLineCommentPrefix:
|
||||
Minimum: 0
|
||||
Maximum: -1
|
||||
Standard: c++20
|
||||
TabWidth: 4
|
||||
UseTab: Always
|
||||
130
engine/misc/utility/color.py
Normal file
130
engine/misc/utility/color.py
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
from enum import Enum
|
||||
from typing import Final
|
||||
|
||||
# Colors are disabled in non-TTY environments such as pipes. This means if output is redirected
|
||||
# to a file, it won't contain color codes. Colors are always enabled on continuous integration.
|
||||
|
||||
IS_CI: Final[bool] = bool(os.environ.get("CI"))
|
||||
STDOUT_TTY: Final[bool] = bool(sys.stdout.isatty())
|
||||
STDERR_TTY: Final[bool] = bool(sys.stderr.isatty())
|
||||
|
||||
|
||||
def _color_supported(stdout: bool) -> bool:
|
||||
"""
|
||||
Validates if the current environment supports colored output. Attempts to enable ANSI escape
|
||||
code support on Windows 10 and later.
|
||||
"""
|
||||
if IS_CI:
|
||||
return True
|
||||
|
||||
if sys.platform != "win32":
|
||||
return STDOUT_TTY if stdout else STDERR_TTY
|
||||
else:
|
||||
from ctypes import POINTER, WINFUNCTYPE, WinError, windll
|
||||
from ctypes.wintypes import BOOL, DWORD, HANDLE
|
||||
|
||||
STD_HANDLE = -11 if stdout else -12
|
||||
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4
|
||||
|
||||
def err_handler(result, func, args):
|
||||
if not result:
|
||||
raise WinError()
|
||||
return args
|
||||
|
||||
GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(("GetStdHandle", windll.kernel32), ((1, "nStdHandle"),))
|
||||
GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(
|
||||
("GetConsoleMode", windll.kernel32),
|
||||
((1, "hConsoleHandle"), (2, "lpMode")),
|
||||
)
|
||||
GetConsoleMode.errcheck = err_handler
|
||||
SetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, DWORD)(
|
||||
("SetConsoleMode", windll.kernel32),
|
||||
((1, "hConsoleHandle"), (1, "dwMode")),
|
||||
)
|
||||
SetConsoleMode.errcheck = err_handler
|
||||
|
||||
try:
|
||||
handle = GetStdHandle(STD_HANDLE)
|
||||
flags = GetConsoleMode(handle)
|
||||
SetConsoleMode(handle, flags | ENABLE_VIRTUAL_TERMINAL_PROCESSING)
|
||||
return True
|
||||
except OSError:
|
||||
return False
|
||||
|
||||
|
||||
STDOUT_COLOR: Final[bool] = _color_supported(True)
|
||||
STDERR_COLOR: Final[bool] = _color_supported(False)
|
||||
_stdout_override: bool = STDOUT_COLOR
|
||||
_stderr_override: bool = STDERR_COLOR
|
||||
|
||||
|
||||
def toggle_color(stdout: bool, value: bool | None = None) -> None:
|
||||
"""
|
||||
Explicitly toggle color codes, regardless of support.
|
||||
|
||||
- `stdout`: A boolean to choose the output stream. `True` for stdout, `False` for stderr.
|
||||
- `value`: An optional boolean to explicitly set the color state instead of toggling.
|
||||
"""
|
||||
if stdout:
|
||||
global _stdout_override
|
||||
_stdout_override = value if value is not None else not _stdout_override
|
||||
else:
|
||||
global _stderr_override
|
||||
_stderr_override = value if value is not None else not _stderr_override
|
||||
|
||||
|
||||
class Ansi(Enum):
|
||||
"""
|
||||
Enum class for adding ansi codepoints directly into strings. Automatically converts values to
|
||||
strings representing their internal value.
|
||||
"""
|
||||
|
||||
RESET = "\x1b[0m"
|
||||
|
||||
BOLD = "\x1b[1m"
|
||||
DIM = "\x1b[2m"
|
||||
ITALIC = "\x1b[3m"
|
||||
UNDERLINE = "\x1b[4m"
|
||||
STRIKETHROUGH = "\x1b[9m"
|
||||
REGULAR = "\x1b[22;23;24;29m"
|
||||
|
||||
BLACK = "\x1b[30m"
|
||||
RED = "\x1b[31m"
|
||||
GREEN = "\x1b[32m"
|
||||
YELLOW = "\x1b[33m"
|
||||
BLUE = "\x1b[34m"
|
||||
MAGENTA = "\x1b[35m"
|
||||
CYAN = "\x1b[36m"
|
||||
WHITE = "\x1b[37m"
|
||||
GRAY = "\x1b[90m"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.value
|
||||
|
||||
|
||||
def print_info(*values: object) -> None:
|
||||
"""Prints a informational message with formatting."""
|
||||
if _stdout_override:
|
||||
print(f"{Ansi.GRAY}{Ansi.BOLD}INFO:{Ansi.REGULAR}", *values, Ansi.RESET)
|
||||
else:
|
||||
print("INFO:", *values)
|
||||
|
||||
|
||||
def print_warning(*values: object) -> None:
|
||||
"""Prints a warning message with formatting."""
|
||||
if _stderr_override:
|
||||
print(f"{Ansi.YELLOW}{Ansi.BOLD}WARNING:{Ansi.REGULAR}", *values, Ansi.RESET, file=sys.stderr)
|
||||
else:
|
||||
print("WARNING:", *values, file=sys.stderr)
|
||||
|
||||
|
||||
def print_error(*values: object) -> None:
|
||||
"""Prints an error message with formatting."""
|
||||
if _stderr_override:
|
||||
print(f"{Ansi.RED}{Ansi.BOLD}ERROR:{Ansi.REGULAR}", *values, Ansi.RESET, file=sys.stderr)
|
||||
else:
|
||||
print("ERROR:", *values, file=sys.stderr)
|
||||
32
engine/misc/utility/problem-matchers.json
Normal file
32
engine/misc/utility/problem-matchers.json
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "gcc",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^(?:\\[[\\s\\d]{3}%\\]\\s)?(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(?:\\d+\\>)?(\\S.*?)[:\\(](\\d+)(?:[,:](\\d+))?(?::{\\d+:\\d+\\-\\d+:\\d+})?\\)?:(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(?:fatal\\s)?(error|warning)(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*:(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(.*?)(?:\\[(.*)\\])?(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5,
|
||||
"code": 6
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"owner": "msvc",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^(?:\\[[\\s\\d]{3}%\\]\\s)?(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(?:\\d+\\>)?(\\S.*?)\\((\\d+)(?:,(\\d+))?(?:,\\d+,\\d+)?\\)(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*:(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(?:fatal\\s)?(error|warning)(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(\\w{1,2}\\d+):(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*(.*?)(?:\\s|\\x1b\\[[=\\?]?[;\\d]+[a-zA-Z])*$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"code": 5,
|
||||
"message": 6
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
98
engine/misc/utility/scons_hints.py
Normal file
98
engine/misc/utility/scons_hints.py
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
"""
|
||||
Adds type hints to SCons scripts. Implemented via
|
||||
`from misc.utility.scons_hints import *`.
|
||||
|
||||
This is NOT a 1-1 representation of what the defines will represent in an
|
||||
SCons build, as proxies are almost always utilized instead. Rather, this is
|
||||
a means of tracing back what those proxies are calling to in the first place.
|
||||
"""
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
# ruff: noqa: F401
|
||||
from SCons.Action import Action
|
||||
from SCons.Builder import Builder
|
||||
from SCons.Defaults import Chmod, Copy, CScan, DefaultEnvironment, Delete, DirScanner, Mkdir, Move, Touch
|
||||
from SCons.Environment import Base
|
||||
from SCons.Platform import Platform
|
||||
from SCons.Platform.virtualenv import Virtualenv
|
||||
from SCons.Scanner import FindPathDirs, ScannerBase
|
||||
from SCons.Script import ARGLIST, ARGUMENTS, BUILD_TARGETS, COMMAND_LINE_TARGETS, DEFAULT_TARGETS
|
||||
from SCons.Script.Main import (
|
||||
AddOption,
|
||||
BuildTask,
|
||||
CleanTask,
|
||||
DebugOptions,
|
||||
GetBuildFailures,
|
||||
GetOption,
|
||||
PrintHelp,
|
||||
Progress,
|
||||
QuestionTask,
|
||||
SetOption,
|
||||
ValidateOptions,
|
||||
)
|
||||
from SCons.Script.SConscript import Configure, Return, SConsEnvironment, call_stack
|
||||
from SCons.Script.SConscript import SConsEnvironment as Environment
|
||||
from SCons.Subst import SetAllowableExceptions as AllowSubstExceptions
|
||||
from SCons.Tool import CScanner, DScanner, ProgramScanner, SourceFileScanner, Tool
|
||||
from SCons.Util import AddMethod, WhereIs
|
||||
from SCons.Variables import BoolVariable, EnumVariable, ListVariable, PackageVariable, PathVariable, Variables
|
||||
|
||||
# Global functions
|
||||
GetSConsVersion = SConsEnvironment.GetSConsVersion
|
||||
EnsurePythonVersion = SConsEnvironment.EnsurePythonVersion
|
||||
EnsureSConsVersion = SConsEnvironment.EnsureSConsVersion
|
||||
Exit = SConsEnvironment.Exit
|
||||
GetLaunchDir = SConsEnvironment.GetLaunchDir
|
||||
SConscriptChdir = SConsEnvironment.SConscriptChdir
|
||||
|
||||
# SConsEnvironment functions
|
||||
Default = SConsEnvironment(DefaultEnvironment()).Default
|
||||
Export = SConsEnvironment(DefaultEnvironment()).Export
|
||||
Help = SConsEnvironment(DefaultEnvironment()).Help
|
||||
Import = SConsEnvironment(DefaultEnvironment()).Import
|
||||
SConscript = SConsEnvironment(DefaultEnvironment()).SConscript
|
||||
|
||||
# Environment functions
|
||||
AddPostAction = DefaultEnvironment().AddPostAction
|
||||
AddPreAction = DefaultEnvironment().AddPreAction
|
||||
Alias = DefaultEnvironment().Alias
|
||||
AlwaysBuild = DefaultEnvironment().AlwaysBuild
|
||||
CacheDir = DefaultEnvironment().CacheDir
|
||||
Clean = DefaultEnvironment().Clean
|
||||
Command = DefaultEnvironment().Command
|
||||
Decider = DefaultEnvironment().Decider
|
||||
Depends = DefaultEnvironment().Depends
|
||||
Dir = DefaultEnvironment().Dir
|
||||
Entry = DefaultEnvironment().Entry
|
||||
Execute = DefaultEnvironment().Execute
|
||||
File = DefaultEnvironment().File
|
||||
FindFile = DefaultEnvironment().FindFile
|
||||
FindInstalledFiles = DefaultEnvironment().FindInstalledFiles
|
||||
FindSourceFiles = DefaultEnvironment().FindSourceFiles
|
||||
Flatten = DefaultEnvironment().Flatten
|
||||
GetBuildPath = DefaultEnvironment().GetBuildPath
|
||||
Glob = DefaultEnvironment().Glob
|
||||
Ignore = DefaultEnvironment().Ignore
|
||||
Install = DefaultEnvironment().Install
|
||||
InstallAs = DefaultEnvironment().InstallAs
|
||||
InstallVersionedLib = DefaultEnvironment().InstallVersionedLib
|
||||
Literal = DefaultEnvironment().Literal
|
||||
Local = DefaultEnvironment().Local
|
||||
NoCache = DefaultEnvironment().NoCache
|
||||
NoClean = DefaultEnvironment().NoClean
|
||||
ParseDepends = DefaultEnvironment().ParseDepends
|
||||
Precious = DefaultEnvironment().Precious
|
||||
PyPackageDir = DefaultEnvironment().PyPackageDir
|
||||
Repository = DefaultEnvironment().Repository
|
||||
Requires = DefaultEnvironment().Requires
|
||||
SConsignFile = DefaultEnvironment().SConsignFile
|
||||
SideEffect = DefaultEnvironment().SideEffect
|
||||
Split = DefaultEnvironment().Split
|
||||
Tag = DefaultEnvironment().Tag
|
||||
Value = DefaultEnvironment().Value
|
||||
VariantDir = DefaultEnvironment().VariantDir
|
||||
|
||||
env: SConsEnvironment
|
||||
env_modules: SConsEnvironment
|
||||
Loading…
Add table
Add a link
Reference in a new issue