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;
 | |
| 	}
 | |
| }
 |