mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-04-22 11:21:18 +02:00
Merge branch 'master' of https://github.com/Relintai/pandemonium_engine into Relintai-master
This commit is contained in:
commit
e29100ba2d
56
.github/disabled_workflows/static_checks.yml
vendored
Normal file
56
.github/disabled_workflows/static_checks.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
name: 📊 Static Checks
|
||||
on: [push, pull_request]
|
||||
|
||||
concurrency:
|
||||
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-static
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
static-checks:
|
||||
name: Static Checks (clang-format, black format, file format, documentation checks)
|
||||
runs-on: "ubuntu-24.04"
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
# Azure repositories are flaky, remove them.
|
||||
sudo rm -f /etc/apt/sources.list.d/{azure,microsoft}*
|
||||
sudo apt-get update
|
||||
sudo apt-get install -qq dos2unix libxml2-utils python3-pip moreutils
|
||||
sudo update-alternatives --remove-all clang-format || true
|
||||
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-16 100
|
||||
sudo pip3 install black==24.10.0 pygments
|
||||
|
||||
# This needs to happen before Python and npm execution; it must happen before any extra files are written.
|
||||
- name: .gitignore checks (gitignore_check.sh)
|
||||
run: |
|
||||
bash ./misc/scripts/gitignore_check.sh
|
||||
|
||||
- name: File formatting checks (file_format.sh)
|
||||
run: |
|
||||
bash ./misc/scripts/file_format.sh
|
||||
|
||||
- name: Style checks via clang-format (clang_format.sh)
|
||||
run: |
|
||||
bash ./misc/scripts/clang_format.sh
|
||||
|
||||
- name: Python style checks via black (black_format.sh)
|
||||
run: |
|
||||
bash ./misc/scripts/black_format.sh
|
||||
|
||||
- name: JavaScript style and documentation checks via ESLint and JSDoc
|
||||
run: |
|
||||
cd platform/javascript
|
||||
npm ci
|
||||
npm run lint
|
||||
npm run docs -- -d dry-run
|
||||
|
||||
- name: Documentation checks
|
||||
run: |
|
||||
doc/tools/make_rst.py --dry-run doc/classes modules
|
||||
|
||||
- name: Style checks via clang-format (clang_format.sh)
|
||||
run: |
|
||||
bash ./misc/scripts/clang_format.sh
|
11
.github/workflows/android_builds.yml
vendored
11
.github/workflows/android_builds.yml
vendored
@ -13,21 +13,12 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
android-template:
|
||||
runs-on: "ubuntu-20.04"
|
||||
|
||||
runs-on: "ubuntu-24.04"
|
||||
name: Template (target=release, tools=no)
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# Azure repositories are not reliable, we need to prevent azure giving us packages.
|
||||
- name: Make apt sources.list use the default Ubuntu repositories
|
||||
run: |
|
||||
sudo rm -f /etc/apt/sources.list.d/*
|
||||
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-multilib
|
||||
|
||||
- name: Set up Java 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
|
2
.github/workflows/javascript_builds.yml
vendored
2
.github/workflows/javascript_builds.yml
vendored
@ -15,7 +15,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
javascript-template:
|
||||
runs-on: "ubuntu-22.04"
|
||||
runs-on: "ubuntu-24.04"
|
||||
name: Template (target=release, tools=no)
|
||||
|
||||
steps:
|
||||
|
@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Master]
|
||||
|
||||
Nothing yet.
|
||||
- Backported everything up to and including https://github.com/godotengine/godot/commit/12e9b22777c5e8de47b6731e7b5367cf1276af21
|
||||
|
||||
## [4.5.0]
|
||||
|
||||
|
@ -44,7 +44,7 @@ static void *pandemonium_open(void *data, const char *p_fname, int mode) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
FileAccess *f = FileAccess::open(p_fname, FileAccess::READ);
|
||||
FileAccess *f = FileAccess::open(String::utf8(p_fname), FileAccess::READ);
|
||||
ERR_FAIL_COND_V(!f, nullptr);
|
||||
|
||||
return f;
|
||||
|
@ -714,13 +714,14 @@ PoolByteArray HTTPClient::read_response_body_chunk() {
|
||||
chunk_left -= rec;
|
||||
|
||||
if (chunk_left == 0) {
|
||||
if (chunk[chunk.size() - 2] != '\r' || chunk[chunk.size() - 1] != '\n') {
|
||||
const int chunk_size = chunk.size();
|
||||
if (chunk[chunk_size - 2] != '\r' || chunk[chunk_size - 1] != '\n') {
|
||||
ERR_PRINT("HTTP Invalid chunk terminator (not \\r\\n)");
|
||||
status = STATUS_CONNECTION_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
ret.resize(chunk.size() - 2);
|
||||
ret.resize(chunk_size - 2);
|
||||
PoolByteArray::Write w = ret.write();
|
||||
memcpy(w.ptr(), chunk.ptr(), ret.size());
|
||||
chunk.clear();
|
||||
|
@ -106,8 +106,21 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
||||
return ERR_UNAVAILABLE;
|
||||
}
|
||||
|
||||
/* Bogus GCC warning here:
|
||||
* In member function 'int RingBuffer<T>::read(T*, int, bool) [with T = unsigned char]',
|
||||
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:112:9,
|
||||
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:99:7:
|
||||
* Error: ./core/ring_buffer.h:68:46: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
|
||||
* 68 | p_buf[dst++] = read[pos + i];
|
||||
* | ~~~~~~~~~~~~~^~~~~~~
|
||||
*/
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic warning "-Wstringop-overflow=0"
|
||||
#endif
|
||||
|
||||
uint32_t size = 0;
|
||||
uint8_t ipv6[16];
|
||||
uint8_t ipv6[16] = {};
|
||||
rb.read(ipv6, 16, true);
|
||||
packet_ip.set_ipv6(ipv6);
|
||||
rb.read((uint8_t *)&packet_port, 4, true);
|
||||
@ -116,6 +129,11 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
||||
--queue_count;
|
||||
*r_buffer = packet_buffer;
|
||||
r_buffer_size = size;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -214,12 +214,12 @@ void StreamPeer::put_var(const Variant &p_variant, bool p_full_objects) {
|
||||
}
|
||||
|
||||
uint8_t StreamPeer::get_u8() {
|
||||
uint8_t buf[1];
|
||||
uint8_t buf[1] = {};
|
||||
get_data(buf, 1);
|
||||
return buf[0];
|
||||
}
|
||||
int8_t StreamPeer::get_8() {
|
||||
uint8_t buf[1];
|
||||
uint8_t buf[1] = {};
|
||||
get_data(buf, 1);
|
||||
return buf[0];
|
||||
}
|
||||
|
@ -254,6 +254,10 @@ void TranslationServer::init_locale_info() {
|
||||
}
|
||||
|
||||
String TranslationServer::standardize_locale(const String &p_locale) const {
|
||||
return _standardize_locale(p_locale, false);
|
||||
}
|
||||
|
||||
String TranslationServer::_standardize_locale(const String &p_locale, bool p_add_defaults) const {
|
||||
// Replaces '-' with '_' for macOS style locales.
|
||||
String univ_locale = p_locale.replace("-", "_");
|
||||
|
||||
@ -315,24 +319,26 @@ String TranslationServer::standardize_locale(const String &p_locale) const {
|
||||
}
|
||||
|
||||
// Add script code base on language and country codes for some ambiguous cases.
|
||||
if (script.empty()) {
|
||||
for (int i = 0; i < locale_script_info.size(); i++) {
|
||||
const LocaleScriptInfo &info = locale_script_info[i];
|
||||
if (info.name == lang) {
|
||||
if (country.empty() || info.supported_countries.has(country)) {
|
||||
script = info.script;
|
||||
break;
|
||||
if (p_add_defaults) {
|
||||
if (script.empty()) {
|
||||
for (int i = 0; i < locale_script_info.size(); i++) {
|
||||
const LocaleScriptInfo &info = locale_script_info[i];
|
||||
if (info.name == lang) {
|
||||
if (country.empty() || info.supported_countries.has(country)) {
|
||||
script = info.script;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!script.empty() && country.empty()) {
|
||||
// Add conntry code based on script for some ambiguous cases.
|
||||
for (int i = 0; i < locale_script_info.size(); i++) {
|
||||
const LocaleScriptInfo &info = locale_script_info[i];
|
||||
if (info.name == lang && info.script == script) {
|
||||
country = info.default_country;
|
||||
break;
|
||||
if (!script.empty() && country.empty()) {
|
||||
// Add conntry code based on script for some ambiguous cases.
|
||||
for (int i = 0; i < locale_script_info.size(); i++) {
|
||||
const LocaleScriptInfo &info = locale_script_info[i];
|
||||
if (info.name == lang && info.script == script) {
|
||||
country = info.default_country;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -352,32 +358,46 @@ String TranslationServer::standardize_locale(const String &p_locale) const {
|
||||
}
|
||||
|
||||
int TranslationServer::compare_locales(const String &p_locale_a, const String &p_locale_b) const {
|
||||
String locale_a = standardize_locale(p_locale_a);
|
||||
String locale_b = standardize_locale(p_locale_b);
|
||||
if (p_locale_a == p_locale_b) {
|
||||
// Exact match.
|
||||
return 10;
|
||||
}
|
||||
|
||||
const String cache_key = p_locale_a + "|" + p_locale_b;
|
||||
const int *cached_result = locale_compare_cache.getptr(cache_key);
|
||||
if (cached_result) {
|
||||
return *cached_result;
|
||||
}
|
||||
|
||||
String locale_a = _standardize_locale(p_locale_a, true);
|
||||
String locale_b = _standardize_locale(p_locale_b, true);
|
||||
|
||||
if (locale_a == locale_b) {
|
||||
// Exact match.
|
||||
locale_compare_cache.set(cache_key, 10);
|
||||
return 10;
|
||||
}
|
||||
|
||||
Vector<String> locale_a_elements = locale_a.split("_");
|
||||
Vector<String> locale_b_elements = locale_b.split("_");
|
||||
if (locale_a_elements[0] == locale_b_elements[0]) {
|
||||
// Matching language, both locales have extra parts.
|
||||
// Return number of matching elements.
|
||||
int matching_elements = 1;
|
||||
for (int i = 1; i < locale_a_elements.size(); i++) {
|
||||
for (int j = 1; j < locale_b_elements.size(); j++) {
|
||||
if (locale_a_elements[i] == locale_b_elements[j]) {
|
||||
matching_elements++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return matching_elements;
|
||||
} else {
|
||||
if (locale_a_elements[0] != locale_b_elements[0]) {
|
||||
// No match.
|
||||
locale_compare_cache.set(cache_key, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Matching language, both locales have extra parts.
|
||||
// Return number of matching elements.
|
||||
int matching_elements = 1;
|
||||
for (int i = 1; i < locale_a_elements.size(); i++) {
|
||||
for (int j = 1; j < locale_b_elements.size(); j++) {
|
||||
if (locale_a_elements[i] == locale_b_elements[j]) {
|
||||
matching_elements++;
|
||||
}
|
||||
}
|
||||
}
|
||||
locale_compare_cache.set(cache_key, matching_elements);
|
||||
return matching_elements;
|
||||
}
|
||||
|
||||
String TranslationServer::get_locale_name(const String &p_locale) const {
|
||||
|
@ -88,6 +88,8 @@ class TranslationServer : public Object {
|
||||
Ref<Translation> tool_translation;
|
||||
Ref<Translation> doc_translation;
|
||||
|
||||
mutable HashMap<String, int> locale_compare_cache;
|
||||
|
||||
bool enabled;
|
||||
|
||||
static TranslationServer *singleton;
|
||||
@ -123,6 +125,7 @@ public:
|
||||
|
||||
int compare_locales(const String &p_locale_a, const String &p_locale_b) const;
|
||||
String standardize_locale(const String &p_locale) const;
|
||||
String _standardize_locale(const String &p_locale, bool p_add_defaults) const;
|
||||
|
||||
Vector<String> get_all_languages() const;
|
||||
String get_language_name(const String &p_language) const;
|
||||
|
@ -331,6 +331,10 @@ void String::copy_from(const wchar_t *p_cstr, const int p_clip_to) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void String::copy_from(const Char16String &p_str) {
|
||||
parse_utf16(p_str.ptr());
|
||||
}
|
||||
|
||||
void String::copy_from(const CharType &p_char) {
|
||||
if (p_char == 0) {
|
||||
#if PRINT_UNICODE_ERRORS
|
||||
@ -2731,13 +2735,16 @@ Vector<float> String::split_floats(const String &p_splitter, bool p_allow_empty)
|
||||
int from = 0;
|
||||
int len = length();
|
||||
|
||||
String buffer = *this;
|
||||
while (true) {
|
||||
int end = find(p_splitter, from);
|
||||
if (end < 0) {
|
||||
end = len;
|
||||
}
|
||||
if (p_allow_empty || (end > from)) {
|
||||
ret.push_back(String::to_double(&get_data()[from]));
|
||||
buffer[end] = 0;
|
||||
ret.push_back(String::to_double(&buffer.get_data()[from]));
|
||||
buffer[end] = _cowdata.get(end);
|
||||
}
|
||||
|
||||
if (end == len) {
|
||||
@ -2755,6 +2762,7 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_
|
||||
int from = 0;
|
||||
int len = length();
|
||||
|
||||
String buffer = *this;
|
||||
while (true) {
|
||||
int idx;
|
||||
int end = findmk(p_splitters, from, &idx);
|
||||
@ -2766,7 +2774,9 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_
|
||||
}
|
||||
|
||||
if (p_allow_empty || (end > from)) {
|
||||
ret.push_back(String::to_double(&get_data()[from]));
|
||||
buffer[end] = 0;
|
||||
ret.push_back(String::to_double(&buffer.get_data()[from]));
|
||||
buffer[end] = _cowdata.get(end);
|
||||
}
|
||||
|
||||
if (end == len) {
|
||||
@ -5155,6 +5165,10 @@ String::String(const CharType *p_str) {
|
||||
copy_from(p_str);
|
||||
}
|
||||
|
||||
String::String(const Char16String &p_str) {
|
||||
copy_from(p_str);
|
||||
}
|
||||
|
||||
String::String(const char *p_str, int p_clip_to_len) {
|
||||
copy_from(p_str, p_clip_to_len);
|
||||
}
|
||||
|
@ -569,6 +569,7 @@ public:
|
||||
String(const char *p_str);
|
||||
String(const wchar_t *p_str);
|
||||
String(const CharType *p_str);
|
||||
String(const Char16String &p_str);
|
||||
String(const char *p_str, int p_clip_to_len);
|
||||
String(const wchar_t *p_str, int p_clip_to_len);
|
||||
String(const CharType *p_str, int p_clip_to_len);
|
||||
@ -582,6 +583,7 @@ private:
|
||||
void copy_from(const char *p_cstr, const int p_clip_to);
|
||||
void copy_from(const wchar_t *p_cstr);
|
||||
void copy_from(const wchar_t *p_cstr, const int p_clip_to);
|
||||
void copy_from(const Char16String &p_str);
|
||||
void copy_from(const CharType *p_cstr);
|
||||
void copy_from(const CharType *p_cstr, const int p_clip_to);
|
||||
|
||||
|
@ -113,6 +113,9 @@
|
||||
<theme_item name="hover" data_type="style" type="StyleBox">
|
||||
[StyleBox] used when the [Button] is being hovered.
|
||||
</theme_item>
|
||||
<theme_item name="hover_pressed" data_type="style" type="StyleBox">
|
||||
[StyleBox] used when the [Button] is being hovered and pressed.
|
||||
</theme_item>
|
||||
<theme_item name="normal" data_type="style" type="StyleBox">
|
||||
Default [StyleBox] for the [Button].
|
||||
</theme_item>
|
||||
|
@ -230,6 +230,15 @@
|
||||
<member name="glow_levels/7" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false">
|
||||
If [code]true[/code], the 7th level of glow is enabled. This is the most "global" level (blurriest).
|
||||
</member>
|
||||
<member name="glow_map" type="Texture" setter="set_glow_map" getter="get_glow_map">
|
||||
The texture that should be used as a glow map to [i]multiply[/i] the resulting glow color according to [member glow_map_strength]. This can be used to create a "lens dirt" effect. The texture's RGB color channels are used for modulation, but the alpha channel is ignored.
|
||||
[b]Note:[/b] The texture will be stretched to fit the screen. Therefore, it's recommended to use a texture with an aspect ratio that matches your project's base aspect ratio (typically 16:9).
|
||||
[b]Note:[/b] [member glow_map] has no effect when using the GLES2 rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices.
|
||||
</member>
|
||||
<member name="glow_map_strength" type="float" setter="set_glow_map_strength" getter="get_glow_map_strength" default="0.8">
|
||||
How strong of an impact the [member glow_map] should have on the overall glow effect. A strength of [code]0.0[/code] means the glow map has no effect on the overall glow effect. A strength of [code]1.0[/code] means the glow has a full effect on the overall glow effect (and can turn off glow entirely in specific areas of the screen if the glow map has black areas).
|
||||
[b]Note:[/b] [member glow_map_strength] has no effect when using the GLES2 rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices.
|
||||
</member>
|
||||
<member name="glow_strength" type="float" setter="set_glow_strength" getter="get_glow_strength" default="1.0">
|
||||
The glow strength. When using the GLES2 renderer, this should be increased to 1.3 to compensate for the lack of HDR rendering.
|
||||
</member>
|
||||
|
@ -211,6 +211,7 @@
|
||||
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
||||
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] pressed. An action can be pressed and released again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
||||
[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
|
||||
[b]Note:[/b] During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_pressed] instead to query the action state of the current event.
|
||||
</description>
|
||||
</method>
|
||||
<method name="is_action_just_released" qualifiers="const">
|
||||
@ -221,6 +222,7 @@
|
||||
Returns [code]true[/code] when the user [i]stops[/i] pressing the action event in the current frame or physics tick. It will only return [code]true[/code] on the frame or tick that the user releases the button.
|
||||
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
||||
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] not pressed. An action can be released and pressed again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
||||
[b]Note:[/b] During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_released] instead to query the action state of the current event.
|
||||
</description>
|
||||
</method>
|
||||
<method name="is_action_pressed" qualifiers="const">
|
||||
|
@ -985,6 +985,15 @@
|
||||
Sets the variables to be used with the "glow" post-process effect. See [Environment3D] for more details.
|
||||
</description>
|
||||
</method>
|
||||
<method name="environment_set_glow_map">
|
||||
<return type="void" />
|
||||
<argument index="0" name="env" type="RID" />
|
||||
<argument index="1" name="glow_map_strength" type="float" />
|
||||
<argument index="2" name="glow_map" type="RID" />
|
||||
<description>
|
||||
Sets the variables to be used with the glow map post-process effect. See [Environment] for more details.
|
||||
</description>
|
||||
</method>
|
||||
<method name="environment_set_sky">
|
||||
<return type="void" />
|
||||
<argument index="0" name="env" type="RID" />
|
||||
|
@ -59,6 +59,7 @@ import sys
|
||||
sys.modules["_elementtree"] = None
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
|
||||
## override the parser to get the line number
|
||||
class LineNumberingParser(ET.XMLParser):
|
||||
def _start(self, *args, **kwargs):
|
||||
|
@ -66,6 +66,7 @@ public:
|
||||
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
||||
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
||||
void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) {}
|
||||
void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {}
|
||||
|
||||
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
|
||||
|
||||
|
@ -841,6 +841,11 @@ void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_
|
||||
env->glow_high_quality = p_high_quality;
|
||||
}
|
||||
|
||||
void RasterizerSceneGLES2::environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {
|
||||
Environment3D *env = environment_owner.getornull(p_env);
|
||||
ERR_FAIL_COND(!env);
|
||||
}
|
||||
|
||||
void RasterizerSceneGLES2::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
||||
Environment3D *env = environment_owner.getornull(p_env);
|
||||
ERR_FAIL_COND(!env);
|
||||
|
@ -484,6 +484,8 @@ public:
|
||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
||||
|
||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
||||
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map);
|
||||
|
||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||
|
||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||
|
@ -884,6 +884,15 @@ void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_
|
||||
env->glow_bicubic_upscale = p_bicubic_upscale;
|
||||
env->glow_high_quality = p_high_quality;
|
||||
}
|
||||
|
||||
void RasterizerSceneGLES3::environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {
|
||||
Environment3D *env = environment_owner.getornull(p_env);
|
||||
ERR_FAIL_COND(!env);
|
||||
|
||||
env->glow_map_strength = p_glow_map_strength;
|
||||
env->glow_map = p_glow_map;
|
||||
}
|
||||
|
||||
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
||||
}
|
||||
|
||||
@ -4022,7 +4031,7 @@ void RasterizerSceneGLES3::_post_process(Environment3D *env, const Projection &p
|
||||
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->color_correction);
|
||||
if (tex) {
|
||||
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_COLOR_CORRECTION, true);
|
||||
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE3);
|
||||
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE4);
|
||||
glBindTexture(tex->target, tex->tex_id);
|
||||
}
|
||||
}
|
||||
@ -4037,6 +4046,14 @@ void RasterizerSceneGLES3::_post_process(Environment3D *env, const Projection &p
|
||||
|
||||
if (max_glow_level >= 0) {
|
||||
state.tonemap_shader.set_uniform(TonemapShaderGLES3::GLOW_INTENSITY, env->glow_intensity);
|
||||
state.tonemap_shader.set_uniform(TonemapShaderGLES3::GLOW_MAP_STRENGTH, env->glow_map_strength);
|
||||
|
||||
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->glow_map);
|
||||
if (tex) {
|
||||
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE3);
|
||||
glBindTexture(tex->target, tex->tex_id);
|
||||
}
|
||||
|
||||
int ss[2] = {
|
||||
storage->frame.current_rt->width,
|
||||
storage->frame.current_rt->height,
|
||||
|
@ -413,6 +413,8 @@ public:
|
||||
float glow_hdr_luminance_cap;
|
||||
bool glow_bicubic_upscale;
|
||||
bool glow_high_quality;
|
||||
float glow_map_strength;
|
||||
RID glow_map;
|
||||
|
||||
RS::Environment3DToneMapper tone_mapper;
|
||||
float tone_mapper_exposure;
|
||||
@ -551,6 +553,8 @@ public:
|
||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
||||
|
||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
||||
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map);
|
||||
|
||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||
|
||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||
|
@ -42,6 +42,8 @@ uniform highp float auto_exposure_grey;
|
||||
|
||||
uniform highp sampler2D source_glow; //texunit:2
|
||||
uniform highp float glow_intensity;
|
||||
uniform highp float glow_map_strength;
|
||||
uniform highp sampler2D glow_map; //texunit:3
|
||||
#endif
|
||||
|
||||
#ifdef USE_BCS
|
||||
@ -57,7 +59,7 @@ uniform float sharpen_intensity;
|
||||
#endif
|
||||
|
||||
#ifdef USE_COLOR_CORRECTION
|
||||
uniform sampler2D color_correction; //texunit:3
|
||||
uniform sampler2D color_correction; //texunit:4
|
||||
#endif
|
||||
|
||||
layout(location = 0) out vec4 frag_color;
|
||||
@ -482,6 +484,9 @@ void main() {
|
||||
|
||||
#ifdef USING_GLOW
|
||||
vec3 glow = gather_glow(source_glow, uv_interp) * glow_intensity;
|
||||
if (glow_map_strength > 0.001) {
|
||||
glow = mix(glow, texture(glow_map, vec2(uv_interp.x, 1.0 - uv_interp.y)).rgb * glow, glow_map_strength);
|
||||
}
|
||||
|
||||
// high dynamic range -> SRGB
|
||||
glow = apply_tonemapping(glow, white);
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from platform_methods import subprocess_main
|
||||
from compat import StringIO
|
||||
|
@ -19,6 +19,7 @@
|
||||
import os
|
||||
from array import array
|
||||
|
||||
|
||||
# Generates a C++ file from the specified binary resource file
|
||||
def generate(in_path, out_path):
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
from platform_methods import subprocess_main
|
||||
import re
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
from platform_methods import subprocess_main
|
||||
from compat import byte_to_str
|
||||
from collections import OrderedDict
|
||||
|
@ -1254,6 +1254,67 @@ bool test_37() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool test_38() {
|
||||
#define CHECK_ARR_LEN(arr, len) \
|
||||
if (arr.size() != len) { \
|
||||
OS::get_singleton()->print("\tFAIL: Length of %s should be %d, got %d\n", #arr, len, arr.size()); \
|
||||
return false; \
|
||||
} else { \
|
||||
OS::get_singleton()->print("\tPASS\n"); \
|
||||
}
|
||||
#define CHECK_ARR_ELEMENT(arr, i, expect) \
|
||||
if (ABS(arr[i] - expect) > 0.00001) { \
|
||||
OS::get_singleton()->print("\tFAIL: %s[%d] %f != %f\n", #arr, i, arr[i], expect); \
|
||||
return false; \
|
||||
} else { \
|
||||
OS::get_singleton()->print("\tPASS\n"); \
|
||||
}
|
||||
|
||||
OS::get_singleton()->print("\n\nTest 38: split_floats\n");
|
||||
|
||||
{
|
||||
const String s = "1.2;2.3 4.5";
|
||||
const float slices[3] = { 1.2, 2.3, 4.5 };
|
||||
|
||||
const Vector<float> d_arr = s.split_floats(";");
|
||||
CHECK_ARR_LEN(d_arr, 2);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
CHECK_ARR_ELEMENT(d_arr, i, slices[i]);
|
||||
}
|
||||
|
||||
Vector<String> keys;
|
||||
keys.push_back(";");
|
||||
keys.push_back(" ");
|
||||
const Vector<float> f_arr = s.split_floats_mk(keys);
|
||||
CHECK_ARR_LEN(f_arr, 3);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
CHECK_ARR_ELEMENT(f_arr, i, slices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const String s = " -2.0 5";
|
||||
const float slices[10] = { 0, -2, 0, 0, 0, 0, 0, 0, 0, 5 };
|
||||
|
||||
const Vector<float> d_arr = s.split_floats(" ");
|
||||
CHECK_ARR_LEN(d_arr, 10);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
CHECK_ARR_ELEMENT(d_arr, i, slices[i]);
|
||||
}
|
||||
|
||||
Vector<String> keys;
|
||||
keys.push_back(";");
|
||||
keys.push_back(" ");
|
||||
const Vector<float> f_arr = s.split_floats_mk(keys);
|
||||
CHECK_ARR_LEN(f_arr, 10);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
CHECK_ARR_ELEMENT(f_arr, i, slices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
typedef bool (*TestFunc)();
|
||||
|
||||
TestFunc test_funcs[] = {
|
||||
@ -1295,6 +1356,7 @@ TestFunc test_funcs[] = {
|
||||
test_35,
|
||||
test_36,
|
||||
test_37,
|
||||
test_38,
|
||||
nullptr
|
||||
|
||||
};
|
||||
|
@ -1,4 +0,0 @@
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
|
||||
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
|
1
modules/database_sqlite/sqlite/VERSION.txt
Normal file
1
modules/database_sqlite/sqlite/VERSION.txt
Normal file
@ -0,0 +1 @@
|
||||
3.47.0
|
@ -0,0 +1,26 @@
|
||||
From ad572cdfdb2cac970aa1dd291583b72b7f89f9fb Mon Sep 17 00:00:00 2001
|
||||
From: Relintai <relintai@protonmail.com>
|
||||
Date: Thu, 14 Nov 2024 20:07:24 +0100
|
||||
Subject: [PATCH] Reapply SQLITE_NO_FCHOWN Pandemonium sqlite patch.
|
||||
|
||||
---
|
||||
modules/database_sqlite/sqlite/sqlite3.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/modules/database_sqlite/sqlite/sqlite3.c b/modules/database_sqlite/sqlite/sqlite3.c
|
||||
index 2886d04ae..9918449b9 100644
|
||||
--- a/modules/database_sqlite/sqlite/sqlite3.c
|
||||
+++ b/modules/database_sqlite/sqlite/sqlite3.c
|
||||
@@ -168,7 +168,9 @@
|
||||
#else
|
||||
/* This is not VxWorks. */
|
||||
#define OS_VXWORKS 0
|
||||
+#ifndef SQLITE_NO_FCHOWN
|
||||
#define HAVE_FCHOWN 1
|
||||
+#endif
|
||||
#define HAVE_READLINK 1
|
||||
#define HAVE_LSTAT 1
|
||||
#endif /* defined(_WRS_KERNEL) */
|
||||
--
|
||||
2.47.0
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import json
|
||||
from platform_methods import subprocess_main
|
||||
|
||||
|
@ -84,7 +84,12 @@ void GDScript::_clear_pending_func_states() {
|
||||
// Order matters since clearing the stack may already cause
|
||||
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
||||
pending_func_states.remove(E);
|
||||
E->self()->_clear_stack();
|
||||
GDScriptFunctionState *state = E->self();
|
||||
ObjectID state_id = state->get_instance_id();
|
||||
state->_clear_connections();
|
||||
if (ObjectDB::get_instance(state_id)) {
|
||||
state->_clear_stack();
|
||||
}
|
||||
}
|
||||
GDScriptLanguage::get_singleton()->lock.unlock();
|
||||
}
|
||||
@ -1339,7 +1344,12 @@ GDScriptInstance::~GDScriptInstance() {
|
||||
// Order matters since clearing the stack may already cause
|
||||
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
||||
pending_func_states.remove(E);
|
||||
E->self()->_clear_stack();
|
||||
GDScriptFunctionState *state = E->self();
|
||||
ObjectID state_id = state->get_instance_id();
|
||||
state->_clear_connections();
|
||||
if (ObjectDB::get_instance(state_id)) {
|
||||
state->_clear_stack();
|
||||
}
|
||||
}
|
||||
|
||||
if (script.is_valid() && owner) {
|
||||
|
@ -1859,6 +1859,15 @@ void GDScriptFunctionState::_clear_stack() {
|
||||
}
|
||||
}
|
||||
|
||||
void GDScriptFunctionState::_clear_connections() {
|
||||
List<Object::Connection> conns;
|
||||
get_signals_connected_to_this(&conns);
|
||||
for (List<Object::Connection>::Element *E = conns.front(); E; E = E->next()) {
|
||||
Object::Connection &c = E->get();
|
||||
c.source->disconnect(c.signal, c.target, c.method);
|
||||
}
|
||||
}
|
||||
|
||||
void GDScriptFunctionState::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("resume", "arg"), &GDScriptFunctionState::resume, DEFVAL(Variant()));
|
||||
ClassDB::bind_method(D_METHOD("is_valid", "extended_check"), &GDScriptFunctionState::is_valid, DEFVAL(false));
|
||||
|
@ -374,6 +374,7 @@ public:
|
||||
Variant resume(const Variant &p_arg = Variant());
|
||||
|
||||
void _clear_stack();
|
||||
void _clear_connections();
|
||||
|
||||
GDScriptFunctionState();
|
||||
~GDScriptFunctionState();
|
||||
|
@ -1329,7 +1329,8 @@ void TileMap::_set_tile_data(const PoolVector<int> &p_data) {
|
||||
for (int i = 0; i < c; i += offset) {
|
||||
const uint8_t *ptr = (const uint8_t *)&r[i];
|
||||
uint8_t local[12];
|
||||
for (int j = 0; j < ((format == FORMAT_2) ? 12 : 8); j++) {
|
||||
const int buffer_size = (format == FORMAT_2) ? 12 : 8;
|
||||
for (int j = 0; j < buffer_size; j++) {
|
||||
local[j] = ptr[j];
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from platform_methods import subprocess_main
|
||||
|
||||
|
@ -2982,7 +2982,8 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments,
|
||||
CloseHandle(pipe[0]); // Cleanup pipe handles.
|
||||
CloseHandle(pipe[1]);
|
||||
}
|
||||
ERR_FAIL_COND_V(ret == 0, ERR_CANT_FORK);
|
||||
|
||||
ERR_FAIL_COND_V_MSG(ret == 0, ERR_CANT_FORK, "Could not create child process: " + String(modstr));
|
||||
|
||||
if (p_blocking) {
|
||||
if (r_pipe) {
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from platform_methods import subprocess_main
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||
|
||||
"""
|
||||
|
||||
import os
|
||||
from platform_methods import subprocess_main
|
||||
|
||||
|
@ -1085,7 +1085,12 @@ Vector3 KinematicBody::_move_and_slide_internal(const Vector3 &p_linear_velocity
|
||||
|
||||
// We need to check the on_floor_body still exists before accessing.
|
||||
// A valid RID is no guarantee that the object has not been deleted.
|
||||
if (ObjectDB::get_instance(on_floor_body_id)) {
|
||||
|
||||
// We can only perform the ObjectDB lifetime check on Object derived objects.
|
||||
// Note that physics also creates RIDs for non-Object derived objects, these cannot
|
||||
// be lifetime checked through ObjectDB, and therefore there is a still a vulnerability
|
||||
// to dangling RIDs (access after free) in this scenario.
|
||||
if (!on_floor_body_id || ObjectDB::get_instance(on_floor_body_id)) {
|
||||
// This approach makes sure there is less delay between the actual body velocity and the one we saved.
|
||||
bs = PhysicsServer::get_singleton()->body_get_direct_state(on_floor_body_rid);
|
||||
}
|
||||
|
@ -35,8 +35,6 @@
|
||||
#include "core/input/shortcut.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "core/os/os.h"
|
||||
#include "core/string/print_string.h"
|
||||
#include "core/string/translation.h"
|
||||
#include "scene/gui/margin_container.h"
|
||||
#include "scene/gui/scroll_bar.h"
|
||||
#include "scene/gui/scroll_container.h"
|
||||
@ -144,8 +142,7 @@ int PopupMenu::_get_items_total_height() const {
|
||||
items_total_height += MAX(items[i].get_icon_size().height, font_height) + vsep;
|
||||
}
|
||||
|
||||
// Subtract a separator which is not needed for the last item.
|
||||
return items_total_height - vsep;
|
||||
return items_total_height;
|
||||
}
|
||||
|
||||
void PopupMenu::_scroll_to_item(int p_item) {
|
||||
@ -174,16 +171,12 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const {
|
||||
int vseparation = get_theme_constant("vseparation");
|
||||
float font_h = get_theme_font("font")->get_height();
|
||||
|
||||
Point2 ofs = style->get_offset() + Point2(0, vseparation / 2);
|
||||
real_t ofs = style->get_margin(MARGIN_TOP) + control->get_position().y;
|
||||
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
if (i > 0) {
|
||||
ofs.y += vseparation;
|
||||
}
|
||||
ofs += MAX(items[i].get_icon_size().height, font_h) + vseparation;
|
||||
|
||||
ofs.y += MAX(items[i].get_icon_size().height, font_h);
|
||||
|
||||
if (p_over.y - control->get_position().y < ofs.y) {
|
||||
if (p_over.y < ofs) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
@ -354,7 +347,7 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
|
||||
|
||||
// Make an area which does not include v scrollbar, so that items are not activated when dragging scrollbar.
|
||||
Transform2D xform = get_global_transform_with_canvas();
|
||||
Point2 item_origin = xform.get_origin();
|
||||
Point2 item_origin = scroll_container->get_global_position();
|
||||
float scroll_width = scroll_container->get_v_scrollbar()->is_visible_in_tree() ? scroll_container->get_v_scrollbar()->get_size().width : 0;
|
||||
Size2 item_size = (control->get_global_rect().get_size() - Vector2(scroll_width, 0)) * xform.get_scale();
|
||||
Rect2 item_clickable_area = Rect2(item_origin, item_size);
|
||||
@ -493,9 +486,9 @@ void PopupMenu::_draw_items() {
|
||||
margin_size.width = margin_container->get_theme_constant("margin_right") + margin_container->get_theme_constant("margin_left");
|
||||
margin_size.height = margin_container->get_theme_constant("margin_top") + margin_container->get_theme_constant("margin_bottom");
|
||||
|
||||
Ref<StyleBox> style = get_theme_stylebox("panel");
|
||||
Ref<StyleBox> hover = get_theme_stylebox("hover");
|
||||
Ref<Font> font = get_theme_font("font");
|
||||
|
||||
select_font(font);
|
||||
|
||||
// In Item::checkable_type enum order (less the non-checkable member)
|
||||
@ -536,7 +529,7 @@ void PopupMenu::_draw_items() {
|
||||
check_ofs = MAX(get_theme_icon("checked")->get_width(), get_theme_icon("radio_checked")->get_width()) + hseparation;
|
||||
}
|
||||
|
||||
Point2 ofs = Point2();
|
||||
Point2 ofs = Point2(0, vseparation / 2);
|
||||
|
||||
// Loop through all items and draw each.
|
||||
for (int i = 0; i < items.size(); i++) {
|
||||
|
@ -1729,7 +1729,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
|
||||
cache.click_id = c.buttons[j].id;
|
||||
cache.click_item = p_item;
|
||||
cache.click_column = col;
|
||||
cache.click_pos = get_global_mouse_position() - get_global_position();
|
||||
cache.click_pos = get_local_mouse_position();
|
||||
update();
|
||||
//emit_signal("button_pressed");
|
||||
return -1;
|
||||
|
@ -231,6 +231,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
||||
theme->set_stylebox("normal", "Button", sb_button_normal);
|
||||
theme->set_stylebox("pressed", "Button", sb_button_pressed);
|
||||
theme->set_stylebox("hover", "Button", sb_button_hover);
|
||||
theme->set_stylebox("hover_pressed", "Button", sb_button_hover);
|
||||
theme->set_stylebox("disabled", "Button", sb_button_disabled);
|
||||
theme->set_stylebox("focus", "Button", sb_button_focus);
|
||||
|
||||
|
@ -487,7 +487,7 @@ float Environment3D::get_ssao_edge_sharpness() const {
|
||||
|
||||
void Environment3D::set_glow_enabled(bool p_enabled) {
|
||||
glow_enabled = p_enabled;
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
_change_notify();
|
||||
}
|
||||
|
||||
@ -504,7 +504,7 @@ void Environment3D::set_glow_level(int p_level, bool p_enabled) {
|
||||
glow_levels &= ~(1 << p_level);
|
||||
}
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
bool Environment3D::is_glow_level_enabled(int p_level) const {
|
||||
ERR_FAIL_INDEX_V(p_level, RS::MAX_GLOW_LEVELS, false);
|
||||
@ -515,7 +515,7 @@ bool Environment3D::is_glow_level_enabled(int p_level) const {
|
||||
void Environment3D::set_glow_intensity(float p_intensity) {
|
||||
glow_intensity = p_intensity;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_intensity() const {
|
||||
return glow_intensity;
|
||||
@ -523,7 +523,8 @@ float Environment3D::get_glow_intensity() const {
|
||||
|
||||
void Environment3D::set_glow_strength(float p_strength) {
|
||||
glow_strength = p_strength;
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_strength() const {
|
||||
return glow_strength;
|
||||
@ -532,7 +533,7 @@ float Environment3D::get_glow_strength() const {
|
||||
void Environment3D::set_glow_bloom(float p_threshold) {
|
||||
glow_bloom = p_threshold;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_bloom() const {
|
||||
return glow_bloom;
|
||||
@ -541,7 +542,7 @@ float Environment3D::get_glow_bloom() const {
|
||||
void Environment3D::set_glow_blend_mode(GlowBlendMode p_mode) {
|
||||
glow_blend_mode = p_mode;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
Environment3D::GlowBlendMode Environment3D::get_glow_blend_mode() const {
|
||||
return glow_blend_mode;
|
||||
@ -550,7 +551,7 @@ Environment3D::GlowBlendMode Environment3D::get_glow_blend_mode() const {
|
||||
void Environment3D::set_glow_hdr_bleed_threshold(float p_threshold) {
|
||||
glow_hdr_bleed_threshold = p_threshold;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_hdr_bleed_threshold() const {
|
||||
return glow_hdr_bleed_threshold;
|
||||
@ -559,7 +560,7 @@ float Environment3D::get_glow_hdr_bleed_threshold() const {
|
||||
void Environment3D::set_glow_hdr_luminance_cap(float p_amount) {
|
||||
glow_hdr_luminance_cap = p_amount;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_hdr_luminance_cap() const {
|
||||
return glow_hdr_luminance_cap;
|
||||
@ -568,7 +569,7 @@ float Environment3D::get_glow_hdr_luminance_cap() const {
|
||||
void Environment3D::set_glow_hdr_bleed_scale(float p_scale) {
|
||||
glow_hdr_bleed_scale = p_scale;
|
||||
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
_update_glow();
|
||||
}
|
||||
float Environment3D::get_glow_hdr_bleed_scale() const {
|
||||
return glow_hdr_bleed_scale;
|
||||
@ -576,7 +577,8 @@ float Environment3D::get_glow_hdr_bleed_scale() const {
|
||||
|
||||
void Environment3D::set_glow_bicubic_upscale(bool p_enable) {
|
||||
glow_bicubic_upscale = p_enable;
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
|
||||
_update_glow();
|
||||
}
|
||||
|
||||
bool Environment3D::is_glow_bicubic_upscale_enabled() const {
|
||||
@ -585,13 +587,59 @@ bool Environment3D::is_glow_bicubic_upscale_enabled() const {
|
||||
|
||||
void Environment3D::set_glow_high_quality(bool p_enable) {
|
||||
glow_high_quality = p_enable;
|
||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
||||
|
||||
_update_glow();
|
||||
}
|
||||
|
||||
bool Environment3D::is_glow_high_quality_enabled() const {
|
||||
return glow_high_quality;
|
||||
}
|
||||
|
||||
void Environment3D::set_glow_map_strength(float p_glow_map_strength) {
|
||||
glow_map_strength = p_glow_map_strength;
|
||||
_update_glow_map();
|
||||
}
|
||||
|
||||
float Environment3D::get_glow_map_strength() const {
|
||||
return glow_map_strength;
|
||||
}
|
||||
|
||||
void Environment3D::set_glow_map(Ref<Texture> p_glow_map) {
|
||||
glow_map = p_glow_map;
|
||||
_update_glow_map();
|
||||
}
|
||||
|
||||
Ref<Texture> Environment3D::get_glow_map() const {
|
||||
return glow_map;
|
||||
}
|
||||
|
||||
void Environment3D::_update_glow() {
|
||||
RS::get_singleton()->environment_set_glow(
|
||||
environment,
|
||||
glow_enabled,
|
||||
glow_levels,
|
||||
glow_intensity,
|
||||
glow_strength,
|
||||
glow_bloom,
|
||||
RS::Environment3DGlowBlendMode(glow_blend_mode),
|
||||
glow_hdr_bleed_threshold,
|
||||
glow_hdr_bleed_scale,
|
||||
glow_hdr_luminance_cap,
|
||||
glow_bicubic_upscale,
|
||||
glow_high_quality);
|
||||
}
|
||||
|
||||
void Environment3D::_update_glow_map() {
|
||||
float _glow_map_strength = 0.0f;
|
||||
RID glow_map_rid;
|
||||
if (glow_map.is_valid()) {
|
||||
glow_map_rid = glow_map->get_rid();
|
||||
_glow_map_strength = glow_map_strength;
|
||||
}
|
||||
|
||||
RS::get_singleton()->environment_set_glow_map(environment, _glow_map_strength, glow_map_rid);
|
||||
}
|
||||
|
||||
void Environment3D::set_dof_blur_far_enabled(bool p_enable) {
|
||||
dof_blur_far_enabled = p_enable;
|
||||
RS::get_singleton()->environment_set_dof_blur_far(environment, dof_blur_far_enabled, dof_blur_far_distance, dof_blur_far_transition, dof_blur_far_amount, RS::Environment3DDOFBlurQuality(dof_blur_far_quality));
|
||||
@ -1086,6 +1134,12 @@ void Environment3D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_glow_high_quality", "enabled"), &Environment3D::set_glow_high_quality);
|
||||
ClassDB::bind_method(D_METHOD("is_glow_high_quality_enabled"), &Environment3D::is_glow_high_quality_enabled);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_glow_map_strength", "strength"), &Environment3D::set_glow_map_strength);
|
||||
ClassDB::bind_method(D_METHOD("get_glow_map_strength"), &Environment3D::get_glow_map_strength);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_glow_map", "mode"), &Environment3D::set_glow_map);
|
||||
ClassDB::bind_method(D_METHOD("get_glow_map"), &Environment3D::get_glow_map);
|
||||
|
||||
ADD_GROUP("Glow", "glow_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_enabled"), "set_glow_enabled", "is_glow_enabled");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "glow_levels/1"), "set_glow_level", "is_glow_level_enabled", 0);
|
||||
@ -1105,6 +1159,8 @@ void Environment3D::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_high_quality"), "set_glow_high_quality", "is_glow_high_quality_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_map_strength", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_glow_map_strength", "get_glow_map_strength");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "glow_map", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_glow_map", "get_glow_map");
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_adjustment_enable", "enabled"), &Environment3D::set_adjustment_enable);
|
||||
ClassDB::bind_method(D_METHOD("is_adjustment_enabled"), &Environment3D::is_adjustment_enabled);
|
||||
@ -1229,6 +1285,7 @@ Environment3D::Environment3D() :
|
||||
glow_hdr_bleed_scale = 2.0;
|
||||
glow_bicubic_upscale = false;
|
||||
glow_high_quality = false;
|
||||
glow_map_strength = 0.8f;
|
||||
|
||||
dof_blur_far_enabled = false;
|
||||
dof_blur_far_distance = 10;
|
||||
@ -1268,3 +1325,4 @@ Environment3D::Environment3D() :
|
||||
Environment3D::~Environment3D() {
|
||||
RS::get_singleton()->free(environment);
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,11 @@ private:
|
||||
float glow_hdr_luminance_cap;
|
||||
bool glow_bicubic_upscale;
|
||||
bool glow_high_quality;
|
||||
float glow_map_strength;
|
||||
Ref<Texture> glow_map;
|
||||
|
||||
void _update_glow();
|
||||
void _update_glow_map();
|
||||
|
||||
bool dof_blur_far_enabled;
|
||||
float dof_blur_far_distance;
|
||||
@ -335,6 +340,12 @@ public:
|
||||
void set_glow_high_quality(bool p_enable);
|
||||
bool is_glow_high_quality_enabled() const;
|
||||
|
||||
void set_glow_map_strength(float p_glow_map_strength);
|
||||
float get_glow_map_strength() const;
|
||||
|
||||
void set_glow_map(Ref<Texture> p_glow_map);
|
||||
Ref<Texture> get_glow_map() const;
|
||||
|
||||
void set_dof_blur_far_enabled(bool p_enable);
|
||||
bool is_dof_blur_far_enabled() const;
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
"""Functions used to generate scu build source files during build time
|
||||
"""
|
||||
|
||||
import glob, os
|
||||
import math
|
||||
from pathlib import Path
|
||||
@ -158,6 +159,7 @@ def find_section_name(sub_folder):
|
||||
# which is slow like a normal build, but prevents the naming conflicts.
|
||||
# Ideally in these situations, the source code should be changed to prevent naming conflicts.
|
||||
|
||||
|
||||
# "extension" will usually be cpp, but can also be set to c (for e.g. third party libraries that use c)
|
||||
def process_folder(folders, sought_exceptions=[], includes_per_scu=0, extension="cpp"):
|
||||
if len(folders) == 0:
|
||||
|
@ -232,12 +232,14 @@ AudioStreamPlaybackMicrophone::AudioStreamPlaybackMicrophone() {
|
||||
////////////////////////////////
|
||||
|
||||
void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
|
||||
AudioServer::get_singleton()->lock();
|
||||
audio_stream = p_audio_stream;
|
||||
if (audio_stream.is_valid()) {
|
||||
for (RBSet<AudioStreamPlaybackRandomPitch *>::Element *E = playbacks.front(); E; E = E->next()) {
|
||||
E->get()->playback = audio_stream->instance_playback();
|
||||
}
|
||||
}
|
||||
AudioServer::get_singleton()->unlock();
|
||||
}
|
||||
|
||||
Ref<AudioStream> AudioStreamRandomPitch::get_audio_stream() const {
|
||||
|
@ -66,6 +66,7 @@ public:
|
||||
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
||||
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) = 0;
|
||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
|
||||
|
||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
|
||||
|
@ -538,6 +538,7 @@ public:
|
||||
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||
BIND12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
||||
BIND3(environment_set_glow_map, RID, float, RID)
|
||||
|
||||
BIND9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
||||
|
||||
|
@ -451,6 +451,7 @@ public:
|
||||
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||
FUNC12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
||||
FUNC3(environment_set_glow_map, RID, float, RID)
|
||||
|
||||
FUNC9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
||||
|
||||
|
@ -2143,6 +2143,7 @@ void RenderingServer::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_near", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_near);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_far", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_far);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "hdr_luminance_cap", "bicubic_upscale", "high_quality"), &RenderingServer::environment_set_glow);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_glow_map", "env", "glow_map_strength", "glow_map"), &RenderingServer::environment_set_glow_map);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_tonemap", "env", "tone_mapper", "exposure", "white", "auto_exposure", "min_luminance", "max_luminance", "auto_exp_speed", "auto_exp_grey"), &RenderingServer::environment_set_tonemap);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_adjustment", "env", "enable", "brightness", "contrast", "saturation", "ramp"), &RenderingServer::environment_set_adjustment);
|
||||
ClassDB::bind_method(D_METHOD("environment_set_ssr", "env", "enable", "max_steps", "fade_in", "fade_out", "depth_tolerance", "roughness"), &RenderingServer::environment_set_ssr);
|
||||
|
@ -792,7 +792,9 @@ public:
|
||||
GLOW_BLEND_MODE_SOFTLIGHT,
|
||||
GLOW_BLEND_MODE_REPLACE,
|
||||
};
|
||||
|
||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
||||
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) = 0;
|
||||
|
||||
enum Environment3DToneMapper {
|
||||
ENV_TONE_MAPPER_LINEAR,
|
||||
|
7
thirdparty/README.md
vendored
7
thirdparty/README.md
vendored
@ -19,9 +19,14 @@ Files extracted from upstream source:
|
||||
## certs
|
||||
|
||||
- Upstream: Mozilla, via https://github.com/bagder/ca-bundle
|
||||
- Version: git (c5a419971b1bec220368c619aaafd0b818aa119f, 2024)
|
||||
- Version: git (4d3fe6683f651d96be1bbef316b201e9b33b274d, 2024),
|
||||
generated from mozilla-release changeset b8ea2342548b8571e58f9176d9555ccdb5ec199f
|
||||
- License: MPL 2.0
|
||||
|
||||
Files extracted from upstream source:
|
||||
|
||||
- `ca-bundle.crt` renamed to `ca-certificates.crt`
|
||||
|
||||
|
||||
## cvtt
|
||||
|
||||
|
149
thirdparty/certs/ca-certificates.crt
vendored
149
thirdparty/certs/ca-certificates.crt
vendored
@ -1,7 +1,9 @@
|
||||
##
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Mon Mar 11 15:15:21 2024 GMT
|
||||
## Certificate data from Mozilla as of: Sat Oct 19 21:26:09 2024 GMT
|
||||
##
|
||||
## Find updated versions here: https://curl.se/docs/caextract.html
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
@ -14,7 +16,7 @@
|
||||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl version 1.29.
|
||||
## SHA256: 4d96bd539f4719e9ace493757afbe4a23ee8579de1c97fbebc50bba3c12e8c1e
|
||||
## SHA256: 36105b01631f9fc03b1eca779b44a30a1a5890b9bf8dc07ccb001a07301e01cf
|
||||
##
|
||||
|
||||
|
||||
@ -2600,36 +2602,6 @@ vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
|
||||
CAezNIm8BZ/3Hobui3A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GLOBALTRUST 2020
|
||||
================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ANF Secure Server Root CA
|
||||
=========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
@ -3579,3 +3551,116 @@ wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+ljX273CXE2whJdV/LItM3z7gLfEdxquVeE
|
||||
HVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0
|
||||
o82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
FIRMAPROFESIONAL CA ROOT-A WEB
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJF
|
||||
UzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4
|
||||
MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENBIFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2
|
||||
WhcNNDcwMzMxMDkwMTM2WjBuMQswCQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25h
|
||||
bCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFM
|
||||
IENBIFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zfe9MEkVz6
|
||||
iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6CcyvHZpsKjECcfIr28jlg
|
||||
st7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FD
|
||||
Y1w8ndYn81LsF7Kpryz3dvgwHQYDVR0OBBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB
|
||||
/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgL
|
||||
cFBTApFwhVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dGXSaQ
|
||||
pYXFuXqUPoeovQA=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TWCA CYBER Root CA
|
||||
==================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
SecureSign Root CA12
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQELBQAwUTELMAkG
|
||||
A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT
|
||||
ZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgwNTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJ
|
||||
BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU
|
||||
U2VjdXJlU2lnbiBSb290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3
|
||||
emhFKxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mtp7JIKwcc
|
||||
J/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zdJ1M3s6oYwlkm7Fsf0uZl
|
||||
fO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gurFzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBF
|
||||
EaCeVESE99g2zvVQR9wsMJvuwPWW0v4JhscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1Uef
|
||||
NzFJM3IFTQy2VYzxV4+Kh9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
|
||||
AQH/BAQDAgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsFAAOC
|
||||
AQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6LdmmQOmFxv3Y67ilQi
|
||||
LUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJmBClnW8Zt7vPemVV2zfrPIpyMpce
|
||||
mik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPS
|
||||
vWKErI4cqc1avTc7bgoitPQV55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhga
|
||||
aaI5gdka9at/yOPiZwud9AzqVN/Ssq+xIvEg37xEHA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
SecureSign Root CA14
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
SecureSign Root CA15
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMwUTELMAkGA1UE
|
||||
BhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRTZWN1
|
||||
cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMyNTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNV
|
||||
BAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2Vj
|
||||
dXJlU2lnbiBSb290IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5G
|
||||
dCx4wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSRZHX+AezB
|
||||
2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
|
||||
AgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J
|
||||
fl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ
|
||||
SwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4=
|
||||
-----END CERTIFICATE-----
|
||||
|
Loading…
Reference in New Issue
Block a user