1 ! Copyright (C) 2008 Jeff Bigot
\r
2 ! See http://factorcode.org/license.txt for BSD license.
\r
3 USING: adsoda xml xml.traversal xml.syntax accessors
\r
4 combinators sequences math.parser kernel splitting values
\r
6 IN: 4DNav.space-file-decoder
\r
8 : decode-number-array ( x -- y )
\r
9 "," split [ string>number ] map ;
\r
11 TAGS: adsoda-read-model ( tag -- model )
\r
13 TAG: dimension adsoda-read-model
\r
14 children>> first string>number ;
\r
15 TAG: direction adsoda-read-model
\r
16 children>> first decode-number-array ;
\r
17 TAG: color adsoda-read-model
\r
18 children>> first decode-number-array ;
\r
19 TAG: name adsoda-read-model
\r
21 TAG: face adsoda-read-model
\r
22 children>> first decode-number-array ;
\r
24 TAG: solid adsoda-read-model
\r
27 [ "dimension" tag-named adsoda-read-model >>dimension ]
\r
28 [ "name" tag-named adsoda-read-model >>name ]
\r
29 [ "color" tag-named adsoda-read-model >>color ]
\r
31 tags-named [ adsoda-read-model cut-solid ] each ]
\r
36 TAG: light adsoda-read-model
\r
39 [ "direction" tag-named adsoda-read-model >>direction ]
\r
40 [ "color" tag-named adsoda-read-model >>color ]
\r
44 TAG: space adsoda-read-model
\r
47 [ "dimension" tag-named adsoda-read-model >>dimension ]
\r
48 [ "name" tag-named adsoda-read-model >>name ]
\r
49 [ "color" tag-named
\r
50 adsoda-read-model >>ambient-color ]
\r
51 [ "solid" tags-named
\r
52 [ adsoda-read-model suffix-solids ] each ]
\r
53 [ "light" tags-named
\r
54 [ adsoda-read-model suffix-lights ] each ]
\r
58 : read-model-file ( path -- x )
\r
60 [ file>xml "space" tag-named adsoda-read-model ]
\r
61 [ 2drop <space> ] recover
\r