forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha.korehl; | ||
|  | 
 | ||
|  | import haxe.ds.Vector; | ||
|  | import sys.io.File; | ||
|  | 
 | ||
|  | using StringTools; | ||
|  | 
 | ||
|  | @:keep | ||
|  | class Sound extends kha.Sound { | ||
|  | 	function initWav(filename: String) { | ||
|  | 		var dataSize = new kha.arrays.Uint32Array(1); | ||
|  | 		final sampleRateRef: hl.Ref<Int> = sampleRate; | ||
|  | 		final lengthRef: hl.Ref<Float> = length; | ||
|  | 		var data = kinc_sound_init_wav(StringHelper.convert(filename), dataSize.getData(), sampleRateRef, lengthRef); | ||
|  | 		sampleRate = sampleRateRef.get(); | ||
|  | 		length = lengthRef.get(); | ||
|  | 		uncompressedData = cast new kha.arrays.ByteArray(data, 0, dataSize[0] * 4); | ||
|  | 		(cast dataSize : kha.arrays.ByteArray).free(); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	function initOgg(filename: String) { | ||
|  | 		compressedData = File.getBytes(filename); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public function new(filename: String) { | ||
|  | 		super(); | ||
|  | 		if (filename.endsWith(".wav")) { | ||
|  | 			initWav(filename); | ||
|  | 		} | ||
|  | 		else if (filename.endsWith(".ogg")) { | ||
|  | 			initOgg(filename); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			trace("Unknown sound format: " + filename); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	@:hlNative("std", "kinc_sound_init_wav") static function kinc_sound_init_wav(filename: hl.Bytes, outSize: Pointer, outSampleRate: hl.Ref<Int>, | ||
|  | 			outLength: hl.Ref<Float>): Pointer { | ||
|  | 		return null; | ||
|  | 	} | ||
|  | } |