forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package kha.graphics4;
 | 
						|
 | 
						|
class VertexStructure {
 | 
						|
	public var elements: Array<VertexElement>;
 | 
						|
	public var instanced: Bool;
 | 
						|
 | 
						|
	public function new() {
 | 
						|
		elements = new Array<VertexElement>();
 | 
						|
		instanced = false;
 | 
						|
	}
 | 
						|
 | 
						|
	public function add(name: String, data: VertexData) {
 | 
						|
		elements.push(new VertexElement(name, data));
 | 
						|
	}
 | 
						|
 | 
						|
	@:keep
 | 
						|
	public function size(): Int {
 | 
						|
		return elements.length;
 | 
						|
	}
 | 
						|
 | 
						|
	public function byteSize(): Int {
 | 
						|
		var byteSize = 0;
 | 
						|
 | 
						|
		for (i in 0...elements.length) {
 | 
						|
			byteSize += dataByteSize(elements[i].data);
 | 
						|
		}
 | 
						|
 | 
						|
		return byteSize;
 | 
						|
	}
 | 
						|
 | 
						|
	public static function dataByteSize(data: VertexData): Int {
 | 
						|
		switch (data) {
 | 
						|
			case Float32_1X:
 | 
						|
				return 1 * 4;
 | 
						|
			case Float32_2X:
 | 
						|
				return 2 * 4;
 | 
						|
			case Float32_3X:
 | 
						|
				return 3 * 4;
 | 
						|
			case Float32_4X:
 | 
						|
				return 4 * 4;
 | 
						|
			case Float32_4X4:
 | 
						|
				return 4 * 4 * 4;
 | 
						|
			case Int8_1X, UInt8_1X, Int8_1X_Normalized, UInt8_1X_Normalized:
 | 
						|
				return 1 * 1;
 | 
						|
			case Int8_2X, UInt8_2X, Int8_2X_Normalized, UInt8_2X_Normalized:
 | 
						|
				return 2 * 1;
 | 
						|
			case Int8_4X, UInt8_4X, Int8_4X_Normalized, UInt8_4X_Normalized:
 | 
						|
				return 4 * 1;
 | 
						|
			case Int16_1X, UInt16_1X, Int16_1X_Normalized, UInt16_1X_Normalized:
 | 
						|
				return 1 * 2;
 | 
						|
			case Int16_2X, UInt16_2X, Int16_2X_Normalized, UInt16_2X_Normalized:
 | 
						|
				return 2 * 2;
 | 
						|
			case Int16_4X, UInt16_4X, Int16_4X_Normalized, UInt16_4X_Normalized:
 | 
						|
				return 4 * 2;
 | 
						|
			case Int32_1X, UInt32_1X:
 | 
						|
				return 1 * 4;
 | 
						|
			case Int32_2X, UInt32_2X:
 | 
						|
				return 2 * 4;
 | 
						|
			case Int32_3X, UInt32_3X:
 | 
						|
				return 3 * 4;
 | 
						|
			case Int32_4X, UInt32_4X:
 | 
						|
				return 4 * 4;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	@:keep
 | 
						|
	public function get(index: Int): VertexElement {
 | 
						|
		return elements[index];
 | 
						|
	}
 | 
						|
}
 |