From d07cdc594f0d0c0cf56896b6b8d98697871462eb Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Fri, 10 Jan 2020 18:02:29 +0200 Subject: [macOS] Load PCK from the .app bundle resources, instead of changing working directory. --- platform/osx/godot_main_osx.mm | 29 ----------------------------- platform/osx/os_osx.h | 1 + platform/osx/os_osx.mm | 13 +++++++++++++ 3 files changed, 14 insertions(+), 29 deletions(-) (limited to 'platform') diff --git a/platform/osx/godot_main_osx.mm b/platform/osx/godot_main_osx.mm index 73fd4632ab..e6f8cbecf1 100644 --- a/platform/osx/godot_main_osx.mm +++ b/platform/osx/godot_main_osx.mm @@ -45,35 +45,6 @@ int main(int argc, char **argv) { printf("%i: %s\n", i, argv[i]); }; - if (argc >= 1 && argv[0][0] == '/') { - //potentially launched from finder - int len = strlen(argv[0]); - while (len--) { - if (argv[0][len] == '/') break; - } - if (len >= 0) { - char *path = (char *)malloc(len + 1); - memcpy(path, argv[0], len); - path[len] = 0; - - char *pathinfo = (char *)malloc(strlen(path) + strlen("/../Info.plist") + 1); - //in real code you would check for errors in malloc here - strcpy(pathinfo, path); - strcat(pathinfo, "/../Info.plist"); - - FILE *f = fopen(pathinfo, "rb"); - if (f) { - //running from app bundle, as Info.plist was found - fclose(f); - chdir(path); - chdir("../Resources"); //data.pck, or just the files are here - } - - free(path); - free(pathinfo); - } - } - #ifdef DEBUG_ENABLED // lets report the path we made current after all that char cwd[4096]; diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index 44c5412a39..58a47c102a 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -223,6 +223,7 @@ public: virtual String get_config_path() const; virtual String get_data_path() const; virtual String get_cache_path() const; + virtual String get_bundle_resource_dir() const; virtual String get_godot_dir_name() const; virtual String get_system_dir(SystemDir p_dir) const; diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 95c103bd28..2b002d3b5d 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -2111,6 +2111,19 @@ String OS_OSX::get_cache_path() const { } } +String OS_OSX::get_bundle_resource_dir() const { + + NSBundle *main = [NSBundle mainBundle]; + NSString *resourcePath = [main resourcePath]; + + char *utfs = strdup([resourcePath UTF8String]); + String ret; + ret.parse_utf8(utfs); + free(utfs); + + return ret; +} + // Get properly capitalized engine name for system paths String OS_OSX::get_godot_dir_name() const { -- cgit v1.2.3