core :: union_find
union–find algorithm using an efficient disjoint-set data structureEulerCamera and App::frame_core_draw to get a stereoscopic view
			
# Services to load and play `Sound` and `Music` from the assets folder
#
# Get a handle to a sound using `new Sound` or `new Music` at any time.
# Call `load` at or after `App::on_create` or leave it to be loaded
# on demand by the first call to `play`.
module audio
import app_base
import core::error
# Platform variations
import linux::audio is conditional(linux)
import android::audio is conditional(android)
import ios::audio is conditional(ios)
# Abstraction of a playable Audio
abstract class PlayableAudio
	init do sounds.add self
	# Path to the audio file in the assets folder
	var path: String
	# Last error on this sound, if any
	fun error: nullable Error do return null
	# Load this playable audio
	fun load do end
	# Play the sound
	fun play do end
	# Pause the sound
	fun pause do end
	# Resume the sound
	fun resume do end
end
# Short sound
class Sound
	super PlayableAudio
end
# Long sound that can bee looped
class Music
	super PlayableAudio
end
redef class Sys
	# All instantiated sounds
	var sounds = new Array[PlayableAudio]
end
lib/app/audio.nit:17,1--70,3