diff --git a/PanoPainter-OSX/main.cpp b/PanoPainter-OSX/main.cpp index 3528840..eb92b29 100644 --- a/PanoPainter-OSX/main.cpp +++ b/PanoPainter-OSX/main.cpp @@ -11,6 +11,7 @@ #include #include #include +#import "objc_utils.h" @implementation View - (void)async_lock diff --git a/PanoPainter/GameViewController.m b/PanoPainter/GameViewController.m index ec40b6a..0388b45 100644 --- a/PanoPainter/GameViewController.m +++ b/PanoPainter/GameViewController.m @@ -10,6 +10,7 @@ #import "GameViewController.h" #import #include "app.h" +#import "objc_utils.h" @interface GameImagePicker : UIImagePickerController { diff --git a/engine.xcodeproj/project.pbxproj b/engine.xcodeproj/project.pbxproj index c19563c..95ad724 100644 --- a/engine.xcodeproj/project.pbxproj +++ b/engine.xcodeproj/project.pbxproj @@ -232,6 +232,8 @@ ADE4911D1F86E65E00FB8E92 /* shapes.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491111F86D09100FB8E92 /* shapes.cc */; }; ADE4911E1F86E65E00FB8E92 /* sweep_context.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491141F86D09100FB8E92 /* sweep_context.cc */; }; ADE4911F1F86E65E00FB8E92 /* sweep.cc in Sources */ = {isa = PBXBuildFile; fileRef = ADE491131F86D09100FB8E92 /* sweep.cc */; }; + ADEBA9062069A4F40085AE16 /* objc_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADEBA9052069A4F40085AE16 /* objc_utils.cpp */; }; + ADEBA9092069A50E0085AE16 /* objc_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADEBA9082069A50E0085AE16 /* objc_utils.cpp */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -413,6 +415,10 @@ ADE491131F86D09100FB8E92 /* sweep.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep.cc; path = libs/poly2tri/poly2tri/sweep/sweep.cc; sourceTree = ""; }; ADE491141F86D09100FB8E92 /* sweep_context.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sweep_context.cc; path = libs/poly2tri/poly2tri/sweep/sweep_context.cc; sourceTree = ""; }; ADE491151F86D09100FB8E92 /* cdt.cc */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = cdt.cc; path = libs/poly2tri/poly2tri/sweep/cdt.cc; sourceTree = ""; }; + ADEBA9042069A4F30085AE16 /* objc_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objc_utils.h; path = engine/objc_utils.h; sourceTree = SOURCE_ROOT; }; + ADEBA9052069A4F40085AE16 /* objc_utils.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = objc_utils.cpp; path = engine/objc_utils.cpp; sourceTree = SOURCE_ROOT; }; + ADEBA9072069A50E0085AE16 /* objc_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = objc_utils.h; path = engine/objc_utils.h; sourceTree = SOURCE_ROOT; }; + ADEBA9082069A50E0085AE16 /* objc_utils.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = objc_utils.cpp; path = engine/objc_utils.cpp; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -476,6 +482,8 @@ AD0E5CA11ECC6F2B00C35669 /* Supporting Files */ = { isa = PBXGroup; children = ( + ADEBA9052069A4F40085AE16 /* objc_utils.cpp */, + ADEBA9042069A4F30085AE16 /* objc_utils.h */, AD0E5CA21ECC6F2B00C35669 /* main.cpp */, AD2FEBDA1F94A742002804DD /* main.h */, ); @@ -687,6 +695,8 @@ ADD7D26D1EBF9AE300D5A897 /* Supporting Files */ = { isa = PBXGroup; children = ( + ADEBA9082069A50E0085AE16 /* objc_utils.cpp */, + ADEBA9072069A50E0085AE16 /* objc_utils.h */, ADD7D26E1EBF9AE300D5A897 /* main.m */, ); name = "Supporting Files"; @@ -837,6 +847,7 @@ AD0E5CB91ECC72AD00C35669 /* node_border.cpp in Sources */, AD0E5CC81ECC72AD00C35669 /* node_popup_menu.cpp in Sources */, AD0E5CB71ECC72AD00C35669 /* layout.cpp in Sources */, + ADEBA9062069A4F40085AE16 /* objc_utils.cpp in Sources */, AD0E5CB41ECC72AD00C35669 /* tinyxml2.cpp in Sources */, AD0E5CD81ECC72AD00C35669 /* canvas_modes.cpp in Sources */, AD0E5CA31ECC6F2B00C35669 /* main.cpp in Sources */, @@ -978,6 +989,7 @@ ADBC8C571FAFD05A0094B339 /* node_dialog_cloud.cpp in Sources */, ADD7D2951EBF9E1C00D5A897 /* bezier.cpp in Sources */, AD1063A21EC7AE92002A525F /* node_panel_brush.cpp in Sources */, + ADEBA9092069A50E0085AE16 /* objc_utils.cpp in Sources */, AD0E11A51ECA61B900CDA6BB /* jpgd.cpp in Sources */, ADE491181F86E65D00FB8E92 /* shapes.cc in Sources */, ADD7D29E1EBF9E1C00D5A897 /* shape.cpp in Sources */, diff --git a/engine/app.cpp b/engine/app.cpp index b06cf9b..a999e57 100644 --- a/engine/app.cpp +++ b/engine/app.cpp @@ -354,6 +354,7 @@ void App::update(float dt) rec_timer = 0.f; auto data = new uint8_t[width * height * 4]; + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); glReadBuffer(GL_BACK); glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data); { diff --git a/engine/objc_utils.cpp b/engine/objc_utils.cpp new file mode 100644 index 0000000..b946c3d --- /dev/null +++ b/engine/objc_utils.cpp @@ -0,0 +1,36 @@ +#include "pch.h" +#include "objc_utils.h" + +#ifdef __OBJC__ + + +@implementation PathWithModDate +@end + +@implementation ObjcUtils ++ (NSArray*)getFilesAtPathSortedByModificationDate:(NSString*)folderPath +{ + NSArray *allPaths = [NSFileManager.defaultManager contentsOfDirectoryAtPath:folderPath error:nil]; + + NSMutableArray *sortedPaths = [NSMutableArray new]; + for (NSString *path in allPaths) { + NSString *fullPath = [folderPath stringByAppendingPathComponent:path]; + + NSDictionary *attr = [NSFileManager.defaultManager attributesOfItemAtPath:fullPath error:nil]; + NSDate *modDate = [attr objectForKey:NSFileModificationDate]; + + PathWithModDate *pathWithDate = [[PathWithModDate alloc] init]; + pathWithDate.path = fullPath; + pathWithDate.modDate = modDate; + [sortedPaths addObject:pathWithDate]; + } + + [sortedPaths sortUsingComparator:^(PathWithModDate *path1, PathWithModDate *path2) { + // Descending (most recently modified first) + return [path2.modDate compare:path1.modDate]; + }]; + + return sortedPaths; +} +@end +#endif diff --git a/engine/objc_utils.h b/engine/objc_utils.h new file mode 100644 index 0000000..6046dbe --- /dev/null +++ b/engine/objc_utils.h @@ -0,0 +1,15 @@ +#pragma once + +#ifdef __OBJC__ + + +@interface PathWithModDate : NSObject +@property (strong) NSString *path; +@property (strong) NSDate *modDate; +@end + +@interface ObjcUtils : NSObject +@end + + +#endif