1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <grammar xmlns:
a=
"http://relaxng.org/ns/compatibility/annotations/1.0" xmlns=
"http://relaxng.org/ns/structure/1.0" datatypeLibrary=
"http://www.w3.org/2001/XMLSchema-datatypes">
6 NOTE: To modify this Relax NG grammar, edit the Relax NG Compact (.rnc) file
7 and use a converter tool like trang to generate the Relax NG XML (.rng) file
10 <ref name=
"Scenario"/>
12 <define name=
"color_rgb">
18 <param name=
"minInclusive">0</param>
19 <param name=
"maxInclusive">1</param>
24 <param name=
"minInclusive">0</param>
25 <param name=
"maxInclusive">1</param>
30 <param name=
"minInclusive">0</param>
31 <param name=
"maxInclusive">1</param>
35 <define name=
"suncolor_rgb">
36 <!-- RGB can be > 1 due to overbrightness -->
39 <param name=
"minInclusive">0</param>
44 <param name=
"minInclusive">0</param>
49 <param name=
"minInclusive">0</param>
53 <define name=
"pos_xyz">
64 <define name=
"pos_xz">
66 <data type=
"decimal"/>
69 <data type=
"decimal"/>
73 <attribute name=
"angle">
77 <!-- TODO: bounds are not documented for many of these -->
78 <define name=
"Scenario">
82 <element name=
"Scenario">
84 <attribute name=
"version">
85 <data type=
"positiveInteger"/>
87 <element name=
"Environment">
89 <element name=
"SkySet">
92 <element name=
"SunColor">
93 <ref name=
"suncolor_rgb"/>
95 <element name=
"SunElevation">
98 <element name=
"SunRotation">
101 <element name=
"TerrainAmbientColor">
102 <ref name=
"color_rgb"/>
104 <element name=
"UnitsAmbientColor">
105 <ref name=
"color_rgb"/>
110 <element name=
"FogFactor">
111 <data type=
"decimal">
112 <param name=
"minInclusive">0</param>
114 <!-- TODO: what is the max? -->
116 <element name=
"FogThickness">
117 <data type=
"decimal">
118 <param name=
"minInclusive">0</param>
120 <!-- TODO: what is the max? -->
122 <element name=
"FogColor">
123 <ref name=
"color_rgb"/>
128 <element name=
"Water">
129 <element name=
"WaterBody">
131 <element name=
"Type">
134 <!-- Not implemented -->
135 <element name=
"Color">
136 <ref name=
"color_rgb"/>
138 <element name=
"Height">
139 <data type=
"decimal"/>
141 <element name=
"Waviness">
142 <data type=
"decimal"/>
144 <element name=
"Murkiness">
145 <data type=
"decimal"/>
147 <element name=
"Tint">
148 <ref name=
"color_rgb"/>
151 <element name=
"WindAngle">
152 <data type=
"decimal"/>
159 <element name=
"Postproc">
160 <element name=
"Brightness">
161 <data type=
"decimal"/>
163 <element name=
"Contrast">
164 <data type=
"decimal"/>
166 <element name=
"Saturation">
167 <data type=
"decimal"/>
169 <element name=
"Bloom">
170 <data type=
"decimal"/>
172 <element name=
"PostEffect">
180 <element name=
"Terrain">
182 <attribute name=
"patches">
183 <data type=
"positiveInteger"/>
187 <attribute name=
"texture"/>
190 <attribute name=
"priority">
191 <data type=
"nonNegativeInteger"/>
195 <attribute name=
"height">
196 <data type=
"positiveInteger"/>
202 <element name=
"Script">
207 <element name=
"Camera">
208 <!-- Camera can have weird float values -->
209 <element name=
"Position">
210 <ref name=
"pos_xyz"/>
212 <element name=
"Rotation">
215 <element name=
"Declination">
220 <element name=
"ScriptSettings">
224 <element name=
"Entities">
226 <element name=
"Entity">
228 <attribute name=
"uid">
229 <data type=
"positiveInteger"/>
231 <element name=
"Template">
235 <element name=
"Player">
236 <data type=
"nonNegativeInteger"/>
239 <element name=
"Position">
242 <element name=
"Orientation">
244 <data type=
"decimal"/>
248 <element name=
"Obstruction">
249 <attribute name=
"group">
250 <data type=
"positiveInteger"/>
253 <attribute name=
"group2">
254 <data type=
"positiveInteger"/>
260 <element name=
"Actor">
261 <attribute name=
"seed">
262 <data type=
"integer"/>
272 <element name=
"Paths">
274 <element name=
"Path">
276 <attribute name=
"name"/>
277 <attribute name=
"timescale">
278 <data type=
"decimal"/>
280 <attribute name=
"orientation"/>
281 <attribute name=
"mode"/>
282 <attribute name=
"style"/>
284 <element name=
"Node">
286 <attribute name=
"deltatime">
287 <data type=
"decimal">
288 <param name=
"minInclusive">0</param>
292 <element name=
"Position">
293 <ref name=
"pos_xyz"/>
297 <element name=
"Target">
298 <ref name=
"pos_xyz"/>
310 <element name=
"Triggers">