core :: union_find
union–find algorithm using an efficient disjoint-set data structureaccept_scroll_and_zoom
gamnit :: camera_control_android
Two fingers camera manipulation, pinch to zoom and slide to scrollgamnit :: camera_control_linux
Mouse wheel and middle mouse button to control cameraegl
, sdl
and x11
EulerCamera
and App::frame_core_draw
to get a stereoscopic view
# Abstract display services
module display
import ::glesv2
import mnit::input
import display_linux is conditional(linux)
import display_android is conditional(android)
import display_ios is conditional(ios)
# Should Gamnit be more verbose?
fun debug_gamnit: Bool do return false
# General display class, is sized and drawable
class GamnitDisplay
# Width of the display, in pixels
fun width: Int is abstract
# Height of the display, in pixels
fun height: Int is abstract
# Aspect ratio of the screen, `width / height`
fun aspect_ratio: Float do return width.to_f / height.to_f
# Is the cursor locked et the center of the screen?
var lock_cursor = false is writable
# Is the cursor visible?
#
# Only affects the desktop implementations.
var show_cursor: Bool = true is writable
# Number of bits used for the red value in the color buffer
fun red_bits: Int do return 8
# Number of bits used for the green value in the color buffer
fun green_bits: Int do return 8
# Number of bits used for the blue value in the color buffer
fun blue_bits: Int do return 8
# Prepare this display
#
# The implementation varies per platform.
fun setup is abstract
# Close this display and free underlying resources
#
# The implementation varies per platform.
fun close do end
# Flip the display buffers
#
# The implementation varies per platform.
fun flip do end
# Loop on available events and feed them back to the app
#
# The implementation varies per platform.
fun feed_events do end
# Extensions to OpenGL ES 2.0 supported by the current configuration
var gl_extensions: Array[String] is lazy do return glGetString(gl_EXTENSIONS).split(' ')
end
lib/gamnit/display.nit:15,1--79,3