summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-01-10 18:38:33 +0100
committerGitHub <noreply@github.com>2020-01-10 18:38:33 +0100
commit4b3123104cb766a11a9cb93afb08af118712f012 (patch)
treeb40bbf484fe9d3b28577e3708f79043681128bb5 /platform
parent140a31728f7e90c9bd1769fe9b35e14bcad6b4d3 (diff)
parentd07cdc594f0d0c0cf56896b6b8d98697871462eb (diff)
Merge pull request #34995 from bruvzg/macos_use_bundle_res_path
[macOS] Fix loading PCK from the .app bundle resources.
Diffstat (limited to 'platform')
-rw-r--r--platform/osx/godot_main_osx.mm29
-rw-r--r--platform/osx/os_osx.h1
-rw-r--r--platform/osx/os_osx.mm13
3 files changed, 14 insertions, 29 deletions
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 {