diff --git a/libraries/file/wavefront/obj.scm b/libraries/file/wavefront/obj.scm index dafeab25..2a15dc06 100644 --- a/libraries/file/wavefront/obj.scm +++ b/libraries/file/wavefront/obj.scm @@ -26,15 +26,19 @@ (comment get-rest-of-line)) #true)) (define get-mtllib - (let-parses( - (skip (get-word "mtllib " #t)) - (name get-rest-of-line)) - name)) + (either + (let-parses( + (skip (get-word "mtllib " #t)) + (name get-rest-of-line)) + (bytes->string name)) + (epsilon #false))) (define get-usemtl - (let-parses( - (skip (get-word "usemtl " #t)) - (name get-rest-of-line)) - name)) + (either + (let-parses( + (skip (get-word "usemtl " #t)) + (name get-rest-of-line)) + (bytes->string name)) + (epsilon #false))) (define get-g (let-parses( @@ -89,14 +93,10 @@ (a (get-either get-number (get-epsilon #f))) - (skip (get-imm #\/)) - (b (get-either - get-number - (get-epsilon #f))) - (skip (get-imm #\/)) - (c (get-either - get-number - (get-epsilon #f)))) + (skip (either (get-imm #\/) (epsilon #false))) + (b (either get-number (epsilon #f))) + (skip (either (get-imm #\/) (epsilon #false))) + (c (either get-number (epsilon #f))) ) [a b c])) (define get-f @@ -117,7 +117,7 @@ (faces (get-greedy+ get-f)) (skip (get-greedy* get-l))) (cons - (bytes->string usemtl) + usemtl faces))) ; main @@ -127,10 +127,11 @@ (mtllib get-mtllib) (objects (greedy+ (let-parses ( (name (get-either get-g get-o)) - (v (get-greedy+ get-v)) + (v (greedy+ get-v)) (vt (get-greedy* get-vt)) (vn (get-greedy* get-vn)) - (facegroups (get-greedy+ facegroup-parser))) + (facegroups (get-greedy+ facegroup-parser)) + ) { 'name (bytes->string name) 'v v @@ -139,13 +140,14 @@ 'facegroups facegroups })))) { - 'mtllib (bytes->string mtllib) + 'mtllib mtllib 'v (foldr append '() (map (lambda (o) (o 'v '())) objects)) 'vt (foldr append '() (map (lambda (o) (o 'vt '())) objects)) 'vn (foldr append '() (map (lambda (o) (o 'vn '())) objects)) 'o (map (lambda (o) { 'name (o 'name) - 'facegroups (o 'facegroups) }) + 'facegroups (o 'facegroups) + }) objects) })) diff --git a/libraries/lib/gl2.scm b/libraries/lib/gl2.scm index f969b213..0aee776c 100644 --- a/libraries/lib/gl2.scm +++ b/libraries/lib/gl2.scm @@ -2,6 +2,7 @@ (import (scheme core) (scheme bytevector) + (scheme list) (lib gl) (OpenGL version-2-1)) (export gl:create-program diff --git a/libraries/lib/gl3.scm b/libraries/lib/gl3.scm index cdd9b606..5ed82360 100644 --- a/libraries/lib/gl3.scm +++ b/libraries/lib/gl3.scm @@ -3,10 +3,9 @@ (scheme base) (owl math) (otus async) (lib gl config) - (lib gl2) (OpenGL version-3-0)) + (lib gl2) (OpenGL 3.0)) (export (exports (lib gl2)) - (exports (OpenGL version-3-0)) gl:set-context-version ; recreate OpenGL with version ) diff --git a/repl b/repl index 1cf72ab4..db5e16d3 100644 Binary files a/repl and b/repl differ