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