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