Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f05798a
fix scene export crashing when loading scene with noise textures
nikitalita Dec 30, 2025
9efb953
add hidden option to clear output dir before full recovery
nikitalita Dec 31, 2025
ee80366
scene: fix setting image_path_to_data_hash
nikitalita Dec 31, 2025
f065b16
add gltf-buffer-view-encode-fix to rebase
nikitalita Dec 31, 2025
adb0b76
fix showing encryption error after successive decryption fail then su…
nikitalita Dec 31, 2025
42bc030
update to ilspy 10 preview 2
kaitai-bot Dec 31, 2025
74eb2d6
upgrade ilspy to official 10.0.0-preview2 release
nikitalita Dec 31, 2025
cc556be
fix getting hint enum names in csharp script info
nikitalita Dec 31, 2025
ab83d74
csharp: fix replacing embedded member references in default values
nikitalita Dec 31, 2025
62df1c9
csharp: make project UUIDs deterministic to prevent churn
nikitalita Dec 31, 2025
b8c5f32
add GDRESettings::get_game_app_version()
nikitalita Dec 31, 2025
9cd6069
git: add game app version to initial commit message
nikitalita Dec 31, 2025
c03c99f
csharp: add gitignores for subproject directories
nikitalita Dec 31, 2025
194ee06
replace old-style header guards with `#pragma once`
nikitalita Jan 1, 2026
86a60d1
fix uninitialized GUI Icons
nikitalita Jan 1, 2026
4585fe9
fix ScenePreviewer3D constructor
nikitalita Jan 1, 2026
bdd546e
remove unused header files throughout
nikitalita Jan 1, 2026
d1aa3f6
fix uninitialized FileAccessEncryptedv3 warning
nikitalita Jan 2, 2026
9453d8d
fix inside braces warnings
nikitalita Jan 2, 2026
99a93e2
fix static checks
nikitalita Jan 2, 2026
e92831b
Handle packs with non standard headers
nikitalita Jan 2, 2026
03db242
check if we can decrypt a file when opening an encrypted pck with a n…
nikitalita Jan 2, 2026
58d54fb
more checks on non-standard headers
nikitalita Jan 2, 2026
6e93a01
Move crypto cores to crypto directory
nikitalita Jan 2, 2026
62b267d
add bindable crypto context classes
nikitalita Jan 2, 2026
9d5dc38
Do more checks on non-standard files
nikitalita Jan 2, 2026
4ac4ea7
Add support for custom decryption scripts
nikitalita Jan 2, 2026
f62b9a7
Add GUI option in Set Encryption Key menu to load custom decryption s…
nikitalita Jan 2, 2026
e716b8c
Update doc_classes
nikitalita Jan 2, 2026
44fb83e
fix static checks
nikitalita Jan 2, 2026
62be22a
fix release builds
nikitalita Jan 2, 2026
d1889b8
Add documentation for writing custom decryption scripts
nikitalita Jan 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/all_builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ env:
# TODO: change this back to godotengine/godot and target master when #109685 and #109475 are merged
GODOT_REPOSITORY: nikitalita/godot
# Change the README too
GODOT_MAIN_SYNC_REF: gdre-wb-63227bb
GODOT_MAIN_SYNC_REF: gdre-wb-1559ab34c6
SCONSFLAGS: verbose=yes warnings=all werror=no module_text_server_fb_enabled=yes minizip=yes deprecated=yes
SCONSFLAGS_TEMPLATE: no_editor_splash=yes module_camera_enabled=no module_mobile_vr_enabled=no module_upnp_enabled=no module_websocket_enabled=no module_csg_enabled=yes module_gridmap_enabled=yes use_static_cpp=yes builtin_freetype=yes builtin_libpng=yes builtin_zlib=yes builtin_libwebp=yes builtin_libvorbis=yes builtin_libogg=yes disable_3d=no
SCONS_CACHE_MSVC_CONFIG: true
Expand Down Expand Up @@ -224,7 +224,7 @@ jobs:
- name: setup-dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
dotnet-version: 10.0.x

- name: Download pre-built Android Swappy Frame Pacing Library
if: matrix.platform == 'android'
Expand Down
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ gmon.out
*.swp

