@startuml
!include theme.ipuml
skinparam Linetype ortho

package crepe {
	class Asset <<irrelevant>>

	class Sound {
		+Sound(asset)
		--
		+pause()
		+play()
		+rewind()
		-volume : float <<+set>> <<+get>>
		-looping : bool <<+set>> <<+get>>
		--
		-sample : SoLoud::Wav
		-handle : SoLoud::handle
		--
		-load(asset)
	}

	class SoundContext <<Singleton>> {
		-instance() : SoundContext& <<static>>
		--
		-SoundContext()
		-~SoundContext()
		--
		-engine : SoLoud::Soloud
	}

	Sound .> SoundContext
	SoundContext .> Sound

	Sound .left> Asset
}

package SoLoud {
	class Soloud <<irrelevant>>
	class Wav <<irrelevant>>
}

crepe.Sound --> SoLoud.Wav
crepe.SoundContext --> SoLoud.Soloud

' LAYOUT
crepe -[hidden]down- SoLoud

@enduml