From 711d48a6266cce6f7d72afeb5322ab76438cc9ad Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Fri, 16 Oct 2020 10:58:37 +0200 Subject: [PATCH] [orx-obj-loader] add loadOBJEx --- orx-obj-loader/src/main/kotlin/OBJLoader.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/orx-obj-loader/src/main/kotlin/OBJLoader.kt b/orx-obj-loader/src/main/kotlin/OBJLoader.kt index 8acceb62..5ab03b06 100644 --- a/orx-obj-loader/src/main/kotlin/OBJLoader.kt +++ b/orx-obj-loader/src/main/kotlin/OBJLoader.kt @@ -117,10 +117,16 @@ fun loadOBJasVertexBuffer(lines: List): VertexBuffer { return vertexBuffer } -fun loadOBJ(file: File): Map> = loadOBJ(file.readLines()) -fun loadOBJ(url: URL): Map> = loadOBJ(url.readText().split("\n")) +fun loadOBJ(file: File) = loadOBJ(file.readLines()) +fun loadOBJEx(file: File) = loadOBJEx(file.readLines()) +fun loadOBJ(url: URL) = loadOBJ(url.readText().split("\n")) +fun loadOBJEx(url: URL) = loadOBJEx(url.readText().split("\n")) -fun loadOBJ(lines: List): Map> { +class OBJData(val positions: List, val normals: List, val textureCoords: List) + +fun loadOBJ(lines: List): Map> = loadOBJEx(lines).second + +fun loadOBJEx(lines: List): Pair>> { val meshes = mutableMapOf>() val positions = mutableListOf() val normals = mutableListOf() @@ -140,7 +146,7 @@ fun loadOBJ(lines: List): Map> { "vt" -> textureCoords += Vector2(tokens[1].toDouble(), tokens[2].toDouble()) "g" -> { activeMesh = mutableListOf() - meshes[tokens.getOrNull(1)?:"no-name-${meshes.size}"] = activeMesh + meshes[tokens.getOrNull(1) ?: "no-name-${meshes.size}"] = activeMesh } "f" -> { val indices = tokens.subList(1, tokens.size).map { it.split("/") }.map { @@ -185,5 +191,5 @@ fun loadOBJ(lines: List): Map> { } } } - return meshes + return Pair(OBJData(positions, normals, textureCoords), meshes) } \ No newline at end of file