# QT project files
*.config
*.creator
*.creator.*
*.files
Expand Down Expand Up @@ -76,7 +75,6 @@ logs/
*.suo
*.user
*.sln.docstates
*.sln
*.vcxproj*

# Build results
Expand Down Expand Up @@ -323,4 +321,4 @@ platform/windows/godot_res.res
standalone/spriteTest.*
standalone/character*
.tmpcache/
external_install/
external_install/
31 changes: 30 additions & 1 deletion .scripts/rebase_godot.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
#!/bin/sh

SCRIPT_PATH=$(dirname "$0")
GDRE_PATH=$(realpath "$SCRIPT_PATH/..")
cd "$SCRIPT_PATH/../../.."

git fetch --all
git checkout master
git pull

HEAD=$(git rev-parse HEAD)
SHORT_HASH=$(git rev-parse --short HEAD)
NEW_BRANCH_NAME="gdre-wb-$SHORT_HASH"

# check for the existence of the 'nikitalita' remote
if ! git remote | grep -q "nikitalita"; then
git remote add nikitalita https://github.com/nikitalita/godot.git
git fetch nikitalita
fi

git checkout working-branch
# check if the branch already exists
if git branch -a | grep -q $NEW_BRANCH_NAME; then
git branch -D $NEW_BRANCH_NAME
fi
git branch -C $NEW_BRANCH_NAME

git checkout $NEW_BRANCH_NAME
git reset --hard $HEAD

