Spaces to tabs and layout adjustments on .mm files

This commit is contained in:
BastiaanOlij 2017-04-08 09:47:13 +10:00
parent 63ddee793e
commit 33ea9fc4a7
12 changed files with 1172 additions and 1300 deletions

1
.gitattributes vendored
View file

@ -5,5 +5,6 @@ drivers/* linguist-vendored
*.cpp eol=lf
*.h eol=lf
*.mm eol=lf
*.py eol=lf
*.hpp eol=lf

View file

@ -84,8 +84,7 @@ CMMotionManager *motionManager;
bool motionInitialised;
static ViewController* mainViewController = nil;
+ (ViewController*) getViewController
{
+ (ViewController*) getViewController {
return mainViewController;
}
@ -93,14 +92,12 @@ static int frame_count = 0;
- (void)drawView:(GLView*)view; {
switch (frame_count) {
case 0: {
int backingWidth;
int backingHeight;
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
OS::VideoMode vm;
vm.fullscreen = true;
vm.width = backingWidth;
@ -142,7 +139,7 @@ static int frame_count = 0;
/*
case 1: {
++frame_count;
} break;
}; break;
*/
case 1: {
@ -173,7 +170,7 @@ static int frame_count = 0;
// do stuff
}
} break;
}; break;
/*
case 3: {
++frame_count;
@ -187,7 +184,6 @@ static int frame_count = 0;
}; break; // no fallthrough
default: {
if (OSIPhone::get_singleton()) {
if (motionInitialised) {
// Just using polling approach for now, we can set this up so it sends data to us in intervals, might be better.
@ -241,9 +237,7 @@ static int frame_count = 0;
bool quit_request = OSIPhone::get_singleton()->iterate();
};
};
};
};
@ -311,12 +305,10 @@ static int frame_count = 0;
#ifdef MODULE_GAME_ANALYTICS_ENABLED
printf("********************* didFinishLaunchingWithOptions\n");
if(!Globals::get_singleton()->has("mobileapptracker/advertiser_id"))
{
if (!Globals::get_singleton()->has("mobileapptracker/advertiser_id")) {
return;
}
if(!Globals::get_singleton()->has("mobileapptracker/conversion_key"))
{
if (!Globals::get_singleton()->has("mobileapptracker/conversion_key")) {
return;
}
@ -327,8 +319,7 @@ static int frame_count = 0;
NSString * conversion_key = [NSString stringWithUTF8String:convkey.utf8().get_data()];
// Account Configuration info - must be set
[MobileAppTracker initializeWithMATAdvertiserId:advertiser_id
MATConversionKey:conversion_key];
[MobileAppTracker initializeWithMATAdvertiserId:advertiser_id MATConversionKey:conversion_key];
// Used to pass us the IFA, enables highly accurate 1-to-1 attribution.
// Required for many advertising networks.
@ -336,7 +327,6 @@ static int frame_count = 0;
advertisingTrackingEnabled:[[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]];
#endif
};
- (void)applicationWillTerminate:(UIApplication*)application {
@ -354,35 +344,33 @@ static int frame_count = 0;
iphone_finish();
};
- (void)applicationDidEnterBackground:(UIApplication *)application
{
- (void)applicationDidEnterBackground:(UIApplication *)application {
printf("********************* did enter background\n");
///@TODO maybe add pause motionManager? and where would we unpause it?
if (OS::get_singleton()->get_main_loop())
OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT);
[view_controller.view stopAnimation];
if (OS::get_singleton()->native_video_is_playing()) {
OSIPhone::get_singleton()->native_video_focus_out();
};
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
- (void)applicationWillEnterForeground:(UIApplication *)application {
printf("********************* did enter foreground\n");
//OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN);
[view_controller.view startAnimation];
}
- (void) applicationWillResignActive:(UIApplication *)application
{
- (void) applicationWillResignActive:(UIApplication *)application {
printf("********************* will resign active\n");
//OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT);
[view_controller.view stopAnimation]; // FIXME: pause seems to be recommended elsewhere
}
- (void) applicationDidBecomeActive:(UIApplication *)application
{
- (void) applicationDidBecomeActive:(UIApplication *)application {
printf("********************* did become active\n");
#ifdef MODULE_GAME_ANALYTICS_ENABLED
printf("********************* mobile app tracker found\n");
@ -390,7 +378,9 @@ static int frame_count = 0;
#endif
if (OS::get_singleton()->get_main_loop())
OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN);
[view_controller.view startAnimation]; // FIXME: resume seems to be recommended elsewhere
if (OSIPhone::get_singleton()->native_video_is_playing()) {
OSIPhone::get_singleton()->native_video_unpause();
};
@ -448,8 +438,7 @@ static int frame_count = 0;
#endif
}
- (void)dealloc
{
- (void)dealloc {
[window release];
[super dealloc];
}

View file

@ -81,8 +81,7 @@ Error GameCenter::connect() {
player.authenticateHandler = (^(UIViewController *controller, NSError *error) {
if (controller) {
[root_controller presentViewController:controller animated:YES completion:nil];
}
else {
} else {
Dictionary ret;
ret["type"] = "authentication";
if (player.isAuthenticated) {
@ -97,7 +96,6 @@ Error GameCenter::connect() {
pending_events.push_back(ret);
};
});
return OK;
@ -121,7 +119,6 @@ Error GameCenter::post_score(Variant p_score) {
ERR_FAIL_COND_V([GKScore respondsToSelector:@selector(reportScores)], ERR_UNAVAILABLE);
[GKScore reportScores:@[reporter] withCompletionHandler:^(NSError* error) {
Dictionary ret;
ret["type"] = "post_score";
if (error == nil) {
@ -331,6 +328,7 @@ Error GameCenter::show_game_center(Variant p_params) {
void GameCenter::game_center_closed() {
Dictionary ret;
ret["type"] = "show_game_center";
ret["result"] = "ok";
pending_events.push_back(ret);

View file

@ -103,13 +103,11 @@ bool _play_video(String p_path, float p_volume, String p_audio_track, String p_s
AVMediaSelectionGroup *audioGroup = [_instance.avAsset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicAudible];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (id track in audioGroup.options)
{
for (id track in audioGroup.options) {
NSString* language = [[track locale] localeIdentifier];
NSLog(@"subtitle lang: %@", language);
if ([language isEqualToString:[NSString stringWithUTF8String:p_audio_track.utf8()]])
{
if ([language isEqualToString:[NSString stringWithUTF8String:p_audio_track.utf8()]]) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:p_volume atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
@ -128,13 +126,11 @@ bool _play_video(String p_path, float p_volume, String p_audio_track, String p_s
AVMediaSelectionGroup *subtitlesGroup = [_instance.avAsset mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicLegible];
NSArray *useableTracks = [AVMediaSelectionGroup mediaSelectionOptionsFromArray:subtitlesGroup.options withoutMediaCharacteristics:[NSArray arrayWithObject:AVMediaCharacteristicContainsOnlyForcedSubtitles]];
for (id track in useableTracks)
{
for (id track in useableTracks) {
NSString* language = [[track locale] localeIdentifier];
NSLog(@"subtitle lang: %@", language);
if ([language isEqualToString:[NSString stringWithUTF8String:p_subtitle_track.utf8()]])
{
if ([language isEqualToString:[NSString stringWithUTF8String:p_subtitle_track.utf8()]]) {
[_instance.avPlayer.currentItem selectMediaOption:track inMediaSelectionGroup: subtitlesGroup];
break;
}
@ -245,24 +241,20 @@ static void clear_touches() {
// Implement this to override the default layer class (which is [CALayer class]).
// We do this so that our view will be backed by a layer that is capable of OpenGL ES rendering.
+ (Class) layerClass
{
+ (Class) layerClass {
return [CAEAGLLayer class];
}
//The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:
- (id)initWithCoder:(NSCoder*)coder
{
- (id)initWithCoder:(NSCoder*)coder {
active = FALSE;
if((self = [super initWithCoder:coder]))
{
if((self = [super initWithCoder:coder])) {
self = [self initGLES];
}
return self;
}
-(id)initGLES
{
-(id)initGLES {
// Get our backing layer
CAEAGLLayer *eaglLayer = (CAEAGLLayer*) self.layer;
@ -276,8 +268,7 @@ static void clear_touches() {
// Create our EAGLContext, and if successful make it current and create our framebuffer.
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
if(!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer])
{
if(!context || ![EAGLContext setCurrentContext:context] || ![self createFramebuffer]) {
[self release];
return nil;
}
@ -287,14 +278,12 @@ static void clear_touches() {
return self;
}
-(id<GLViewDelegate>)delegate
{
-(id<GLViewDelegate>)delegate {
return delegate;
}
// Update the delegate, and if it needs a -setupView: call, set our internal flag so that it will be called.
-(void)setDelegate:(id<GLViewDelegate>)d
{
-(void)setDelegate:(id<GLViewDelegate>)d {
delegate = d;
delegateSetup = ![delegate respondsToSelector:@selector(setupView:)];
}
@ -305,8 +294,7 @@ static void clear_touches() {
// This is the perfect opportunity to also update the framebuffer so that it is
// the same size as our display area.
-(void)layoutSubviews
{
-(void)layoutSubviews {
//printf("HERE\n");
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
@ -316,8 +304,7 @@ static void clear_touches() {
}
- (BOOL)createFramebuffer
{
- (BOOL)createFramebuffer {
// Generate IDs for a framebuffer object and a color renderbuffer
UIScreen* mainscr = [UIScreen mainScreen];
printf("******** screen size %i, %i\n", (int)mainscr.currentMode.size.width, (int)mainscr.currentMode.size.height);
@ -344,8 +331,7 @@ static void clear_touches() {
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES)
{
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
return NO;
}
@ -365,24 +351,22 @@ static void clear_touches() {
}
// Clean up any buffers we have allocated.
- (void)destroyFramebuffer
{
- (void)destroyFramebuffer {
glDeleteFramebuffersOES(1, &viewFramebuffer);
viewFramebuffer = 0;
glDeleteRenderbuffersOES(1, &viewRenderbuffer);
viewRenderbuffer = 0;
if(depthRenderbuffer)
{
if(depthRenderbuffer) {
glDeleteRenderbuffersOES(1, &depthRenderbuffer);
depthRenderbuffer = 0;
}
}
- (void)startAnimation
{
- (void)startAnimation {
if (active)
return;
active = TRUE;
printf("start animation!\n");
if (useCADisplayLink) {
@ -396,43 +380,38 @@ static void clear_touches() {
// Setup DisplayLink in main thread
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}
else {
} else {
animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES];
}
if (video_playing)
{
if (video_playing) {
_unpause_video();
}
}
- (void)stopAnimation
{
- (void)stopAnimation {
if (!active)
return;
active = FALSE;
printf("******** stop animation!\n");
if (useCADisplayLink) {
[displayLink invalidate];
displayLink = nil;
}
else {
} else {
[animationTimer invalidate];
animationTimer = nil;
}
clear_touches();
if (video_playing)
{
if (video_playing) {
// save position
}
}
- (void)setAnimationInterval:(NSTimeInterval)interval
{
- (void)setAnimationInterval:(NSTimeInterval)interval {
animationInterval = interval;
if ((useCADisplayLink && displayLink) || (!useCADisplayLink && animationTimer)) {
[self stopAnimation];
@ -441,8 +420,7 @@ static void clear_touches() {
}
// Updates the OpenGL view when the timer fires
- (void)drawView
{
- (void)drawView {
if (useCADisplayLink) {
// Pause the CADisplayLink to avoid recursion
[displayLink setPaused: YES];
@ -463,8 +441,7 @@ static void clear_touches() {
[EAGLContext setCurrentContext:context];
// If our drawing delegate needs to have the view setup, then call -setupView: and flag that it won't need to be called again.
if(!delegateSetup)
{
if(!delegateSetup) {
[delegate setupView:self];
delegateSetup = YES;
}
@ -483,8 +460,7 @@ static void clear_touches() {
#endif
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray* tlist = [[event allTouches] allObjects];
for (unsigned int i=0; i< [tlist count]; i++) {
@ -501,8 +477,7 @@ static void clear_touches() {
};
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray* tlist = [[event allTouches] allObjects];
for (unsigned int i=0; i< [tlist count]; i++) {
@ -512,6 +487,7 @@ static void clear_touches() {
UITouch* touch = [tlist objectAtIndex:i];
if (touch.phase != UITouchPhaseMoved)
continue;
int tid = get_touch_id(touch);
ERR_FAIL_COND(tid == -1);
int first = get_first_id(touch);
@ -523,8 +499,7 @@ static void clear_touches() {
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray* tlist = [[event allTouches] allObjects];
for (unsigned int i=0; i< [tlist count]; i++) {
@ -533,6 +508,7 @@ static void clear_touches() {
UITouch* touch = [tlist objectAtIndex:i];
if (touch.phase != UITouchPhaseEnded)
continue;
int tid = get_touch_id(touch);
ERR_FAIL_COND(tid == -1);
int rem = remove_touch(touch);
@ -566,6 +542,7 @@ static void clear_touches() {
- (void)deleteBackward {
if (keyboard_text.length())
keyboard_text.erase(keyboard_text.length() - 1, 1);
OSIPhone::get_singleton()->key(KEY_BACKSPACE, true);
};
@ -590,12 +567,12 @@ static void clear_touches() {
switch (routeChangeReason) {
case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
case AVAudioSessionRouteChangeReasonNewDeviceAvailable: {
NSLog(@"AVAudioSessionRouteChangeReasonNewDeviceAvailable");
NSLog(@"Headphone/Line plugged in");
break;
}; break;
case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
case AVAudioSessionRouteChangeReasonOldDeviceUnavailable: {
NSLog(@"AVAudioSessionRouteChangeReasonOldDeviceUnavailable");
NSLog(@"Headphone/Line was pulled. Resuming video play....");
if (_is_video_playing()) {
@ -605,24 +582,22 @@ static void clear_touches() {
NSLog(@"resumed play");
});
};
break;
}; break;
case AVAudioSessionRouteChangeReasonCategoryChange:
case AVAudioSessionRouteChangeReasonCategoryChange: {
// called at start - also when other audio wants to play
NSLog(@"AVAudioSessionRouteChangeReasonCategoryChange");
break;
}; break;
}
}
// When created via code however, we get initWithFrame
-(id)initWithFrame:(CGRect)frame
{
-(id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
_instance = self;
printf("after init super %p\n", self);
if(self != nil)
{
if(self != nil) {
self = [self initGLES];
printf("after init gles %p\n", self);
}
@ -649,12 +624,10 @@ static void clear_touches() {
// }
// Stop animating and release resources when they are no longer needed.
- (void)dealloc
{
- (void)dealloc {
[self stopAnimation];
if([EAGLContext currentContext] == context)
{
if([EAGLContext currentContext] == context) {
[EAGLContext setCurrentContext:nil];
}

View file

@ -76,8 +76,7 @@ Variant nsobject_to_variant(NSObject* object) {
if ([object isKindOfClass:[NSString class]]) {
const char* str = [(NSString*)object UTF8String];
return String::utf8(str != NULL ? str : "");
}
else if ([object isKindOfClass:[NSData class]]) {
} else if ([object isKindOfClass:[NSData class]]) {
ByteArray ret;
NSData* data = (NSData*)object;
if ([data length] > 0) {
@ -88,8 +87,7 @@ Variant nsobject_to_variant(NSObject* object) {
}
}
return ret;
}
else if ([object isKindOfClass:[NSArray class]]) {
} else if ([object isKindOfClass:[NSArray class]]) {
Array result;
NSArray* array = (NSArray*)object;
for (unsigned int i = 0; i < [array count]; ++i) {
@ -97,8 +95,7 @@ Variant nsobject_to_variant(NSObject* object) {
result.push_back(nsobject_to_variant(value));
}
return result;
}
else if ([object isKindOfClass:[NSDictionary class]]) {
} else if ([object isKindOfClass:[NSDictionary class]]) {
Dictionary result;
NSDictionary* dic = (NSDictionary*)object;
@ -112,8 +109,7 @@ Variant nsobject_to_variant(NSObject* object) {
result[nsobject_to_variant(k)] = nsobject_to_variant(v);
}
return result;
}
else if ([object isKindOfClass:[NSNumber class]]) {
} else if ([object isKindOfClass:[NSNumber class]]) {
//Every type except numbers can reliably identify its type. The following is comparing to the *internal* representation, which isn't guaranteed to match the type that was used to create it, and is not advised, particularly when dealing with potential platform differences (ie, 32/64 bit)
//To avoid errors, we'll cast as broadly as possible, and only return int or float.
//bool, char, int, uint, longlong -> int
@ -121,37 +117,28 @@ Variant nsobject_to_variant(NSObject* object) {
NSNumber* num = (NSNumber*)object;
if(strcmp([num objCType], @encode(BOOL)) == 0) {
return Variant((int)[num boolValue]);
}
else if(strcmp([num objCType], @encode(char)) == 0) {
} else if(strcmp([num objCType], @encode(char)) == 0) {
return Variant((int)[num charValue]);
}
else if(strcmp([num objCType], @encode(int)) == 0) {
} else if(strcmp([num objCType], @encode(int)) == 0) {
return Variant([num intValue]);
}
else if(strcmp([num objCType], @encode(unsigned int)) == 0) {
} else if(strcmp([num objCType], @encode(unsigned int)) == 0) {
return Variant((int)[num unsignedIntValue]);
}
else if(strcmp([num objCType], @encode(long long)) == 0) {
} else if(strcmp([num objCType], @encode(long long)) == 0) {
return Variant((int)[num longValue]);
}
else if(strcmp([num objCType], @encode(float)) == 0) {
} else if(strcmp([num objCType], @encode(float)) == 0) {
return Variant([num floatValue]);
}
else if(strcmp([num objCType], @encode(double)) == 0) {
} else if(strcmp([num objCType], @encode(double)) == 0) {
return Variant((float)[num doubleValue]);
}
}
else if ([object isKindOfClass:[NSDate class]]) {
} else if ([object isKindOfClass:[NSDate class]]) {
//this is a type that icloud supports...but how did you submit it in the first place?
//I guess this is a type that *might* show up, if you were, say, trying to make your game
//compatible with existing cloud data written by another engine's version of your game
WARN_PRINT("NSDate unsupported, returning null Variant")
return Variant();
}
else if ([object isKindOfClass:[NSNull class]] or object == nil) {
} else if ([object isKindOfClass:[NSNull class]] or object == nil) {
return Variant();
}
else {
} else {
WARN_PRINT("Trying to convert unknown NSObject type to Variant");
return Variant();
}
@ -160,17 +147,13 @@ Variant nsobject_to_variant(NSObject* object) {
NSObject* variant_to_nsobject(Variant v) {
if (v.get_type() == Variant::STRING) {
return [[[NSString alloc] initWithUTF8String:((String)v).utf8().get_data()] autorelease];
}
else if (v.get_type() == Variant::REAL) {
} else if (v.get_type() == Variant::REAL) {
return [NSNumber numberWithDouble:(double)v];
}
else if (v.get_type() == Variant::INT) {
} else if (v.get_type() == Variant::INT) {
return [NSNumber numberWithLongLong:(long)(int)v];
}
else if (v.get_type() == Variant::BOOL) {
} else if (v.get_type() == Variant::BOOL) {
return [NSNumber numberWithBool:BOOL((bool)v)];
}
else if (v.get_type() == Variant::DICTIONARY) {
} else if (v.get_type() == Variant::DICTIONARY) {
NSMutableDictionary* result = [[[NSMutableDictionary alloc] init] autorelease];
Dictionary dic = v;
Array keys = dic.keys();
@ -185,8 +168,7 @@ NSObject* variant_to_nsobject(Variant v) {
[result setObject:value forKey:key];
}
return result;
}
else if (v.get_type() == Variant::ARRAY) {
} else if (v.get_type() == Variant::ARRAY) {
NSMutableArray* result = [[[NSMutableArray alloc] init] autorelease];
Array arr = v;
for (unsigned int i = 0; i < arr.size(); ++i) {
@ -198,8 +180,7 @@ NSObject* variant_to_nsobject(Variant v) {
[result addObject:value];
}
return result;
}
else if (v.get_type() == Variant::RAW_ARRAY) {
} else if (v.get_type() == Variant::RAW_ARRAY) {
ByteArray arr = v;
ByteArray::Read r = arr.read();
NSData* result = [NSData dataWithBytes:r.ptr() length:arr.size()];
@ -296,8 +277,7 @@ Error ICloud::synchronize_key_values() {
BOOL result = [store synchronize];
if (result == YES) {
return OK;
}
else {
} else {
return FAILED;
}
}
@ -340,14 +320,11 @@ ICloud::ICloud() {
if (change == NSUbiquitousKeyValueStoreServerChange) {
reason = "server";
}
else if (change == NSUbiquitousKeyValueStoreInitialSyncChange) {
} else if (change == NSUbiquitousKeyValueStoreInitialSyncChange) {
reason = "initial_sync";
}
else if (change == NSUbiquitousKeyValueStoreQuotaViolationChange) {
} else if (change == NSUbiquitousKeyValueStoreQuotaViolationChange) {
reason = "quota_violation";
}
else if (change == NSUbiquitousKeyValueStoreAccountChange) {
} else if (change == NSUbiquitousKeyValueStoreAccountChange) {
reason = "account";
}

View file

@ -50,8 +50,7 @@ NSMutableDictionary* pending_transactions = [NSMutableDictionary dictionary];
// SKProduct extension
//----------------------------------//
@implementation SKProduct (LocalizedPrice)
- (NSString *)localizedPrice
{
- (NSString *)localizedPrice {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
@ -168,7 +167,6 @@ Error InAppStore::request_product_info(Variant p_params) {
for (SKPaymentTransaction* transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased: {
printf("status purchased!\n");
String pid = String::utf8([transaction.payment.productIdentifier UTF8String]);
@ -209,8 +207,7 @@ Error InAppStore::request_product_info(Variant p_params) {
}
NSString* receipt_to_send = nil;
if (receipt != nil)
{
if (receipt != nil) {
receipt_to_send = [receipt description];
}
Dictionary receipt_ret;
@ -222,8 +219,7 @@ Error InAppStore::request_product_info(Variant p_params) {
if (auto_finish_transactions){
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
else{
} else {
[pending_transactions setObject:transaction forKey:transaction.payment.productIdentifier];
}
@ -231,7 +227,7 @@ Error InAppStore::request_product_info(Variant p_params) {
printf("Registering transaction on Fuseboxx!\n");
[FuseSDK registerInAppPurchase: transaction];
#endif
} break;
}; break;
case SKPaymentTransactionStateFailed: {
printf("status transaction failed!\n");
String pid = String::utf8([transaction.payment.productIdentifier UTF8String]);
@ -241,18 +237,17 @@ Error InAppStore::request_product_info(Variant p_params) {
ret["product_id"] = pid;
InAppStore::get_singleton()->_post_event(ret);
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
} break;
}; break;
case SKPaymentTransactionStateRestored: {
printf("status transaction restored!\n");
String pid = String::utf8([transaction.originalTransaction.payment.productIdentifier UTF8String]);
InAppStore::get_singleton()->_record_purchase(pid);
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
} break;
default:
}; break;
default: {
printf("status default %i!\n", (int)transaction.transactionState);
break;
}; break;
};
};
};

View file

@ -43,14 +43,11 @@ String iOS::get_rate_url(int p_app_id) const {
//ios7 before
String ret = templ;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 7.1) {
// iOS 7 needs a different templateReviewURL @see https://github.com/arashpayan/appirater/issues/131
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 7.1)
{
ret = templ_iOS7;
}
} else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
// iOS 8 needs a different templateReviewURL also @see https://github.com/arashpayan/appirater/issues/182
else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
ret = templ_iOS8;
}

View file

@ -33,8 +33,7 @@
int gargc;
char** gargv;
int main(int argc, char *argv[])
{
int main(int argc, char *argv[]) {
printf("*********** main.m\n");
gargc = argc;
gargv = argv;

View file

@ -127,8 +127,7 @@ int add_cmdline(int p_argc, char** p_args) {
}
};
- (BOOL)prefersStatusBarHidden
{
- (BOOL)prefersStatusBarHidden {
return YES;
}

View file

@ -74,9 +74,6 @@ int main(int argc, char** argv) {
free(path);
free(pathinfo);
}
}
OS_OSX os;

View file

@ -175,7 +175,6 @@ extern int godot_main(int argc, char** argv);
#undef main
#endif
int main (int argc, char **argv)
{
/* Copy the arguments into a global variable */

