47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package kha.graphics5;
 | 
						|
 | 
						|
import kha.arrays.Uint32Array;
 | 
						|
 | 
						|
@:headerCode('
 | 
						|
#include <Kore/Graphics5/Graphics.h>
 | 
						|
')
 | 
						|
@:headerClassCode("Kore::Graphics5::IndexBuffer* buffer;")
 | 
						|
class IndexBuffer {
 | 
						|
	private var data: Uint32Array;
 | 
						|
	private var myCount: Int;
 | 
						|
 | 
						|
	public function new(indexCount: Int, usage: Usage, canRead: Bool = false) {
 | 
						|
		myCount = indexCount;
 | 
						|
		data = new Uint32Array();
 | 
						|
		untyped __cpp__('buffer = new Kore::Graphics5::IndexBuffer(indexCount, true);');
 | 
						|
	}
 | 
						|
 | 
						|
	public function delete(): Void {
 | 
						|
		untyped __cpp__('delete buffer; buffer = nullptr;');
 | 
						|
	}
 | 
						|
 | 
						|
	@:functionCode('
 | 
						|
		data->self.data = (unsigned int*)buffer->lock() + start;
 | 
						|
		data->self.myLength = count;
 | 
						|
		return data;
 | 
						|
	')
 | 
						|
	private function lock2(start: Int, count: Int): Uint32Array {
 | 
						|
		return data;
 | 
						|
	}
 | 
						|
 | 
						|
	public function lock(?start: Int, ?count: Int): Uint32Array {
 | 
						|
		if (start == null)
 | 
						|
			start = 0;
 | 
						|
		if (count == null)
 | 
						|
			count = this.count();
 | 
						|
		return lock2(start, count);
 | 
						|
	}
 | 
						|
 | 
						|
	@:functionCode('buffer->unlock();')
 | 
						|
	public function unlock(): Void {}
 | 
						|
 | 
						|
	public function count(): Int {
 | 
						|
		return myCount;
 | 
						|
	}
 | 
						|
}
 |