OpenGL view controller

Introduced properties

fun bind_drawable

ios :: NitGLKView :: bind_drawable

Bind the view framebuffer
fun content_scale_factor: Float

ios :: NitGLKView :: content_scale_factor

Scale factor from logical coordinate space to the device coordinate space
protected fun content_scale_factor=(content_scale_factor: Float)

ios :: NitGLKView :: content_scale_factor=

fun drawable_height: Int

ios :: NitGLKView :: drawable_height

Height of the underlying framebuffer
fun drawable_width: Int

ios :: NitGLKView :: drawable_width

Width of the underlying framebuffer
fun multiple_touch_enabled: Bool

ios :: NitGLKView :: multiple_touch_enabled

Is multi-touch supported?
fun multiple_touch_enabled=(val: Bool)

ios :: NitGLKView :: multiple_touch_enabled=

Is multi-touch supported?
fun should_autorotate: Bool

ios :: NitGLKView :: should_autorotate

Should the view auto rotate to follow the device orientation?
fun supported_interface_orientations: Int

ios :: NitGLKView :: supported_interface_orientations

If should_autorotate, what are the supported interface orientations?
fun touches_began(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_began

Hook on a new touch event
fun touches_cancelled(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_cancelled

Hook on a touch event cancellation
fun touches_ended(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_ended

Hook on the end of a touch event
fun touches_moved(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_moved

Hook when a touch moves
fun update

ios :: NitGLKView :: update

Hook to update the view content, called once per frame
fun view_will_transition_to_size(width: Float, height: Float)

ios :: NitGLKView :: view_will_transition_to_size

Hook when size of the view is about to change to width by height

Redefined properties

redef type SELF: NitGLKView

ios $ NitGLKView :: SELF

Type of this instance, automatically specialized in every class
redef fun content_scale_factor: Float

gamnit :: input_ios $ NitGLKView :: content_scale_factor

Scale factor from logical coordinate space to the device coordinate space
redef fun touches_began(touches: NSSet_UITouch, event: UIEvent)

gamnit :: input_ios $ NitGLKView :: touches_began

Hook on a new touch event
redef fun touches_ended(touches: NSSet_UITouch, event: UIEvent)

gamnit :: input_ios $ NitGLKView :: touches_ended

Hook on the end of a touch event
redef fun touches_moved(touches: NSSet_UITouch, event: UIEvent)

gamnit :: input_ios $ NitGLKView :: touches_moved

Hook when a touch moves

All properties

fun !=(other: nullable Object): Bool

core :: Object :: !=

Have self and other different values?
fun ==(other: nullable Object): Bool

core :: Object :: ==

Have self and other the same value?
type CLASS: Class[SELF]

core :: Object :: CLASS

The type of the class of self.
type SELF: Object

core :: Object :: SELF

Type of this instance, automatically specialized in every class
fun bind_drawable

ios :: NitGLKView :: bind_drawable

Bind the view framebuffer
protected fun class_factory(name: String): CLASS

core :: Object :: class_factory

Implementation used by get_class to create the specific class.
fun class_name: String

core :: Object :: class_name

The class name of the object.
fun content_scale_factor: Float

ios :: NitGLKView :: content_scale_factor

Scale factor from logical coordinate space to the device coordinate space
protected fun content_scale_factor=(content_scale_factor: Float)

ios :: NitGLKView :: content_scale_factor=

fun drawable_height: Int

ios :: NitGLKView :: drawable_height

Height of the underlying framebuffer
fun drawable_width: Int

ios :: NitGLKView :: drawable_width

Width of the underlying framebuffer
fun get_class: CLASS

core :: Object :: get_class

The meta-object representing the dynamic type of self.
fun hash: Int

core :: Object :: hash

The hash code of the object.
init init

core :: Object :: init

fun inspect: String

core :: Object :: inspect

Developer readable representation of self.
protected fun inspect_head: String

core :: Object :: inspect_head

Return "CLASSNAME:#OBJECTID".
intern fun is_same_instance(other: nullable Object): Bool

core :: Object :: is_same_instance

Return true if self and other are the same instance (i.e. same identity).
fun is_same_serialized(other: nullable Object): Bool

core :: Object :: is_same_serialized

Is self the same as other in a serialization context?
intern fun is_same_type(other: Object): Bool

core :: Object :: is_same_type

Return true if self and other have the same dynamic type.
fun multiple_touch_enabled: Bool

ios :: NitGLKView :: multiple_touch_enabled

Is multi-touch supported?
fun multiple_touch_enabled=(val: Bool)

ios :: NitGLKView :: multiple_touch_enabled=

Is multi-touch supported?
intern fun object_id: Int

core :: Object :: object_id

An internal hash code for the object based on its identity.
fun output

core :: Object :: output

Display self on stdout (debug only).
intern fun output_class_name

core :: Object :: output_class_name

Display class name on stdout (debug only).
fun serialization_hash: Int

core :: Object :: serialization_hash

Hash value use for serialization
fun should_autorotate: Bool

ios :: NitGLKView :: should_autorotate

Should the view auto rotate to follow the device orientation?
fun supported_interface_orientations: Int

ios :: NitGLKView :: supported_interface_orientations

If should_autorotate, what are the supported interface orientations?
intern fun sys: Sys

core :: Object :: sys

Return the global sys object, the only instance of the Sys class.
abstract fun to_jvalue(env: JniEnv): JValue

core :: Object :: to_jvalue

fun to_s: String

core :: Object :: to_s

User readable representation of self.
fun touches_began(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_began

Hook on a new touch event
fun touches_cancelled(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_cancelled

Hook on a touch event cancellation
fun touches_ended(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_ended

Hook on the end of a touch event
fun touches_moved(touches: NSSet_UITouch, event: UIEvent)

ios :: NitGLKView :: touches_moved

Hook when a touch moves
fun update

ios :: NitGLKView :: update

Hook to update the view content, called once per frame
fun view_will_transition_to_size(width: Float, height: Float)

ios :: NitGLKView :: view_will_transition_to_size

Hook when size of the view is about to change to width by height
package_diagram ios::NitGLKView NitGLKView core::Object Object ios::NitGLKView->core::Object gamnit::GamnitGLKView GamnitGLKView gamnit::GamnitGLKView->ios::NitGLKView

Parents

interface Object

core :: Object

The root of the class hierarchy.

Children

class GamnitGLKView

gamnit :: GamnitGLKView

View controller implemented by gamnit

Class definitions

ios $ NitGLKView
# OpenGL view controller
class NitGLKView
	private var native: NativeGLKViewController = setup(app.app_delegate)

	# Scale factor from logical coordinate space to the device coordinate space
	fun content_scale_factor: Float do return native.content_scale_factor

	# Width of the underlying framebuffer
	fun drawable_width: Int do return native.drawable_width

	# Height of the underlying framebuffer
	fun drawable_height: Int do return native.drawable_height

	# Bind the view framebuffer
	fun bind_drawable do native.bind_drawable

	private fun setup(app_delegate: AppDelegate): NativeGLKViewController
	import touches_began, touches_moved, touches_ended, touches_cancelled,
	update, should_autorotate, supported_interface_orientations,
	view_will_transition_to_size in "ObjC" `{

		app_delegate.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
		app_delegate.window.backgroundColor = [UIColor whiteColor]; // TODO make configurable

		// Create EAGL context and view
		EAGLContext * context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2];
		GLKView *view = [[GLKView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
		view.context = context;

		// Ask for antialiasing
		view.drawableMultisample = GLKViewDrawableMultisample4X;
		view.drawableDepthFormat = GLKViewDrawableDepthFormat24;

		GameViewController *cont = [[GameViewController alloc] init];
		cont.view = view;

		// Setup callbacks
		NitGLKView_incr_ref(self);
		cont.nit_glk_view = self;

		// Make our controller the root
		view.delegate = cont;
		[app_delegate.window setRootViewController: cont];

		// Enable the context
		[app_delegate.window makeKeyAndVisible];
		[EAGLContext setCurrentContext: context];
		[view bindDrawable];

		return cont;
	`}

	# Is multi-touch supported?
	fun multiple_touch_enabled: Bool do return native.multiple_touch_enabled

	# Is multi-touch supported?
	fun multiple_touch_enabled=(val: Bool) do native.multiple_touch_enabled = val

	# Should the view auto rotate to follow the device orientation?
	#
	# Defaults to `true`.
	fun should_autorotate: Bool do return true

	# If `should_autorotate`, what are the supported interface orientations?
	#
	# Redef to return values of Objective-C `UIInterfaceOrientationMask`
	fun supported_interface_orientations: Int do return 0

	# Hook to update the view content, called once per frame
	fun update do end

	# Hook on a new touch event
	fun touches_began(touches: NSSet_UITouch, event: UIEvent) do end

	# Hook when a touch moves
	fun touches_moved(touches: NSSet_UITouch, event: UIEvent) do end

	# Hook on the end of a touch event
	fun touches_ended(touches: NSSet_UITouch, event: UIEvent) do end

	# Hook on a touch event cancellation
	fun touches_cancelled(touches: NSSet_UITouch, event: UIEvent) do end

	# Hook when size of the view is about to change to `width` by `height`
	fun view_will_transition_to_size(width, height: Float) do end
end
lib/ios/glkit.nit:93,1--178,3

gamnit :: input_ios $ NitGLKView
redef class NitGLKView

	redef var content_scale_factor = super is lazy

	redef fun touches_began(touches, event)
	do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, false))

	redef fun touches_moved(touches, event)
	do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, true))

	redef fun touches_ended(touches, event)
	do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, false, false))

	# TODO handle cancel
	#redef fun touches_cancelled(touches_event) do
	#do app.accept_event(new GamnitIOSPointerEvent(event, false, false))
end
lib/gamnit/input_ios.nit:43,1--59,3