View file

@ -94,11 +94,9 @@ static NSRect convertRectToBacking(NSRect contentRect) {
}
static InputModifierState translateFlags(NSUInteger flags)
{
static InputModifierState translateFlags(NSUInteger flags) {
InputModifierState mod;
mod.shift = (flags & NSShiftKeyMask);
mod.control = (flags & NSControlKeyMask);
mod.alt = (flags & NSAlternateKeyMask);
@ -122,8 +120,7 @@ static int button_mask=0;
// From http://cocoadev.com/index.pl?GameKeyboardHandlingAlmost
// This works around an AppKit bug, where key up events while holding
// down the command key don't get sent to the key window.
- (void)sendEvent:(NSEvent *)event
{
- (void)sendEvent:(NSEvent *)event {
if ([event type] == NSKeyUp && ([event modifierFlags] & NSCommandKeyMask))
[[self keyWindow] sendEvent:event];
else
@ -137,25 +134,23 @@ static int button_mask=0;
@implementation GodotApplicationDelegate
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST);
return NSTerminateCancel;
}
- (void)applicationDidHide:(NSNotification *)notification
{
/* _Godotwindow* window;
- (void)applicationDidHide:(NSNotification *)notification {
/*
_Godotwindow* window;
for (window = _Godot.windowListHead; window; window = window->next)
_GodotInputWindowVisibility(window, GL_FALSE);
*/
}
- (void)applicationDidUnhide:(NSNotification *)notification
{
- (void)applicationDidUnhide:(NSNotification *)notification {
/*
_Godotwindow* window;
@ -167,15 +162,13 @@ static int button_mask=0;
*/
}
- (void)applicationDidChangeScreenParameters:(NSNotification *) notification
{
- (void)applicationDidChangeScreenParameters:(NSNotification *) notification {
//_GodotInputMonitorChange();
}
@end
@interface GodotWindowDelegate : NSObject
{
@interface GodotWindowDelegate : NSObject {
//_Godotwindow* window;
}
@ -183,20 +176,14 @@ static int button_mask=0;
@implementation GodotWindowDelegate
- (BOOL)windowShouldClose:(id)sender
{
- (BOOL)windowShouldClose:(id)sender {
//_GodotInputWindowCloseRequest(window);
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST);
return NO;
}
- (void)windowDidResize:(NSNotification *)notification
{
- (void)windowDidResize:(NSNotification *)notification {
[OS_OSX::singleton->context update];
const NSRect contentRect = [OS_OSX::singleton->window_view frame];
@ -205,7 +192,6 @@ static int button_mask=0;
OS_OSX::singleton->window_size.width = fbRect.size.width*OS_OSX::singleton->display_scale;
OS_OSX::singleton->window_size.height = fbRect.size.height*OS_OSX::singleton->display_scale;
//_GodotInputFramebufferSize(window, fbRect.size.width, fbRect.size.height);
//_GodotInputWindowSize(window, contentRect.size.width, contentRect.size.height);
//_GodotInputWindowDamage(window);
@ -214,8 +200,7 @@ static int button_mask=0;
// centerCursor(window);
}
- (void)windowDidMove:(NSNotification *)notification
{
- (void)windowDidMove:(NSNotification *)notification {
//[window->nsgl.context update];
//int x, y;
@ -226,32 +211,27 @@ static int button_mask=0;
// centerCursor(window);
}
- (void)windowDidBecomeKey:(NSNotification *)notification
{
- (void)windowDidBecomeKey:(NSNotification *)notification {
//_GodotInputWindowFocus(window, GL_TRUE);
//_GodotPlatformSetCursorMode(window, window->cursorMode);
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN);
}
- (void)windowDidResignKey:(NSNotification *)notification
{
- (void)windowDidResignKey:(NSNotification *)notification {
//_GodotInputWindowFocus(window, GL_FALSE);
//_GodotPlatformSetCursorMode(window, Godot_CURSOR_NORMAL);
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT);
}
- (void)windowDidMiniaturize:(NSNotification*)notification
{
- (void)windowDidMiniaturize:(NSNotification*)notification {
OS_OSX::singleton->wm_minimized(true);
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_OUT);
};
- (void)windowDidDeminiaturize:(NSNotification*)notification
{
- (void)windowDidDeminiaturize:(NSNotification*)notification {
OS_OSX::singleton->wm_minimized(false);
if (OS_OSX::singleton->get_main_loop())
OS_OSX::singleton->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_FOCUS_IN);
@ -259,33 +239,27 @@ static int button_mask=0;
@end
@interface GodotContentView : NSView
{
@interface GodotContentView : NSView {
NSTrackingArea* trackingArea;
}
@end
@implementation GodotContentView
+ (void)initialize
{
if (self == [GodotContentView class])
{
/* if (_glfw.ns.cursor == nil)
{
+ (void)initialize {
if (self == [GodotContentView class]) {
/*
if (_glfw.ns.cursor == nil) {
NSImage* data = [[NSImage alloc] initWithSize:NSMakeSize(1, 1)];
_glfw.ns.cursor = [[NSCursor alloc] initWithImage:data
hotSpot:NSZeroPoint];
_glfw.ns.cursor = [[NSCursor alloc] initWithImage:data hotSpot:NSZeroPoint];
[data release];
}*/
}
*/
}
}
- (id)init
{
- (id)init {
self = [super init];
trackingArea = nil;
[self updateTrackingAreas];
@ -293,9 +267,7 @@ static int button_mask=0;
return self;
}
-(void)dealloc
{
-(void)dealloc {
[trackingArea release];
[super dealloc];
}
@ -309,8 +281,6 @@ static int button_mask=0;
}
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
NSArray *filenames = [pboard propertyListForType:NSFilenamesPboardType];
@ -322,8 +292,6 @@ static int button_mask=0;
ret.parse_utf8(utfs);
free(utfs);
files.push_back(ret);
}
if (files.size()) {
@ -335,29 +303,23 @@ static int button_mask=0;
}
- (BOOL)isOpaque
{
- (BOOL)isOpaque {
return YES;
}
- (BOOL)canBecomeKeyView
{
- (BOOL)canBecomeKeyView {
return YES;
}
- (BOOL)acceptsFirstResponder
{
- (BOOL)acceptsFirstResponder {
return YES;
}
- (void)cursorUpdate:(NSEvent *)event
{
- (void)cursorUpdate:(NSEvent *)event {
// setModeCursor(window, window->cursorMode);
}
- (void)mouseDown:(NSEvent *)event
{
- (void)mouseDown:(NSEvent *)event {
//print_line("mouse down:");
button_mask|=BUTTON_MASK_LEFT;
InputEvent ev;
@ -373,21 +335,19 @@ static int button_mask=0;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/* _glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
GLFW_MOUSE_BUTTON_LEFT,
GLFW_PRESS,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)mouseDragged:(NSEvent *)event
{
- (void)mouseDragged:(NSEvent *)event {
[self mouseMoved:event];
}
- (void)mouseUp:(NSEvent *)event
{
- (void)mouseUp:(NSEvent *)event {
button_mask &= ~BUTTON_MASK_LEFT;
InputEvent ev;
ev.type=InputEvent::MOUSE_BUTTON;
@ -401,14 +361,15 @@ static int button_mask=0;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/* _glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
GLFW_MOUSE_BUTTON_LEFT,
GLFW_RELEASE,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)mouseMoved:(NSEvent *)event
{
- (void)mouseMoved:(NSEvent *)event {
InputEvent ev;
ev.type=InputEvent::MOUSE_MOTION;
@ -430,20 +391,19 @@ static int button_mask=0;
OS_OSX::singleton->input->set_mouse_pos(Point2(mouse_x,mouse_y));
OS_OSX::singleton->push_input(ev);
/* if (window->cursorMode == GLFW_CURSOR_DISABLED)
/*
if (window->cursorMode == GLFW_CURSOR_DISABLED)
_glfwInputCursorMotion(window, [event deltaX], [event deltaY]);
else
{
else {
const NSRect contentRect = [window->ns.view frame];
const NSPoint p = [event locationInWindow];
_glfwInputCursorMotion(window, p.x, contentRect.size.height - p.y);
}*/
}
*/
}
- (void)rightMouseDown:(NSEvent *)event
{
- (void)rightMouseDown:(NSEvent *)event {
button_mask |= BUTTON_MASK_RIGHT;
InputEvent ev;
@ -458,19 +418,19 @@ static int button_mask=0;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/* _glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
GLFW_MOUSE_BUTTON_RIGHT,
GLFW_PRESS,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)rightMouseDragged:(NSEvent *)event
{
- (void)rightMouseDragged:(NSEvent *)event {
[self mouseMoved:event];
}
- (void)rightMouseUp:(NSEvent *)event
{
- (void)rightMouseUp:(NSEvent *)event {
button_mask &= ~BUTTON_MASK_RIGHT;
InputEvent ev;
@ -485,14 +445,15 @@ static int button_mask=0;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/*_glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
GLFW_MOUSE_BUTTON_RIGHT,
GLFW_RELEASE,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)otherMouseDown:(NSEvent *)event
{
- (void)otherMouseDown:(NSEvent *)event {
if ((int) [event buttonNumber]!=2)
return;
@ -510,19 +471,19 @@ static int button_mask=0;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/*_glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
(int) [event buttonNumber],
GLFW_PRESS,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)otherMouseDragged:(NSEvent *)event
{
- (void)otherMouseDragged:(NSEvent *)event {
[self mouseMoved:event];
}
- (void)otherMouseUp:(NSEvent *)event
{
- (void)otherMouseUp:(NSEvent *)event {
if ((int) [event buttonNumber]!=2)
return;
@ -539,48 +500,52 @@ static int button_mask=0;
ev.mouse_button.button_mask = button_mask;
ev.mouse_button.mod = translateFlags([event modifierFlags]);
OS_OSX::singleton->push_input(ev);
/* _glfwInputMouseClick(window,
/*
_glfwInputMouseClick(window,
(int) [event buttonNumber],
GLFW_RELEASE,
translateFlags([event modifierFlags]));*/
translateFlags([event modifierFlags]));
*/
}
- (void)mouseExited:(NSEvent *)event
{
- (void)mouseExited:(NSEvent *)event {
if (!OS_OSX::singleton)
return;
if (OS_OSX::singleton->main_loop && OS_OSX::singleton->mouse_mode!=OS::MOUSE_MODE_CAPTURED)
OS_OSX::singleton->main_loop->notification(MainLoop::NOTIFICATION_WM_MOUSE_EXIT);
if (OS_OSX::singleton->input)
OS_OSX::singleton->input->set_mouse_in_window(false);
//_glfwInputCursorEnter(window, GL_FALSE);
}
- (void)mouseEntered:(NSEvent *)event
{
- (void)mouseEntered:(NSEvent *)event {
//_glfwInputCursorEnter(window, GL_TRUE);
if (!OS_OSX::singleton)
return;
if (OS_OSX::singleton->main_loop && OS_OSX::singleton->mouse_mode!=OS::MOUSE_MODE_CAPTURED)
OS_OSX::singleton->main_loop->notification(MainLoop::NOTIFICATION_WM_MOUSE_ENTER);
if (OS_OSX::singleton->input)
OS_OSX::singleton->input->set_mouse_in_window(true);
}
- (void)viewDidChangeBackingProperties
{
/* const NSRect contentRect = [window->ns.view frame];
- (void)viewDidChangeBackingProperties {
/*
const NSRect contentRect = [window->ns.view frame];
const NSRect fbRect = convertRectToBacking(window, contentRect);
_glfwInputFramebufferSize(window, fbRect.size.width, fbRect.size.height);*/
_glfwInputFramebufferSize(window, fbRect.size.width, fbRect.size.height);
*/
}
- (void)updateTrackingAreas
{
if (trackingArea != nil)
{
- (void)updateTrackingAreas {
if (trackingArea != nil) {
[self removeTrackingArea:trackingArea];
[trackingArea release];
}
@ -601,11 +566,9 @@ static int button_mask=0;
// Translates a OS X keycode to a Godot keycode
//
static int translateKey(unsigned int key)
{
static int translateKey(unsigned int key) {
// Keyboard symbol translation table
static const unsigned int table[128] =
{
static const unsigned int table[128] = {
/* 00 */ KEY_A,
/* 01 */ KEY_S,
/* 02 */ KEY_D,
@ -741,8 +704,8 @@ static int translateKey(unsigned int key)
return table[key];
}
- (void)keyDown:(NSEvent *)event
{
- (void)keyDown:(NSEvent *)event {
InputEvent ev;
ev.type = InputEvent::KEY;
ev.key.pressed = true;
@ -753,23 +716,18 @@ static int translateKey(unsigned int key)
NSString* characters = [event characters];
NSUInteger i, length = [characters length];
if (length > 0 && keycode_has_unicode(ev.key.scancode)) {
for (i = 0; i < length; i++) {
ev.key.unicode=[characters characterAtIndex:i];
OS_OSX::singleton->push_input(ev);
ev.key.scancode=0;
}
} else {
OS_OSX::singleton->push_input(ev);
}
}
- (void)flagsChanged:(NSEvent *)event
{
- (void)flagsChanged:(NSEvent *)event {
InputEvent ev;
int key = [event keyCode];
int mod = [event modifierFlags];
@ -814,8 +772,7 @@ static int translateKey(unsigned int key)
OS_OSX::singleton->push_input(ev);
}
- (void)keyUp:(NSEvent *)event
{
- (void)keyUp:(NSEvent *)event {
InputEvent ev;
ev.type = InputEvent::KEY;
@ -824,36 +781,34 @@ static int translateKey(unsigned int key)
ev.key.scancode = latin_keyboard_keycode_convert(translateKey([event keyCode]));
OS_OSX::singleton->push_input(ev);
/* const int key = translateKey([event keyCode]);
/*
const int key = translateKey([event keyCode]);
const int mods = translateFlags([event modifierFlags]);
_glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods);*/
_glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods);
*/
}
- (void)scrollWheel:(NSEvent *)event
{
- (void)scrollWheel:(NSEvent *)event{
double deltaX, deltaY;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6)
{
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) {
deltaX = [event scrollingDeltaX];
deltaY = [event scrollingDeltaY];
if ([event hasPreciseScrollingDeltas])
{
if ([event hasPreciseScrollingDeltas]) {
deltaX *= 0.1;
deltaY *= 0.1;
}
}
else
#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
{
} else {
deltaX = [event deltaX];
deltaY = [event deltaY];
}
#else
deltaX = [event deltaX];
deltaY = [event deltaY];
#endif /*MAC_OS_X_VERSION_MAX_ALLOWED*/
if (fabs(deltaY)) {
@ -872,7 +827,6 @@ static int translateKey(unsigned int key)
}
if (fabs(deltaX)) {
InputEvent ev;
ev.type=InputEvent::MOUSE_BUTTON;
ev.mouse_button.button_index = deltaX < 0 ? BUTTON_WHEEL_RIGHT : BUTTON_WHEEL_LEFT;
@ -895,9 +849,7 @@ static int translateKey(unsigned int key)
@implementation GodotWindow
- (BOOL)canBecomeKeyWindow
{
- (BOOL)canBecomeKeyWindow {
// Required for NSBorderlessWindowMask windows
return YES;
}
@ -906,11 +858,10 @@ static int translateKey(unsigned int key)
int OS_OSX::get_video_driver_count() const {
return 1;
}
const char * OS_OSX::get_video_driver_name(int p_driver) const {
const char * OS_OSX::get_video_driver_name(int p_driver) const {
return "GLES2";
}
@ -924,7 +875,6 @@ OS::VideoMode OS_OSX::get_default_video_mode() const {
return vm;
}
void OS_OSX::initialize_core() {
OS_Unix::initialize_core();
@ -972,7 +922,6 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
unsigned int styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | (p_desired.resizable?NSResizableWindowMask:0);
window_object = [[GodotWindow alloc]
initWithContentRect:NSMakeRect(0, 0, p_desired.width/display_scale, p_desired.height/display_scale)
styleMask:styleMask
@ -1011,8 +960,6 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
int colorBits = 32;
// Fail if a robustness strategy was requested
#define ADD_ATTR(x) { attributes[attributeCount++] = x; }
#define ADD_ATTR2(x, y) { ADD_ATTR(x); ADD_ATTR(y); }
@ -1029,21 +976,26 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
ADD_ATTR2(NSOpenGLPFAColorSize, colorBits);
/* if (fbconfig->alphaBits > 0)
ADD_ATTR2(NSOpenGLPFAAlphaSize, fbconfig->alphaBits);*/
/*
if (fbconfig->alphaBits > 0)
ADD_ATTR2(NSOpenGLPFAAlphaSize, fbconfig->alphaBits);
*/
ADD_ATTR2(NSOpenGLPFADepthSize, 24);
ADD_ATTR2(NSOpenGLPFAStencilSize, 8);
/*if (fbconfig->stereo)
ADD_ATTR(NSOpenGLPFAStereo);*/
/*
if (fbconfig->stereo)
ADD_ATTR(NSOpenGLPFAStereo);
*/
/* if (fbconfig->samples > 0)
{
/*
if (fbconfig->samples > 0) {
ADD_ATTR2(NSOpenGLPFASampleBuffers, 1);
ADD_ATTR2(NSOpenGLPFASamples, fbconfig->samples);
}*/
}
*/
// NOTE: All NSOpenGLPixelFormats on the relevant cards support sRGB
// frambuffer, so there's no need (and no way) to request it
@ -1056,13 +1008,10 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes];
ERR_FAIL_COND( pixelFormat == nil);
context = [[NSOpenGLContext alloc] initWithFormat:pixelFormat
shareContext:nil];
context = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
ERR_FAIL_COND(context==nil);
[context setView:window_view];
[context makeCurrentContext];
@ -1080,19 +1029,16 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
bool use_gl2=p_video_driver!=1;
AudioDriverManagerSW::add_driver(&audio_driver_osx);
rasterizer = instance_RasterizerGLES2();
visual_server = memnew( VisualServerRaster(rasterizer) );
if (get_render_thread_mode()!=RENDER_THREAD_UNSAFE) {
visual_server =memnew(VisualServerWrapMT(visual_server,get_render_thread_mode()==RENDER_SEPARATE_THREAD));
}
visual_server->init();
visual_server->cursor_set_visible(false, 0);
@ -1115,7 +1061,6 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
spatial_sound_2d_server->init();
//
physics_server = memnew( PhysicsServerSW );
physics_server->init();
//physics_2d_server = memnew( Physics2DServerSW );
@ -1156,6 +1101,7 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi
};
restore_rect = Rect2(get_window_position(), get_window_size());
}
void OS_OSX::finalize() {
CFNotificationCenterRemoveObserver(CFNotificationCenterGetDistributedCenter(), NULL, kTISNotifySelectedKeyboardInputSourceChanged, NULL);
@ -1185,8 +1131,6 @@ void OS_OSX::finalize() {
memdelete(physics_2d_server);
screens.clear();
}
void OS_OSX::set_main_loop( MainLoop * p_main_loop ) {
@ -1200,6 +1144,7 @@ void OS_OSX::delete_main_loop() {
if (!main_loop)
return;
memdelete(main_loop);
main_loop=NULL;
}
@ -1258,9 +1203,11 @@ void OS_OSX::set_cursor_shape(CursorShape p_shape) {
void OS_OSX::set_mouse_show(bool p_show) {
}
void OS_OSX::set_mouse_grab(bool p_grab) {
}
bool OS_OSX::is_mouse_grab_enabled() const {
return mouse_grab;
@ -1272,8 +1219,8 @@ void OS_OSX::warp_mouse_pos(const Point2& p_to) {
if (mouse_mode == MOUSE_MODE_CAPTURED){
mouse_x = p_to.x;
mouse_y = p_to.y;
}
else{ //set OS position
} else {
//set OS position
/* this code has not been tested, please be a kind soul and fix it if it fails! */
@ -1301,9 +1248,11 @@ Point2 OS_OSX::get_mouse_pos() const {
return Vector2(mouse_x,mouse_y);
}
int OS_OSX::get_mouse_button_state() const {
return button_mask;
}
void OS_OSX::set_window_title(const String& p_title) {
[window_object setTitle:[NSString stringWithUTF8String:p_title.utf8().get_data()]];
@ -1368,18 +1317,17 @@ void OS_OSX::set_clipboard(const String& p_text) {
[pasteboard setString:[NSString stringWithUTF8String:p_text.utf8().get_data()]
forType:NSStringPboardType];
}
String OS_OSX::get_clipboard() const {
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
if (![[pasteboard types] containsObject:NSStringPboardType])
{
if (![[pasteboard types] containsObject:NSStringPboardType]) {
return "";
}
NSString* object = [pasteboard stringForType:NSStringPboardType];
if (!object)
{
if (!object) {
return "";
}
@ -1396,6 +1344,7 @@ void OS_OSX::release_rendering_thread() {
[NSOpenGLContext clearCurrentContext];
}
void OS_OSX::make_rendering_thread() {
[context makeCurrentContext];
@ -1436,11 +1385,11 @@ OS::VideoMode OS_OSX::get_video_mode(int p_screen) const {
return vm;
}
void OS_OSX::get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen) const {
}
int OS_OSX::get_screen_count() const {
return screens.size();
@ -1508,6 +1457,7 @@ void OS_OSX::set_window_size(const Size2 p_size) {
size.y+= [[NSStatusBar systemStatusBar] thickness];
#endif
}
NSRect frame = [window_object frame];
[window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, size.x, size.y) display:YES];
};
@ -1658,6 +1608,7 @@ static NSString *createStringForKeys(const CGKeyCode *keyCode, int length) {
return (NSString *)output;
}
OS::LatinKeyboardVariant OS_OSX::get_latin_keyboard_variant() const {
static LatinKeyboardVariant layout = LATIN_KEYBOARD_QWERTY;
@ -1707,8 +1658,6 @@ void OS_OSX::process_events() {
autoreleasePool = [[NSAutoreleasePool alloc] init];
}
void OS_OSX::push_input(const InputEvent& p_event) {
InputEvent ev=p_event;
@ -1792,13 +1741,13 @@ OS_OSX::OS_OSX() {
CGEventSourceSetLocalEventsSuppressionInterval(eventSource, 0.0);
/*if (pthread_key_create(&_Godot.nsgl.current, NULL) != 0)
{
/*
if (pthread_key_create(&_Godot.nsgl.current, NULL) != 0) {
_GodotInputError(Godot_PLATFORM_ERROR,
"NSGL: Failed to create context TLS");
return GL_FALSE;
}*/
}
*/
framework = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl"));
ERR_FAIL_COND(!framework);
@ -1822,7 +1771,6 @@ OS_OSX::OS_OSX() {
ERR_FAIL_COND(!delegate);
[NSApp setDelegate:delegate];
last_id = 1;
cursor_shape = CURSOR_ARROW;