engine/src/Utils/IosApi/ObjC/ViewControllerTemplate.mm
2013-07-29 18:01:22 +00:00

176 lines
3.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ViewController.m
// doublehitballs
//
// Created by vvv ооо on 13.07.12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import "include/Utils/IosApi/ObjC/ViewControllerTemplate.h"
#include "include/Utils/IosApi/IosWrapper.h"
extern GLKView* defaultView; //Find this in IosApi.mm
extern UITextField* extKeyboardTextView; //Find this in IosApi.mm
namespace SE
{
void SetKeyboardText(const char* newText);
}
@interface ViewControllerTemplate () {
}
@property (strong, nonatomic) EAGLContext *context;
@property (strong, nonatomic) GLKBaseEffect *effect;
- (void)setupGL;
- (void)tearDownGL;
@end
@implementation ViewControllerTemplate
@synthesize context = _context;
@synthesize effect = _effect;
@synthesize hiddenTextField = _hiddenTextField;
- (void)viewDidLoad
{
[super viewDidLoad];
self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
if (!self.context) {
NSLog(@"Failed to create ES context");
}
GLKView *view = (GLKView *)self.view;
view.context = self.context;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
defaultView = view;
[self setupGL];
//Gesture Recognizers
UIPinchGestureRecognizer *recognizer = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(respondToPinch:)];
[self.view addGestureRecognizer:recognizer];
//Keyboard
_hiddenTextField = [[UITextField alloc] initWithFrame:CGRectMake(-200,-200,0,0)];
//[_hiddenTextField setReturnKeyType: UIReturnKeyDone];
_hiddenTextField.autocorrectionType = UITextAutocorrectionTypeNo;
[self.view addSubview:_hiddenTextField];
extKeyboardTextView = _hiddenTextField;
_hiddenTextField.delegate = self;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onReceiveKeyboardNotification:) name:UITextFieldTextDidChangeNotification object:nil];
}
- (void)viewDidUnload
{
[super viewDidUnload];
[self tearDownGL];
if ([EAGLContext currentContext] == self.context) {
[EAGLContext setCurrentContext:nil];
}
self.context = nil;
_hiddenTextField = nil;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)setupGL
{
[EAGLContext setCurrentContext:self.context];
[self appInitCaller];
}
- (void)tearDownGL
{
[EAGLContext setCurrentContext:self.context];
SE::AppDeinit();
}
- (void) appInitCaller
{
}
- (void)respondToPinch:(UIPinchGestureRecognizer *)gestureRecognizer
{
SE::AppOnScale(gestureRecognizer.scale);
}
- (void) onReceiveKeyboardNotification:(NSNotification*) notification
{
if (notification.name == UITextFieldTextDidChangeNotification)
{
UITextField* textField = notification.object;
const char* text = [[textField text] UTF8String];
SE::SetKeyboardText(text);
}
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"Begin");
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"End");
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([string isEqualToString:@"\n"])
[textField resignFirstResponder];
return YES;
}
#pragma mark - GLKView and GLKViewController delegate methods
- (void)update
{
SE::AppUpdate(self.timeSinceLastUpdate * 1000);
}
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
SE::AppDraw();
}
@end