BRANCHES_TO_MERGE=(
Expand All @@ -26,9 +35,29 @@ BRANCHES_TO_MERGE=(
convert-3.x-escn
fix-svg
fix-compat-array-shapes
gltf-buffer-view-encode-fix
)

# set fail on error
for branch in "${BRANCHES_TO_MERGE[@]}"; do
# merge branch, use a merge commit
git merge nikitalita/$branch -m "Merge branch '$branch'"
if [ $? -ne 0 ]; then
echo "Error: Failed to merge branch '$branch'"
exit 1
fi
done

# detect OS for cross-platform sed compatibility
# macOS (BSD sed) requires -i '' while Linux (GNU sed) uses -i
if [ "$(uname)" = "Darwin" ]; then
sed_in_place() { sed -i '' "$@"; }
else
sed_in_place() { sed -i "$@"; }
fi

git push nikitalita $NEW_BRANCH_NAME --set-upstream

# change the branch name in .github/workflows/all_builds.yml and the README.md
sed_in_place "s/GODOT_MAIN_SYNC_REF: .*/GODOT_MAIN_SYNC_REF: $NEW_BRANCH_NAME/" "$GDRE_PATH/.github/workflows/all_builds.yml"
sed_in_place "s/ @ branch \`.*\`/ @ branch \`$NEW_BRANCH_NAME\`/" "$GDRE_PATH/README.md"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ Note: Make sure to build the editor build first, and to launch the editor to edi

### Requirements

[Our fork of godot](https://github.com/nikitalita/godot/tree/working-branch) @ `gdre-wb-63227bb`
[Our fork of godot](https://github.com/nikitalita/godot) @ branch `gdre-wb-1559ab34c6`

- Support for building on 3.x has been dropped and no new features are being pushed
- Godot RE Tools still retains the ability to decompile 3.x and 2.x projects, however.
Expand Down
3 changes: 3 additions & 0 deletions SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ if env["platform"] == "android" or (is_using_clang and env["platform"] == "macos
# force shared on macos with clang++, because `ld` does not support multiple definitions of the same symbol
mono_native_lib_type = "Shared"

mbedtlsthirdparty_dir = "#thirdparty/mbedtls/include/"
mmp3thirdparty_dir = "#thirdparty/minimp3/"
liboggthirdparty_dir = "#thirdparty/libogg/"
libtheorathirdparty_dir = "#thirdparty/libtheora/"
Expand Down Expand Up @@ -82,6 +83,7 @@ env_gdsdecomp.Append(CPPPATH=[godot_mono_decomp_include_dir])
env_gdsdecomp.Append(CPPPATH=["#modules/gdsdecomp/"])
env_gdsdecomp.Append(CPPPATH=["#thirdparty/thorsvg/"])
env_gdsdecomp.Append(CPPPATH=[libtheorathirdparty_dir])
env_gdsdecomp.Append(CPPPATH=[mbedtlsthirdparty_dir])
if env["disable_exceptions"]:
env_gdsdecomp.Append(CPPDEFINES=["DOCTEST_CONFIG_NO_EXCEPTIONS_BUT_WITH_ALL_ASSERTS"])

Expand Down Expand Up @@ -850,6 +852,7 @@ module_obj = []
env_gdsdecomp.add_source_files(module_obj, "*.cpp")
env_gdsdecomp.add_source_files(module_obj, "bytecode/*.cpp")
env_gdsdecomp.add_source_files(module_obj, "compat/*.cpp")
env_gdsdecomp.add_source_files(module_obj, "crypto/*.cpp")
if env["target"] == "editor":
env_gdsdecomp.add_source_files(module_obj, "editor/*.cpp")
env_gdsdecomp.add_source_files(module_obj, "exporters/*.cpp")
Expand Down
146 changes: 96 additions & 50 deletions compat/fake_csharp_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@

#include "compat/fake_script.h"
#include "compat/resource_loader_compat.h"
#include "compat/variant_decoder_compat.h"
#include "compat/variant_writer_compat.h"
#include "core/error/error_list.h"
#include "core/io/missing_resource.h"
#include "core/math/expression.h"
#include "core/object/object.h"
#include "core/string/ustring.h"
Expand Down Expand Up @@ -108,106 +106,154 @@ bool FakeCSharpScript::instance_has(const Object *p_this) const {

PropertyHint string_to_property_hint(const String &p_string) {
String name = p_string.to_upper();
if (name == "NONE")
if (name == "NONE") {
return PROPERTY_HINT_NONE; ///< no hint provided.
if (name == "RANGE")
}
if (name == "RANGE") {
return PROPERTY_HINT_RANGE; ///< hint_text = "min,max[,step][,or_greater][,or_less][,hide_slider][,radians_as_degrees][,degrees][,exp][,suffix:<keyword>] range.
if (name == "ENUM")
}
if (name == "ENUM") {
return PROPERTY_HINT_ENUM; ///< hint_text= "val1,val2,val3,etc"
if (name == "ENUM_SUGGESTION")
}
if (name == "ENUM_SUGGESTION") {
return PROPERTY_HINT_ENUM_SUGGESTION; ///< hint_text= "val1,val2,val3,etc"
if (name == "EXP_EASING")
}
if (name == "EXP_EASING") {
return PROPERTY_HINT_EXP_EASING; /// exponential easing function (Math::ease) use "attenuation" hint string to revert (flip h), "positive_only" to exclude in-out and out-in. (ie: "attenuation,positive_only")
if (name == "LINK")
}
if (name == "LINK") {
return PROPERTY_HINT_LINK;
if (name == "FLAGS")
}
if (name == "FLAGS") {
return PROPERTY_HINT_FLAGS; ///< hint_text= "flag1,flag2,etc" (as bit flags)
if (name == "LAYERS_2D_RENDER")
}
if (name == "LAYERS_2D_RENDER") {
return PROPERTY_HINT_LAYERS_2D_RENDER;
if (name == "LAYERS_2D_PHYSICS")
}
if (name == "LAYERS_2D_PHYSICS") {
return PROPERTY_HINT_LAYERS_2D_PHYSICS;
if (name == "LAYERS_2D_NAVIGATION")
}
if (name == "LAYERS_2D_NAVIGATION") {
return PROPERTY_HINT_LAYERS_2D_NAVIGATION;
if (name == "LAYERS_3D_RENDER")
}
if (name == "LAYERS_3D_RENDER") {
return PROPERTY_HINT_LAYERS_3D_RENDER;
if (name == "LAYERS_3D_PHYSICS")
}
if (name == "LAYERS_3D_PHYSICS") {
return PROPERTY_HINT_LAYERS_3D_PHYSICS;
if (name == "LAYERS_3D_NAVIGATION")
}
if (name == "LAYERS_3D_NAVIGATION") {
return PROPERTY_HINT_LAYERS_3D_NAVIGATION;
if (name == "FILE")
}
if (name == "FILE") {
return PROPERTY_HINT_FILE; ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,"
if (name == "DIR")
}
if (name == "DIR") {
return PROPERTY_HINT_DIR; ///< a directory path must be passed
if (name == "GLOBAL_FILE")
}
if (name == "GLOBAL_FILE") {
return PROPERTY_HINT_GLOBAL_FILE; ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,"
if (name == "GLOBAL_DIR")
}
if (name == "GLOBAL_DIR") {
return PROPERTY_HINT_GLOBAL_DIR; ///< a directory path must be passed
if (name == "RESOURCE_TYPE")
}
if (name == "RESOURCE_TYPE") {
return PROPERTY_HINT_RESOURCE_TYPE; ///< a comma-separated resource object type, e.g. "NoiseTexture,GradientTexture2D". Subclasses can be excluded with a "-" prefix if placed *after* the base class, e.g. "Texture2D,-MeshTexture".
if (name == "MULTILINE_TEXT")
}
if (name == "MULTILINE_TEXT") {
return PROPERTY_HINT_MULTILINE_TEXT; ///< used for string properties that can contain multiple lines
if (name == "EXPRESSION")
}
if (name == "EXPRESSION") {
return PROPERTY_HINT_EXPRESSION; ///< used for string properties that can contain multiple lines
if (name == "PLACEHOLDER_TEXT")
}
if (name == "PLACEHOLDER_TEXT") {
return PROPERTY_HINT_PLACEHOLDER_TEXT; ///< used to set a placeholder text for string properties
if (name == "COLOR_NO_ALPHA")
}
if (name == "COLOR_NO_ALPHA") {
return PROPERTY_HINT_COLOR_NO_ALPHA; ///< used for ignoring alpha component when editing a color
if (name == "OBJECT_ID")
}
if (name == "OBJECT_ID") {
return PROPERTY_HINT_OBJECT_ID;
if (name == "TYPE_STRING")
}
if (name == "TYPE_STRING") {
return PROPERTY_HINT_TYPE_STRING; ///< a type string, the hint is the base type to choose
if (name == "NODE_PATH_TO_EDITED_NODE")
}
if (name == "NODE_PATH_TO_EDITED_NODE") {
return PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE; // Deprecated.
if (name == "OBJECT_TOO_BIG")
}
if (name == "OBJECT_TOO_BIG") {
return PROPERTY_HINT_OBJECT_TOO_BIG; ///< object is too big to send
if (name == "NODE_PATH_VALID_TYPES")
}
if (name == "NODE_PATH_VALID_TYPES") {
return PROPERTY_HINT_NODE_PATH_VALID_TYPES;
if (name == "SAVE_FILE")
}
if (name == "SAVE_FILE") {
return PROPERTY_HINT_SAVE_FILE; ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,". This opens a save dialog
if (name == "GLOBAL_SAVE_FILE")
}
if (name == "GLOBAL_SAVE_FILE") {
return PROPERTY_HINT_GLOBAL_SAVE_FILE; ///< a file path must be passed, hint_text (optionally) is a filter "*.png,*.wav,*.doc,". This opens a save dialog
if (name == "INT_IS_OBJECTID")
}
if (name == "INT_IS_OBJECTID") {
return PROPERTY_HINT_INT_IS_OBJECTID; // Deprecated.
if (name == "INT_IS_POINTER")
}
if (name == "INT_IS_POINTER") {
return PROPERTY_HINT_INT_IS_POINTER;
if (name == "ARRAY_TYPE")
}
if (name == "ARRAY_TYPE") {
return PROPERTY_HINT_ARRAY_TYPE;
if (name == "LOCALE_ID")
}
if (name == "LOCALE_ID") {
return PROPERTY_HINT_LOCALE_ID;
if (name == "LOCALIZABLE_STRING")
}
if (name == "LOCALIZABLE_STRING") {
return PROPERTY_HINT_LOCALIZABLE_STRING;
if (name == "NODE_TYPE")
}
if (name == "NODE_TYPE") {
return PROPERTY_HINT_NODE_TYPE; ///< a node object type
if (name == "HIDE_QUATERNION_EDIT")
}
if (name == "HIDE_QUATERNION_EDIT") {
return PROPERTY_HINT_HIDE_QUATERNION_EDIT; /// Only Node3D::transform should hide the quaternion editor.
if (name == "PASSWORD")
}
if (name == "PASSWORD") {
return PROPERTY_HINT_PASSWORD;
if (name == "LAYERS_AVOIDANCE")
}
if (name == "LAYERS_AVOIDANCE") {
return PROPERTY_HINT_LAYERS_AVOIDANCE;
if (name == "DICTIONARY_TYPE")
}
if (name == "DICTIONARY_TYPE") {
return PROPERTY_HINT_DICTIONARY_TYPE;
if (name == "TOOL_BUTTON")
}
if (name == "TOOL_BUTTON") {
return PROPERTY_HINT_TOOL_BUTTON;
if (name == "ONESHOT")
}
if (name == "ONESHOT") {
return PROPERTY_HINT_ONESHOT; ///< the property will be changed by self after setting, such as AudioStreamPlayer.playing, Particles.emitting.
if (name == "NO_NODEPATH")
}
if (name == "NO_NODEPATH") {
return PROPERTY_HINT_NO_NODEPATH; /// < this property will not contain a NodePath, regardless of type (Array, Dictionary, List, etc.). Needed for SceneTreeDock.
if (name == "GROUP_ENABLE")
}
if (name == "GROUP_ENABLE") {
return PROPERTY_HINT_GROUP_ENABLE; ///< used to make the property's group checkable. Only use for boolean types.
if (name == "INPUT_NAME")
}
if (name == "INPUT_NAME") {
return PROPERTY_HINT_INPUT_NAME;
if (name == "FILE_PATH")
}
if (name == "FILE_PATH") {
return PROPERTY_HINT_FILE_PATH;
if (name == "MAX")
}
if (name == "MAX") {
return PROPERTY_HINT_MAX;
}
return PROPERTY_HINT_NONE;
}

Variant::Type string_to_variant_type(const String &name) {
if (name == "Variant")
if (name == "Variant") {
return Variant::NIL;
if (name == "Nil" || name == "null" || name == "None" || name == "void")
}
if (name == "Nil" || name == "null" || name == "None" || name == "void") {
return Variant::NIL;
}
auto tp = Variant::get_type_by_name(name);
if (tp == Variant::VARIANT_MAX) {
if (name.begins_with("Array")) {
Expand Down
7 changes: 2 additions & 5 deletions compat/file_access_encrypted_v3.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@

#include <core/io/file_access_encrypted.h>

#ifndef FILE_ACCESS_ENCRYPTED_V3_H
#define FILE_ACCESS_ENCRYPTED_V3_H
#pragma once

#include "core/io/file_access.h"

Expand All @@ -48,7 +47,7 @@ class FileAccessEncryptedv3 : public FileAccess {
};

private:
Mode mode;
Mode mode = MODE_READ;
Vector<uint8_t> key;
bool writing = false;
Ref<FileAccess> file;
Expand Down Expand Up @@ -104,5 +103,3 @@ class FileAccessEncryptedv3 : public FileAccess {
FileAccessEncryptedv3() {}
~FileAccessEncryptedv3();
};

#endif //FILE_ACCESS_ENCRYPTED_V3_H
3 changes: 2 additions & 1 deletion compat/image_parser_v2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,9 @@ String ImageParserV2::image_v2_to_string(const Variant &r_v, bool is_pcfg) {
if (!is_pcfg) {
int len = data.size();
for (int i = 0; i < len; i++) {
if (i > 0)
if (i > 0) {
s += ", ";
}
s += itos(data[i]);
}
} else {
Expand Down
5 changes: 1 addition & 4 deletions compat/image_parser_v2.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#ifndef IMAGE_PARSER_V2_H
#define IMAGE_PARSER_V2_H
#pragma once

#include "core/io/file_access.h"
#include "core/io/image.h"
Expand All @@ -17,5 +16,3 @@ class ImageParserV2 {
static Error decode_image_v2(Ref<FileAccess> f, Variant &r_v, bool convert_indexed = true);
static Error write_image_v2_to_bin(Ref<FileAccess> f, const Variant &r_v, bool compress_lossless = true);
};

#endif // IMAGE_PARSER_V2_H
Loading
Loading