package speiger.src.coreengine.rendering.models.loader; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.List; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; import speiger.src.coreengine.utils.helpers.JsonUtil; public class VertexLoader { public static List loadVertexFormat(JsonObject obj) { List list = new ObjectArrayList<>(); JsonUtil.iterate(obj.get("dataOrder"), T -> list.add(new VertexEntry(T))); return list; } public static ByteBuffer parseVertexData(JsonObject obj, int vertexCount, List entries, boolean excludeOptional) { int byteStride = VertexEntry.caculateByteSize(entries, excludeOptional); JsonArray vertexes = obj.getAsJsonArray("vertexes"); ByteBuffer buffer = ByteBuffer.allocate(vertexCount * byteStride).order(ByteOrder.nativeOrder()); int stride = VertexEntry.caclulateStride(entries); for(int i = 0,offset = 0, byteOffset = 0,m=entries.size();i> parseMappedVertexData(JsonObject obj, List entries, boolean excludeOptional) { Object2ObjectMap> mappedData = Object2ObjectMap.builder().linkedMap(); int stride = VertexEntry.caclulateStride(entries); int[] vertexes = JsonUtil.parseIntArray(obj.getAsJsonArray("vertexes")); for(int i = 0,offset=0,m=entries.size();i List deserializeIndecies(int[] indecies, T[] in, int size, int stride, int offset) { List out = new ObjectArrayList<>(); for(int i = 0,m=(indecies.length/stride)*size;i