source: java/FramclipsePlugin/framscript.xml @ 15

Last change on this file since 15 was 12, checked in by jbochenski, 16 years ago
  • Property svn:mime-type set to text/plain
File size: 250.9 KB
Line 
1<?xml version="1.0"?>
2<!DOCTYPE framscript SYSTEM "framscript.dtd">
3<?xml-stylesheet type="text/xsl" href="framscript.xsl"?>
4<framscript>
5        <type name="expdef" context="expdef file">
6                <element name="code" type="string"/>
7                <element name="info" type="string"/>
8                <element name="name" type="string"/>
9                <element name="neurons" type="string"/>
10        </type>
11        <type name="prop" context="properties file">
12                <element name="flags" type="integer"/>
13                <element name="group" type="string"/>
14                <element name="help" type="string"/>
15                <element name="id" type="string"/>
16                <element name="name" type="string"/>
17                <element name="type" type="string"/>
18        </type>
19        <type name="stat" context="state file">
20                <element name="flags" type="integer"/>
21                <element name="group" type="string"/>
22                <element name="help" type="string"/>
23                <element name="id" type="string"/>
24                <element name="name" type="string"/>
25                <element name="type" type="string"/>
26        </type>
27        <type name="style" context="style file">
28<description><![CDATA[General visual style properties.]]></description>
29                <element name="code" type="string"/>
30                <element name="info" type="string"/>
31                <element name="name" type="string"/>
32                <element name="neurons" type="integer" min="0" max="1"/>
33                <element name="smooth" type="integer" min="0" max="1"/>
34                <element name="style" type="string"/>
35                <element name="tex" type="integer" min="0" max="2"/>
36                <element name="rebuild" function="true"/>
37                <element name="streload" function="true"/>
38        </type>
39        <type name="show" context="show file">
40<description><![CDATA[Show properties for the Framsticks Theater (from the *.show file).]]></description>
41                <element name="code" type="string"/>
42                <element name="dispinfo" type="integer" min="0" max="2"/>
43                <element name="expdef" type="string"/>
44                <element name="info" type="string"/>
45                <element name="mode" type="integer" min="0" max="2"/>
46                <element name="name" type="string"/>
47                <element name="regname" type="string"/>
48                <element name="show" type="string"/>
49                <element name="showlog" type="integer" min="0" max="1"/>
50                <element name="switchmode" type="integer" min="0" max="2"/>
51                <element name="switchshows" type="string">
52                        <description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
53                </element>
54                <element name="switchtime" type="integer" min="0" max="9999">
55                        <description><![CDATA[time between switching (seconds)]]></description>
56                </element>
57                <element name="userspeed" type="integer" min="0" max="5" default="3"/>
58                <element name="about" function="true"/>
59                <element name="dummy" function="true">
60                        <description><![CDATA[This is the empty item in the Theater's menu]]></description>
61                </element>
62                <element name="reload" function="true"/>
63        </type>
64        <type name="class" context="neuro file">
65                <element name="code" type="string"/>
66                <element name="description" type="string"/>
67                <element name="icon" type="string"/>
68                <element name="longname" type="string"/>
69                <element name="name" type="string"/>
70                <element name="prefinputs" type="integer"/>
71                <element name="preflocation" type="integer" min="0" max="2"/>
72                <element name="prefoutput" type="integer" min="0" max="1"/>
73                <element name="vhints" type="integer"/>
74        </type>
75        <type name="script" context="script file">
76                <element name="code" type="string"/>
77                <element name="group" type="string"/>
78                <element name="help" type="string"/>
79                <element name="name" type="string"/>
80        </type>
81        <type name="Collision" context="Global context">
82<description><![CDATA[Used in collision handlers (On___Collision). Contains the detailed information about the colliding parts (Part1,Part2 and their associated MechParts and Creatures). See the onFoodCollision() function in standard.expdef]]></description>
83                <element name="Creature1" type="Object"/>
84                <element name="Creature2" type="Object"/>
85                <element name="MechPart1" type="Object"/>
86                <element name="MechPart2" type="Object"/>
87                <element name="Part1" type="Object"/>
88                <element name="Part2" type="Object"/>
89        </type>
90        <type name="CrCollision" context="Global context">
91<description><![CDATA[Used in creature collision handlers (On___CrCollision).]]></description>
92                <element name="Creature1" type="Object"/>
93                <element name="Creature2" type="Object"/>
94        </type>
95        <type name="Creature" context="Global context">
96<description><![CDATA[The object inside the simulated world, including its physical structure, neural network and performance data. Food pieces, obstacles and other movable objects can be implemented as Creatures even though the are not "alive". See also: Population.]]></description>
97                <element name="bodysim" type="integer" min="0" max="1" default="1">
98                        <description><![CDATA[(Physical) body simulation can be disabled for individual objects which makes them immovable. Disabled objects can still participate in collisions depending on their collisions masks.
99
100Bugs: the standard collision handler does not work for disabled objects when ODE simulation is used. It means that these objects won't physically interact with other objects. The custom (scripting) handlers work as expected.]]></description>
101                </element>
102                <element name="buildproblems" type="integer"/>
103                <element name="c_velocity" type="float"/>
104                <element name="c_vertpos" type="float"/>
105                <element name="c_vertvelocity" type="float"/>
106                <element name="center_x" type="float">
107                        <description><![CDATA[Center of gravity]]></description>
108                </element>
109                <element name="center_y" type="float">
110                        <description><![CDATA[Center of gravity]]></description>
111                </element>
112                <element name="center_z" type="float">
113                        <description><![CDATA[Center of gravity]]></description>
114                </element>
115                <element name="distance" type="float"/>
116                <element name="drive" type="XYZ">
117                        <description><![CDATA[]]></description>
118                </element>
119                <element name="energ0" type="float"/>
120                <element name="energy" type="float"/>
121                <element name="energy_b" type="float"/>
122                <element name="energy_m" type="float"/>
123                <element name="energy_p" type="float"/>
124                <element name="geno" type="Geno">
125                        <description><![CDATA[Source genotype for this creature]]></description>
126                </element>
127                <element name="genotype" type="string"/>
128                <element name="gnum" type="integer"/>
129                <element name="group" type="untyped"/>
130                <element name="idleen" type="float"/>
131                <element name="index" type="integer">
132                        <description><![CDATA[Index of this Creature in its Population.]]></description>
133                </element>
134                <element name="info" type="string">
135                        <description><![CDATA[Additional info or comments]]></description>
136                </element>
137                <element name="lifespan" type="integer"/>
138                <element name="liveModel" type="Model">
139                        <description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
140                </element>
141                <element name="localDrive" type="XYZ">
142                        <description><![CDATA[]]></description>
143                </element>
144                <element name="model" type="Model">
145                        <description><![CDATA[Source Model for this creature]]></description>
146                </element>
147                <element name="name" type="string"/>
148                <element name="nnenabled" type="integer" min="0" max="1"/>
149                <element name="numjoints" type="integer"/>
150                <element name="numneurons" type="integer"/>
151                <element name="numparts" type="integer"/>
152                <element name="orient" type="Orient">
153                        <description><![CDATA[by convention the creature orientation is equal to its first part orientation]]></description>
154                </element>
155                <element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
156                <element name="perf" type="integer" min="0" max="2">
157                        <description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
158                </element>
159                <element name="pos_x" type="float">
160                        <description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
161                </element>
162                <element name="pos_y" type="float">
163                        <description><![CDATA[See Creature.pos_x]]></description>
164                </element>
165                <element name="pos_z" type="float">
166                        <description><![CDATA[See Creature.pos_x]]></description>
167                </element>
168                <element name="selfcol" type="integer" min="0" max="1">
169                        <description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
170                </element>
171                <element name="selfcolstate" type="integer" min="0" max="1">
172                        <description><![CDATA[Current self-collision state]]></description>
173                </element>
174                <element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
175                <element name="signals" type="CreatureSignals"/>
176                <element name="size_x" type="float">
177                        <description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
178See also: Creature.moveAbs]]></description>
179                </element>
180                <element name="size_y" type="float">
181                        <description><![CDATA[See Creature.size_x]]></description>
182                </element>
183                <element name="size_z" type="float">
184                        <description><![CDATA[See Creature.size_x]]></description>
185                </element>
186                <element name="uid" type="string"/>
187                <element name="user1" type="untyped"/>
188                <element name="user2" type="untyped"/>
189                <element name="user3" type="untyped"/>
190                <element name="velocity" type="float"/>
191                <element name="vertpos" type="float"/>
192                <element name="vertvel" type="float"/>
193                <element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
194                <element name="getJoint" function="true" type="Joint">
195                        <arguments>
196                                <argument name="index" type="integer"/>
197                        </arguments>
198                </element>
199                <element name="getMechJoint" function="true" type="MechJoint">
200                        <arguments>
201                                <argument name="index" type="integer"/>
202                        </arguments>
203                </element>
204                <element name="getMechPart" function="true" type="MechPart">
205                        <arguments>
206                                <argument name="index" type="integer"/>
207                        </arguments>
208                </element>
209                <element name="getNeuro" function="true" type="Neuro">
210                        <arguments>
211                                <argument name="index" type="integer"/>
212                        </arguments>
213                </element>
214                <element name="getNeuroDef" function="true" type="NeuroDef">
215                        <arguments>
216                                <argument name="index" type="integer"/>
217                        </arguments>
218                </element>
219                <element name="getPart" function="true" type="Part">
220                        <arguments>
221                                <argument name="index" type="integer"/>
222                        </arguments>
223                </element>
224                <element name="localToWorld" function="true" type="XYZ">
225                        <arguments>
226                                <argument name="x" type="float"/>
227                                <argument name="y" type="float"/>
228                                <argument name="z" type="float"/>
229                        </arguments>
230                </element>
231                <element name="move" function="true" type="void">
232                        <description><![CDATA[Shift the creature by a given vector.]]></description>
233                        <arguments>
234                                <argument name="x" type="float"/>
235                                <argument name="y" type="float"/>
236                                <argument name="z" type="float"/>
237                        </arguments>
238                </element>
239                <element name="moveAbs" function="true" type="void">
240                        <description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
241Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
242
243origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
244size (size_x,size_y,size_z) = (2,1,1)
245
246The following example places the bottom of a creature at a given location (x,y,z):
247Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
248(assuming that the part size is 1.0)]]></description>
249                        <arguments>
250                                <argument name="x" type="float"/>
251                                <argument name="y" type="float"/>
252                                <argument name="z" type="float"/>
253                        </arguments>
254                </element>
255                <element name="moveLocal" function="true" type="void">
256                        <arguments>
257                                <argument name="x" type="float"/>
258                                <argument name="y" type="float"/>
259                                <argument name="z" type="float"/>
260                        </arguments>
261                </element>
262                <element name="rotate" function="true" type="void">
263                        <description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise the further simulation could be disturbed.]]></description>
264                        <arguments>
265                                <argument name="x" type="float"/>
266                                <argument name="y" type="float"/>
267                                <argument name="z" type="float"/>
268                        </arguments>
269                </element>
270                <element name="rotateLocal" function="true" type="void">
271                        <description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise the further simulation could be disturbed.]]></description>
272                        <arguments>
273                                <argument name="x" type="float"/>
274                                <argument name="y" type="float"/>
275                                <argument name="z" type="float"/>
276                        </arguments>
277                </element>
278                <element name="worldToLocal" function="true" type="XYZ">
279                        <arguments>
280                                <argument name="x" type="float"/>
281                                <argument name="y" type="float"/>
282                                <argument name="z" type="float"/>
283                        </arguments>
284                </element>
285        </type>
286        <type name="CreaturesGroup" context="Global context">
287<description><![CDATA[A set of Creature objects, sharing some high level simulation properties (performance calculation, NN simulation, collision detection, event handling). The groups usually have different roles in the experiment (Creatures groups and Food group in standard.expdef)]]></description>
288                <element name="bodysim" type="integer" min="0" max="1" default="1">
289                        <description><![CDATA[Enable/disable physical body simulation. This is the initial value of Creature.bodysim for all objects created in this group. For details, see the documentation of Creature.bodysim.]]></description>
290                </element>
291                <element name="colmask" type="integer" min="0" max="65535" default="0">
292                        <description><![CDATA[DEPRECATED. You should use selfmask and othermask (these masks are also much easier to understand than the old colmask field).]]></description>
293                </element>
294                <element name="death" type="integer" min="0" max="1" default="1">
295                        <description><![CDATA[Do creatures die when no energy?]]></description>
296                </element>
297                <element name="em_dyn" type="float" min="0" max="1" default="0">
298                        <description><![CDATA[Energy requirements for a muscle
299moving a stick]]></description>
300                </element>
301                <element name="em_stat" type="float" min="0" max="1" default="0">
302                        <description><![CDATA[Energy requirements for a muscle
303resisting an external force]]></description>
304                </element>
305                <element name="en_assim" type="float" min="0" max="1" default="0">
306                        <description><![CDATA[Maximal energy gain produced by a vertical specialized stick.
307Horizontal specialized sticks get half of this value.]]></description>
308                </element>
309                <element name="enableperf" type="integer" min="0" max="2" default="1">
310                        <description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
311                </element>
312                <element name="energy" type="integer" min="0" max="1" default="1">
313                        <description><![CDATA[If turned off, creature's energy will be constant]]></description>
314                </element>
315                <element name="index" type="integer"/>
316                <element name="killnostable" type="integer" min="0" max="10000000" default="1000000">
317                        <description><![CDATA[Creatures that fail to stabilize after the specified waiting period (e.g. because they are continuously rolling) will be killed. 0 disables this feature.]]></description>
318                </element>
319                <element name="name" type="string"/>
320                <element name="nnsim" type="integer" min="0" max="2" default="1">
321                        <description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
322                </element>
323                <element name="othermask" type="integer" min="0" max="2147483647" default="0">
324                        <description><![CDATA[See selfmask.]]></description>
325                </element>
326                <element name="perfperiod" type="integer" min="0" max="1000000" default="100">
327                        <description><![CDATA[Defines how often onUpdate() events are called. Also used to compute partial performance of creatures (distance, speed, etc.) and to determine stabilization.]]></description>
328                </element>
329                <element name="selfcol" type="integer" min="0" max="1" default="0">
330                        <description><![CDATA[Detect collisions within creature bodies (only applicable for the ODE simulation engine). This is the initial value of Creature.selfcol for all objects created in this group. If enabled, creatures with self-colliding genotypes are not born, and others will have their sticks collide during lifespan.]]></description>
331                </element>
332                <element name="selfmask" type="integer" min="0" max="2147483647" default="0">
333                        <description><![CDATA[Collisions between objects can be handled in two ways:
334 - standard 'mechanical' collision (simple 'rebound' effect)
335 - special script handler (On[GROUPNAME]Collision function)
336
337In the script handler function, use the Collision object to access the two colliding parts of two creatures.
338The first part in the Collision object (i.e. Collision.Creature1) always concerns the creature that belongs to [GROUPNAME].
339The handler is called once for each creature that collides with the creature from [GROUPNAME].
340
341Collision masks determine which one will be used (none and both are also possible). On each collision, selfmask and othermask of the colliding objects are logically ANDed. 16 lower bits (0xffff) enable the standard handler. 16 higher bits (0xffff0000) enable the custom handler.
342Examples:
343
3441.With one group, all possible combinations of the collision handlers are as follows:
345  - ignore collisions (e.g. selfmask=othermask=0)
346  - use standard handling (e.g. selfmask=othermask=1)
347  - use custom handling (e.g. selfmask=othermask=0x10000)
348  - use standard and custom handling (e.g. selfmask=othermask=0x10001)
349
3502.Two groups yield more interesting cases. Let us consider the 'standard.expdef' setting:
351  Creatures: selfmask=0x10001, othermask=0x20001
352  Food colmask = selfmask=0x20002, othermask=0x10002
353There are three possible scenarios:
354- creature and creature: collision value = 0x10001 & 0x20001 = 1 -> Standard handling will be used (1 is one of the lower 16 bits)
355- food and food: collision value = 0x20002 & 0x10002 = 2 -> As above.
356- creature and food: collision value = (0x10001 & 0x10002) or (0x20002 & 0x20001) = 0x10000 or 0x20000 -> Custom handling will be used (higher 16 bits).
357]]></description>
358                </element>
359                <element name="size" type="integer"/>
360                <element name="stabilperiod" type="integer" min="0" max="1000000" default="100">
361                        <description><![CDATA["Performance sampling period" for the stabilization phase.]]></description>
362                </element>
363                <element name="stabledist" type="float" min="0" max="1" default="0.01">
364                        <description><![CDATA[A creature is considered stabilized when its center of gravity stays within the specified distance after the "Sampling period while waiting" has elapsed.]]></description>
365                </element>
366                <element name="createFromGeno" function="true" type="Creature">
367                        <description><![CDATA[uses the supplied Geno object]]></description>
368                        <arguments>
369                                <argument type="Geno"/>
370                        </arguments>
371                </element>
372                <element name="createFromGenotype" function="true" type="Creature">
373                        <description><![CDATA[uses the selected Genotype object]]></description>
374<arguments/></element>
375                <element name="createFromString" function="true" type="Creature">
376                        <description><![CDATA[uses the supplied string argument]]></description>
377                        <arguments>
378                                <argument name="genotype" type="string"/>
379                        </arguments>
380                </element>
381                <element name="delete" function="true" type="void">
382                        <description><![CDATA[delete creature]]></description>
383                        <arguments>
384                                <argument name="creature index" type="integer"/>
385                        </arguments>
386                </element>
387                <element name="findCreatureAt" function="true" type="Creature">
388                        <arguments>
389                                <argument name="point" type="Vector"/>
390                                <argument name="vector" type="Vector"/>
391                        </arguments>
392                </element>
393                <element name="findUID" function="true" type="integer">
394                        <arguments>
395                                <argument name="uid" type="string"/>
396                        </arguments>
397                </element>
398                <element name="get" function="true" type="Creature">
399                        <arguments>
400                                <argument name="index" type="integer"/>
401                        </arguments>
402                </element>
403                <element name="kill" function="true" type="void">
404                        <description><![CDATA[kill creature]]></description>
405                        <arguments>
406                                <argument name="creature index" type="integer"/>
407                        </arguments>
408                </element>
409                <element name="senseCreaturesProperty" function="true" type="float">
410                        <description><![CDATA[arguments:
411 - x,y,z (sensor position)
412 - property (name, name[index] or Class:id). name[index] can be used for Vector objects inside the user fields, eg "user2[10]"
413 - exclude (creature object)
414works like a smell sensor for a given property (for all creatures in this group except "exclude").
415The following function reproduces the "classic" framsticks "S" sensor:
416function smellReceptorValue(x,y,z,exclude)
417{
418var i,s=0; for(i=0;i<Populations.size;i++)
419        s+=Populations[0].senseCreaturesProperty(x,y,z,"energy",exclude);
420return s;
421}]]></description>
422                        <arguments>
423                                <argument name="x" type="float"/>
424                                <argument name="y" type="float"/>
425                                <argument name="z" type="float"/>
426                                <argument name="propertyname" type="string"/>
427                                <argument name="exclude" type="Creature"/>
428                        </arguments>
429                </element>
430        </type>
431        <type name="CreatureSignals" context="Global context">
432<description><![CDATA[Signal sources associated with the creature. See also: Signal, WorldSignals, NeuroSignals]]></description>
433                <element name="size" type="integer">
434                        <description><![CDATA[Number of signals in this set]]></description>
435                </element>
436                <element name="add" function="true" type="Signal">
437                        <description><![CDATA[Create a new signal]]></description>
438                        <arguments>
439                                <argument name="channel" type="string"/>
440                        </arguments>
441                </element>
442                <element name="addProperty" function="true" type="Signal">
443                        <description><![CDATA[Create a signal that automatically reflects one of the creature's properties (i.e. its power is equal to the property value).
444Example:
445Creature.signals.addProperty("energy","energy"); //then, Neuro.signals.receive("energy") in custom neuron would work similarly to the built-in smell sensor]]></description>
446                        <arguments>
447                                <argument name="channel" type="string"/>
448                                <argument name="property" type="untyped"/>
449                        </arguments>
450                </element>
451                <element name="clear" function="true" type="void">
452                        <description><![CDATA[Delete all signals]]></description>
453<arguments/></element>
454                <element name="get" function="true" type="Signal">
455                        <description><![CDATA[Access individual signals (index=0 .. size-1)]]></description>
456                        <arguments>
457                                <argument name="index" type="integer"/>
458                        </arguments>
459                </element>
460                <element name="receive" function="true" type="float">
461                        <description><![CDATA[Receive the aggregated signal power in a given channel.]]></description>
462                        <arguments>
463                                <argument name="channel" type="string"/>
464                        </arguments>
465                </element>
466                <element name="receiveFilter" function="true" type="float">
467                        <description><![CDATA[Receive the aggregated signal power in a given channel.
468
469Additional filtering options:
470- Max distance only receives the neighbor signals (based on their physical location)
471- Flavor filtering: only signals having the flavor close to the specified one will be received. The filter value is the maximum allowed difference.]]></description>
472                        <arguments>
473                                <argument name="channel" type="string"/>
474                                <argument name="max distance" type="float"/>
475                                <argument name="flavor" type="float"/>
476                                <argument name="filter" type="float"/>
477                        </arguments>
478                </element>
479                <element name="receiveSet" function="true" type="Vector">
480                        <description><![CDATA[Get all signals in the specified range. Returns a readonly vector object containing Signal objects (individual signals can be accessed as result[0], .., result[result.size-1]).]]></description>
481                        <arguments>
482                                <argument name="channel" type="string"/>
483                                <argument name="max distance" type="float"/>
484                        </arguments>
485                </element>
486                <element name="receiveSingle" function="true" type="Signal">
487                        <description><![CDATA[Find the signal source having the highest signal power (including the distance)]]></description>
488                        <arguments>
489                                <argument name="channel" type="string"/>
490                                <argument name="max distance" type="float"/>
491                        </arguments>
492                </element>
493        </type>
494        <type name="Dictionary" context="Global context">
495<description><![CDATA[Dictionary associates stored values with string keys ("key" is the first argument in get/set/remove functions). Integer "key" can be used to enumerate all elements.
496Example: var d=Dictionary.new(); d.set("name","John"); d.set("age",44);
497var i,element; for(i=0;i<d.size;i++) element=d.get(i);]]></description>
498                <element name="size" type="integer"/>
499                <element name="toString" type="string"/>
500                <element name="clear" function="true" type="void"><arguments/></element>
501                <element name="find" function="true" type="string">
502                        <description><![CDATA[returns the element key or null if not found]]></description>
503                        <arguments>
504                                <argument name="value" type="untyped"/>
505                        </arguments>
506                </element>
507                <element name="get" function="true" type="untyped">
508                        <arguments>
509                                <argument name="key" type="untyped"/>
510                        </arguments>
511                </element>
512                <element name="new" function="true" type="Dictionary"><arguments/></element>
513                <element name="remove" function="true" type="void">
514                        <arguments>
515                                <argument name="key" type="untyped"/>
516                        </arguments>
517                </element>
518                <element name="set" function="true" type="void">
519                        <arguments>
520                                <argument name="key" type="untyped"/>
521                                <argument name="value" type="untyped"/>
522                        </arguments>
523                </element>
524        </type>
525        <type name="File" context="Global context">
526<description><![CDATA[Provides read/write access to the filesystem. Used in the experiment definition to save the experiment state (onExpSave). Other (general purpose) use of this class is rather limited. Files are created in the "scripts_output" subdirectory of the directory where the Framsticks executable is located.]]></description>
527                <element name="EOF" type="integer" min="0" max="1"/>
528                <element name="info" type="string"/>
529                <element name="name" type="string"/>
530                <element name="path" type="string"/>
531                <element name="pathseparator" type="string"/>
532                <element name="append" function="true" type="File ">
533                        <arguments>
534                                <argument name="filename" type="string"/>
535                                <argument name="description" type="string"/>
536                        </arguments>
537                </element>
538                <element name="appendDirect" function="true" type="File ">
539                        <arguments>
540                                <argument name="filename" type="string"/>
541                                <argument name="description" type="string"/>
542                        </arguments>
543                </element>
544                <element name="close" function="true" type="string">
545                        <description><![CDATA[returns file contents if it has been buffered]]></description>
546<arguments/></element>
547                <element name="create" function="true" type="File">
548                        <arguments>
549                                <argument name="filename" type="string"/>
550                                <argument name="description" type="string"/>
551                        </arguments>
552                </element>
553                <element name="createDirect" function="true" type="File">
554                        <arguments>
555                                <argument name="filename" type="string"/>
556                                <argument name="description" type="string"/>
557                        </arguments>
558                </element>
559                <element name="exists" function="true" type="integer" min="0" max="1">
560                        <description><![CDATA[Sample:
561File.exists("default.sim") -> return 0 or 1]]></description>
562<arguments/></element>
563                <element name="flush" function="true" type="void">
564                        <description><![CDATA[useful for unbuffered disk files only (openDirect, appendDirect)]]></description>
565<arguments/></element>
566                <element name="new" function="true" type="File "><arguments/></element>
567                <element name="newFromString" function="true" type="File ">
568                        <arguments>
569                                <argument name="text" type="string"/>
570                        </arguments>
571                </element>
572                <element name="open" function="true" type="File ">
573                        <arguments>
574                                <argument name="filename" type="string"/>
575                        </arguments>
576                </element>
577                <element name="readLine" function="true" type="string"><arguments/></element>
578                <element name="readObject" function="true" type="void">
579                        <arguments>
580                                <argument type="Object"/>
581                        </arguments>
582                </element>
583                <element name="readUntilEOF" function="true" type="string"><arguments/></element>
584                <element name="writeComment" function="true" type="void">
585                        <arguments>
586                                <argument name="anything" type="string"/>
587                        </arguments>
588                </element>
589                <element name="writeNameObject" function="true" type="void">
590                        <arguments>
591                                <argument name="name" type="string"/>
592                                <argument type="Object"/>
593                        </arguments>
594                </element>
595                <element name="writeObject" function="true" type="void">
596                        <arguments>
597                                <argument type="Object"/>
598                        </arguments>
599                </element>
600                <element name="writeObjectBegin" function="true" type="void">
601                        <arguments>
602                                <argument type="Object"/>
603                        </arguments>
604                </element>
605                <element name="writeObjectEnd" function="true" type="void"><arguments/></element>
606                <element name="writeObjectField" function="true" type="void">
607                        <arguments>
608                                <argument type="Object"/>
609                                <argument name="field index or name" type="untyped"/>
610                        </arguments>
611                </element>
612                <element name="writeObjectFieldForce" function="true" type="void">
613                        <arguments>
614                                <argument type="Object"/>
615                                <argument name="field index or name" type="untyped"/>
616                        </arguments>
617                </element>
618                <element name="writeObjectFields" function="true" type="void">
619                        <arguments>
620                                <argument type="Object"/>
621                        </arguments>
622                </element>
623                <element name="writeObjectFieldsForce" function="true" type="void">
624                        <arguments>
625                                <argument type="Object"/>
626                        </arguments>
627                </element>
628                <element name="writeString" function="true" type="void">
629                        <arguments>
630                                <argument name="anything" type="untyped"/>
631                        </arguments>
632                </element>
633        </type>
634        <type name="GenePool" context="Global context">
635<description><![CDATA[The static GenePool object refers to the "selected group" as described in GenePools]]></description>
636                <element name="fitfun" type="integer" min="0" max="1" default="0">
637                        <description><![CDATA[Enable fitness scaling]]></description>
638                </element>
639                <element name="fitm" type="float" min="0" max="10" default="2">
640                        <description><![CDATA[Lower threshold: how many standard deviations below average?
641(avg - n * stddev) - used for fitness shifting]]></description>
642                </element>
643                <element name="fitma" type="float" min="1" max="10" default="2">
644                        <description><![CDATA[The best genotype is as many times
645better than the average one]]></description>
646                </element>
647                <element name="fitness" type="string">
648                        <description><![CDATA[(intended for advanced users)]]></description>
649                </element>
650                <element name="index" type="integer"/>
651                <element name="name" type="string"/>
652                <element name="size" type="integer">
653                        <description><![CDATA[In standard.expdef, this is equivalent to the number of unique genotypes. Standard experiment definition uses the Genotype.popsiz field to indicate that some genotypes exist in multiple instances despite having only one item in the group. Other experiment definitions may create multiple copies of the same genotype.]]></description>
654                </element>
655                <element name="totalpop" type="integer">
656                        <description><![CDATA[Takes into account the Genotype.popsiz field (which may give the total number of instances depending on the experiment definition)]]></description>
657                </element>
658                <element name="addGeno" function="true" type="Genotype">
659                        <description><![CDATA[create new Genotype from the supplied Geno object.
660returns the created Genotype.]]></description>
661                        <arguments>
662                                <argument type="Geno"/>
663                        </arguments>
664                </element>
665                <element name="delete" function="true" type="void">
666                        <description><![CDATA[delete genotype]]></description>
667                        <arguments>
668                                <argument name="genotype index" type="integer"/>
669                        </arguments>
670                </element>
671                <element name="findGeno" function="true" type="integer">
672                        <description><![CDATA[find Genotype matching the supplied Geno object.
673returns genotype index or -1 if not found]]></description>
674                        <arguments>
675                                <argument type="Geno"/>
676                        </arguments>
677                </element>
678                <element name="findUID" function="true" type="integer">
679                        <arguments>
680                                <argument name="uid" type="string"/>
681                        </arguments>
682                </element>
683                <element name="get" function="true" type="Genotype">
684                        <arguments>
685                                <argument name="index" type="integer"/>
686                        </arguments>
687                </element>
688        </type>
689        <type name="GenePools" context="Global context">
690<description><![CDATA[Manages all genotypes in the experiment, organized in one or more groups. Some functions refer to the "selected genotype" i.e. the genotype number "GenePools.genotype" in the pool number "GenePools.group". For example to access the first genoype in the first group you could do:
691GenePools.group=0; GenePools.genotype=0; var name=Genotype.name;
692However, the preferred way doesn't refer to the static Genotype object:
693 var name=GenePools[0][0].name;
694
695Apart from the Genotypes in the group, there is also one temporary Genotype object used by genetic operators and some functions from GenePools. Genotype points to that object when "GenePools.genotype"=-1. The following code accesses that object before adding it to the genotype group:
696GenePools.newGenotype("X");
697 //makes the temporary object from the "X" genotype, GenePools.genotype is now -1
698GenePools.mutateSelected();
699 //the temporary object is mutated
700Genotype.info="my favorite genotype";
701 //modify the temporary object
702GenePools.copySelected(0);
703 //copy the current, i.e. temporary genotype to the genotype group #0]]></description>
704                <element name="genotype" type="integer">
705                        <description><![CDATA[index of the currently selected genotype or -1 if no genotype is selected]]></description>
706                </element>
707                <element name="group" type="integer">
708                        <description><![CDATA[index of the currently selected group (gene pool)]]></description>
709                </element>
710                <element name="size" type="integer"/>
711                <element name="addGroup" function="true" type="void">
712                        <description><![CDATA[add genotype group]]></description>
713                        <arguments>
714                                <argument name="name" type="string"/>
715                        </arguments>
716                </element>
717                <element name="addPerformanceFromCreature" function="true" type="void">
718                        <description><![CDATA[Updates the current Genotype's performance values merging them with the current Creture's performance. It assumes the Genotype.popsiz has a reasonable value and performs the proper weighting. Use your own function instead if these conditions are not met in your experiment.]]></description>
719<arguments/></element>
720                <element name="clear" function="true" type="void">
721                        <description><![CDATA[remove all groups except the first one]]></description>
722<arguments/></element>
723                <element name="clearGroup" function="true" type="void">
724                        <arguments>
725                                <argument name="index" type="integer"/>
726                        </arguments>
727                </element>
728                <element name="copySelected" function="true" type="void">
729                        <description><![CDATA[copy selected genotype to another group]]></description>
730                        <arguments>
731                                <argument name="groupindex" type="integer"/>
732                        </arguments>
733                </element>
734                <element name="crossoverSelected" function="true" type="void">
735                        <description><![CDATA[Crossover selected genotype with another one (from the genotype group). The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected.]]></description>
736                        <arguments>
737                                <argument name="other index" type="integer"/>
738                        </arguments>
739                </element>
740                <element name="deleteGroup" function="true" type="void">
741                        <description><![CDATA[remove genotype group]]></description>
742                        <arguments>
743                                <argument name="index" type="integer"/>
744                        </arguments>
745                </element>
746                <element name="deleteOne" function="true" type="void">
747                        <description><![CDATA[delete one individual from the gene pool = decrease popsiz and delete the genotype if the popsiz goes to 0]]></description>
748                        <arguments>
749                                <argument name="genotype index" type="integer"/>
750                        </arguments>
751                </element>
752                <element name="deleteSelected" function="true" type="void">
753                        <description><![CDATA[delete selected genotype from the gene pool (uses the selected genotype object)]]></description>
754<arguments/></element>
755                <element name="findGenotype" function="true" type="integer">
756                        <description><![CDATA[find a genotype matching the current genotype. It only makes sense when the current genotype is a result of the genetic operator.]]></description>
757<arguments/></element>
758                <element name="findGenotypeForCreature" function="true" type="integer">
759                        <description><![CDATA[find a genotype matching the selected creature]]></description>
760<arguments/></element>
761                <element name="get" function="true" type="GenePool">
762                        <arguments>
763                                <argument name="index" type="integer"/>
764                        </arguments>
765                </element>
766                <element name="getFromCreature" function="true" type="void">
767                        <description><![CDATA[Copy a genotype from the selected creature. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
768<arguments/></element>
769                <element name="getFromCreatureObject" function="true" type="void">
770                        <description><![CDATA[Copy a genotype from the creature object passed in argument. The resulting genotype is stored in the static Genotype object detached from the genotype group.]]></description>
771                        <arguments>
772                                <argument type="Creature"/>
773                        </arguments>
774                </element>
775                <element name="likeThisRoulette" function="true" type="integer">
776                        <description><![CDATA[get random genotype similar to the selected one, fitness proportional]]></description>
777                        <arguments>
778                                <argument name="minimum similarity" type="float"/>
779                        </arguments>
780                </element>
781                <element name="mutateSelected" function="true" type="void">
782                        <description><![CDATA[Mutate selected genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected.]]></description>
783<arguments/></element>
784                <element name="newGenotype" function="true" type="void">
785                        <description><![CDATA[Make the new genotype from the supplied string and select the genotype. The resulting genotype is stored in the static Genotype object detached from the genotype group. After calling this function GenePools.genotype is -1 indicating that no genotype from the group is selected. (call "copySelected" if you want to add this gentype to the genotype group)]]></description>
786                        <arguments>
787                                <argument name="genotype" type="string"/>
788                        </arguments>
789                </element>
790                <element name="random" function="true" type="integer">
791                        <description><![CDATA[get random genotype]]></description>
792<arguments/></element>
793                <element name="randomLikeThis" function="true" type="integer">
794                        <description><![CDATA[get random genotype similar to the selected one]]></description>
795                        <arguments>
796                                <argument name="minimum similarity" type="float"/>
797                        </arguments>
798                </element>
799                <element name="revroulette" function="true" type="integer">
800                        <description><![CDATA[get reverse fitness proportional genotype]]></description>
801<arguments/></element>
802                <element name="roulette" function="true" type="integer">
803                        <description><![CDATA[get fitness proportional genotype]]></description>
804<arguments/></element>
805                <element name="tournament" function="true" type="integer">
806                        <description><![CDATA[get tournament winner genotype]]></description>
807                        <arguments>
808                                <argument name="genotypes in tournament" type="integer"/>
809                        </arguments>
810                </element>
811                <element name="worst" function="true" type="integer">
812                        <description><![CDATA[get worst genotype]]></description>
813<arguments/></element>
814        </type>
815        <type name="GenMan" context="Global context">
816<description><![CDATA[Manages various genetic operations, using appropriate operators for the argument genotype format.]]></description>
817                <element name="changedProperty" type="integer"/>
818                <element name="changedPropertyId" type="string"/>
819                <element name="f0_c_del" type="float" min="0" max="100" default="5">
820                        <description><![CDATA[]]></description>
821                </element>
822                <element name="f0_c_new" type="float" min="0" max="100" default="5">
823                        <description><![CDATA[]]></description>
824                </element>
825                <element name="f0_c_wei" type="float" min="0" max="100" default="10">
826                        <description><![CDATA[]]></description>
827                </element>
828                <element name="f0_j_del" type="float" min="0" max="100" default="5">
829                        <description><![CDATA[]]></description>
830                </element>
831                <element name="f0_j_new" type="float" min="0" max="100" default="5">
832                        <description><![CDATA[]]></description>
833                </element>
834                <element name="f0_j_rsf" type="float" min="0" max="100" default="10">
835                        <description><![CDATA[]]></description>
836                </element>
837                <element name="f0_j_stf" type="float" min="0" max="100" default="10">
838                        <description><![CDATA[]]></description>
839                </element>
840                <element name="f0_j_stm" type="float" min="0" max="100" default="10">
841                        <description><![CDATA[]]></description>
842                </element>
843                <element name="f0_n_del" type="float" min="0" max="100" default="5">
844                        <description><![CDATA[]]></description>
845                </element>
846                <element name="f0_n_new" type="float" min="0" max="100" default="5">
847                        <description><![CDATA[]]></description>
848                </element>
849                <element name="f0_n_prp" type="float" min="0" max="100" default="10">
850                        <description><![CDATA[]]></description>
851                </element>
852                <element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
853                        <description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
854Mutations will not delete such elements.
855The i="mi=dm" combination is allowed.]]></description>
856                </element>
857                <element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
858                        <description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
859Mutations will not modify properties of such elements.
860The i="mi=md" combination is allowed.]]></description>
861                </element>
862                <element name="f0_p_asm" type="float" min="0" max="100" default="10">
863                        <description><![CDATA[]]></description>
864                </element>
865                <element name="f0_p_del" type="float" min="0" max="100" default="5">
866                        <description><![CDATA[]]></description>
867                </element>
868                <element name="f0_p_frc" type="float" min="0" max="100" default="10">
869                        <description><![CDATA[]]></description>
870                </element>
871                <element name="f0_p_ing" type="float" min="0" max="100" default="10">
872                        <description><![CDATA[]]></description>
873                </element>
874                <element name="f0_p_mas" type="float" min="0" max="100" default="10">
875                        <description><![CDATA[]]></description>
876                </element>
877                <element name="f0_p_new" type="float" min="0" max="100" default="5">
878                        <description><![CDATA[]]></description>
879                </element>
880                <element name="f0_p_pos" type="float" min="0" max="100" default="10">
881                        <description><![CDATA[]]></description>
882                </element>
883                <element name="f0_p_swp" type="float" min="0" max="100" default="10">
884                        <description><![CDATA[]]></description>
885                </element>
886                <element name="f0Fuzzy_maxRules" type="integer" min="0" max="999">
887                        <description><![CDATA[Maximum number of fuzzy rules]]></description>
888                </element>
889                <element name="f0Fuzzy_maxSets" type="integer" min="0" max="999">
890                        <description><![CDATA[Maximum number of fuzzy sets]]></description>
891                </element>
892                <element name="f0Fuzzy_prob0" type="float" min="0" max="1">
893                        <description><![CDATA[Probability of adding new fuzzy set with simple rule, which uses this set (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
894                </element>
895                <element name="f0Fuzzy_prob1" type="float" min="0" max="1">
896                        <description><![CDATA[Probability of removing fuzzy set (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
897                </element>
898                <element name="f0Fuzzy_prob2" type="float" min="0" max="1">
899                        <description><![CDATA[Probability of adding new rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
900                </element>
901                <element name="f0Fuzzy_prob3" type="float" min="0" max="1">
902                        <description><![CDATA[Probability of removing rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
903                </element>
904                <element name="f0Fuzzy_prob4" type="float" min="0" max="1">
905                        <description><![CDATA[Probability of adding new input or output to exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
906                </element>
907                <element name="f0Fuzzy_prob5" type="float" min="0" max="1">
908                        <description><![CDATA[Probability of removing input or output from exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
909                </element>
910                <element name="f1_mut_exmod" type="string">
911                        <description><![CDATA[Modifiers that will not be added nor deleted during mutation
912(all: RrLlAaCcFfMmSsIiQqWwEe)]]></description>
913                </element>
914                <element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
915                        <description><![CDATA[]]></description>
916                </element>
917                <element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
918                        <description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
919                </element>
920                <element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
921                        <description><![CDATA[]]></description>
922                </element>
923                <element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
924                <element name="f1_nmWei" type="float" min="0" max="100" default="1"/>
925                <element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
926                <element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
927                <element name="f1_smModif" type="float" min="0" max="100" default="0.1">
928                        <description><![CDATA[Modifiers: RrLlAaCcFfMmSsIiQqWwEe]]></description>
929                </element>
930                <element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
931                <element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
932                        <description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
933
934f1 uses a two-point crossing over.
935If this option is turned on, cut points will be selected proportionally to neural genes.
936Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
937                </element>
938                <element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
939                        <description><![CDATA[]]></description>
940                </element>
941                <element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
942                        <description><![CDATA[]]></description>
943                </element>
944                <element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
945                        <description><![CDATA[]]></description>
946                </element>
947                <element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
948                        <description><![CDATA[]]></description>
949                </element>
950                <element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
951                        <description><![CDATA[]]></description>
952                </element>
953                <element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
954                        <description><![CDATA[]]></description>
955                </element>
956                <element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
957                        <description><![CDATA[]]></description>
958                </element>
959                <element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
960                        <description><![CDATA[]]></description>
961                </element>
962                <element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
963                        <description><![CDATA[]]></description>
964                </element>
965                <element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
966                        <description><![CDATA[]]></description>
967                </element>
968                <element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
969                        <description><![CDATA[]]></description>
970                </element>
971                <element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
972                        <description><![CDATA[]]></description>
973                </element>
974                <element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
975                        <description><![CDATA[]]></description>
976                </element>
977                <element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
978                        <description><![CDATA[]]></description>
979                </element>
980                <element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
981                        <description><![CDATA[]]></description>
982                </element>
983                <element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
984                        <description><![CDATA[]]></description>
985                </element>
986                <element name="f4_mut_add" type="float" min="0" max="100" default="50">
987                        <description><![CDATA[mutation: probability of adding a node]]></description>
988                </element>
989                <element name="f4_mut_add_conn" type="float" min="0" max="100" default="15">
990                        <description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
991                </element>
992                <element name="f4_mut_add_div" type="float" min="0" max="100" default="20">
993                        <description><![CDATA[add node mutation: probability of adding a division]]></description>
994                </element>
995                <element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5">
996                        <description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
997                </element>
998                <element name="f4_mut_add_rep" type="float" min="0" max="100" default="10">
999                        <description><![CDATA[add node mutation: probability of adding a repetition]]></description>
1000                </element>
1001                <element name="f4_mut_add_simp" type="float" min="0" max="100" default="50">
1002                        <description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
1003                </element>
1004                <element name="f4_mut_del" type="float" min="0" max="100" default="20">
1005                        <description><![CDATA[mutation: probability of deleting a node]]></description>
1006                </element>
1007                <element name="f4_mut_mod" type="float" min="0" max="100" default="30">
1008                        <description><![CDATA[mutation: probability of changing a node]]></description>
1009                </element>
1010                <element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
1011                        <description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
1012                </element>
1013                <element name="gen_hilite" type="integer" min="0" max="1" default="1">
1014                        <description><![CDATA[Use colors for genes?
1015(slows down viewing/editing of huge genotypes)]]></description>
1016                </element>
1017                <element name="gen_hist" type="integer" min="0" max="1" default="0">
1018                        <description><![CDATA[Required for phylogenetic analysis]]></description>
1019                </element>
1020                <element name="genoper_f0" type="integer" min="0" max="1">
1021                        <description><![CDATA[]]></description>
1022                </element>
1023                <element name="genoper_f1" type="integer" min="0" max="0">
1024                        <description><![CDATA[]]></description>
1025                </element>
1026                <element name="genoper_f2" type="integer" min="0" max="0">
1027                        <description><![CDATA[]]></description>
1028                </element>
1029                <element name="genoper_f3" type="integer" min="0" max="0">
1030                        <description><![CDATA[]]></description>
1031                </element>
1032                <element name="genoper_f4" type="integer" min="0" max="0">
1033                        <description><![CDATA[]]></description>
1034                </element>
1035                <element name="neuadd_N" type="integer" min="0" max="1">
1036                        <description><![CDATA[Standard neuron
1037
1038Characteristics:
1039   supports any number of inputs
1040   provides output value
1041   does not require location in body
1042
1043
1044Properties:
1045   Inertia (in) float 0..1
1046   Force (fo) float 0..999
1047   Sigmoid (si) float -99999..99999
1048   State (s) float -1..1]]></description>
1049                </element>
1050                <element name="neuadd_Nu" type="integer" min="0" max="1">
1051                        <description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
1052Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
1053
1054Characteristics:
1055   supports any number of inputs
1056   provides output value
1057   does not require location in body
1058
1059
1060Properties:
1061   Inertia (in) float 0..1
1062   Force (fo) float 0..999
1063   Sigmoid (si) float -99999..99999
1064   State (s) float -1..1]]></description>
1065                </element>
1066                <element name="neuadd_G" type="integer" min="0" max="1">
1067                        <description><![CDATA[Equilibrium sensor.
10680=the stick is horizontal
1069+1/-1=the stick is vertical
1070
1071Characteristics:
1072   does not use inputs
1073   provides output value
1074   should be located on a Joint
1075]]></description>
1076                </element>
1077                <element name="neuadd_T" type="integer" min="0" max="1">
1078                        <description><![CDATA[Touch sensor.
1079-1=no contact
10800=just touching
1081>0=pressing, value depends on the force applied
1082
1083Characteristics:
1084   does not use inputs
1085   provides output value
1086   should be located on a Part
1087
1088
1089Properties:
1090   Range (r) float 0..1]]></description>
1091                </element>
1092                <element name="neuadd_S" type="integer" min="0" max="1">
1093                        <description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
1094Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
1095
1096Characteristics:
1097   does not use inputs
1098   provides output value
1099   should be located on a Part
1100]]></description>
1101                </element>
1102                <element name="neuadd_*" type="integer" min="0" max="1">
1103                        <description><![CDATA[Constant value
1104
1105Characteristics:
1106   does not use inputs
1107   provides output value
1108   does not require location in body
1109]]></description>
1110                </element>
1111                <element name="neuadd_|" type="integer" min="0" max="1">
1112                        <description><![CDATA[Characteristics:
1113   uses single input
1114   does not provide output value
1115   should be located on a Joint
1116
1117
1118Properties:
1119   power (p) float 0.01..1
1120   bending range (r) float 0..1]]></description>
1121                </element>
1122                <element name="neuadd_@" type="integer" min="0" max="1">
1123                        <description><![CDATA[Characteristics:
1124   uses single input
1125   does not provide output value
1126   should be located on a Joint
1127
1128
1129Properties:
1130   power (p) float 0.01..1]]></description>
1131                </element>
1132                <element name="neuadd_D" type="integer" min="0" max="1">
1133                        <description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
1134
1135Characteristics:
1136   supports any number of inputs
1137   provides output value
1138   does not require location in body
1139]]></description>
1140                </element>
1141                <element name="neuadd_Fuzzy" type="integer" min="0" max="1">
1142                        <description><![CDATA[Refer to publications to learn about this neuron
1143
1144Characteristics:
1145   supports any number of inputs
1146   provides output value
1147   does not require location in body
1148
1149
1150Properties:
1151   number of fuzzy sets (ns) integer
1152   number of rules (nr) integer
1153   fuzzy sets (fs) string
1154   fuzzy rules (fr) string]]></description>
1155                </element>
1156                <element name="neuadd_VEye" type="integer" min="0" max="1">
1157                        <description><![CDATA[Characteristics:
1158   uses single input
1159   provides output value
1160   should be located on a Part
1161
1162
1163Properties:
1164   target.x (tx) float
1165   target.y (ty) float
1166   target.z (tz) float
1167   target shape (ts) string
1168   perspective (p) float 0.1..10
1169   scale (s) float 0.1..100
1170   show hidden lines (h) integer 0..1
1171   output lines count (each line needs four channels) (o) integer 0..99
1172   debug (d) integer 0..1]]></description>
1173                </element>
1174                <element name="neuadd_VMotor" type="integer" min="0" max="1">
1175                        <description><![CDATA[Must be connected to the VEye and properly set up.
1176
1177Characteristics:
1178   supports any number of inputs
1179   provides output value
1180   does not require location in body
1181
1182
1183Properties:
1184   number of basic features (noIF) integer
1185   number of degrees of freedom (noDim) integer
1186   parameters (params) string]]></description>
1187                </element>
1188                <element name="neuadd_Sti" type="integer" min="0" max="1">
1189                        <description><![CDATA[Characteristics:
1190   uses single input
1191   does not provide output value
1192   should be located on a Part
1193]]></description>
1194                </element>
1195                <element name="neuadd_LMu" type="integer" min="0" max="1">
1196                        <description><![CDATA[Characteristics:
1197   uses single input
1198   does not provide output value
1199   should be located on a Joint
1200
1201
1202Properties:
1203   power (p) float 0.01..1]]></description>
1204                </element>
1205                <element name="neuadd_Water" type="integer" min="0" max="1">
1206                        <description><![CDATA[Output signal:
12070=on or above water surface
12081=under water (deeper than 1)
12090..1=in the transient area just below water surface
1210
1211Characteristics:
1212   does not use inputs
1213   provides output value
1214   should be located on a Part
1215]]></description>
1216                </element>
1217                <element name="neuadd_Energy" type="integer" min="0" max="1">
1218                        <description><![CDATA[The current energy level divided by the initial energy level.
1219Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
1220
1221Characteristics:
1222   does not use inputs
1223   provides output value
1224   does not require location in body
1225]]></description>
1226                </element>
1227                <element name="neuadd_Ch" type="integer" min="0" max="1">
1228                        <description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
1229
1230Characteristics:
1231   supports any number of inputs
1232   provides output value
1233   does not require location in body
1234]]></description>
1235                </element>
1236                <element name="neuadd_ChMux" type="integer" min="0" max="1">
1237                        <description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
1238
1239Characteristics:
1240   uses 2 inputs
1241   provides output value
1242   does not require location in body
1243]]></description>
1244                </element>
1245                <element name="neuadd_ChSel" type="integer" min="0" max="1">
1246                        <description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
1247
1248Characteristics:
1249   uses single input
1250   provides output value
1251   does not require location in body
1252
1253
1254Properties:
1255   channel (ch) integer]]></description>
1256                </element>
1257                <element name="neuadd_Rnd" type="integer" min="0" max="1">
1258                        <description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
1259
1260Characteristics:
1261   does not use inputs
1262   provides output value
1263   does not require location in body
1264]]></description>
1265                </element>
1266                <element name="neuadd_Sin" type="integer" min="0" max="1">
1267                        <description><![CDATA[Output frequency = f0+input
1268
1269Characteristics:
1270   uses single input
1271   provides output value
1272   does not require location in body
1273
1274
1275Properties:
1276   base frequency (f0) float -1..1
1277   time (t) float 0..6.28319]]></description>
1278                </element>
1279                <element name="add" function="true"/>
1280                <element name="addGroup" function="true"/>
1281                <element name="clear" function="true"/>
1282                <element name="crossOver" function="true" type="Geno">
1283                        <description><![CDATA[returns crossed over genotype]]></description>
1284                        <arguments>
1285                                <argument type="Geno"/>
1286                                <argument type="Geno"/>
1287                        </arguments>
1288                </element>
1289                <element name="getSimplest" function="true" type="Geno">
1290                        <description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
1291                        <arguments>
1292                                <argument name="format" type="integer"/>
1293                        </arguments>
1294                </element>
1295                <element name="mutate" function="true" type="Geno">
1296                        <description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
1297                        <arguments>
1298                                <argument type="Geno"/>
1299                        </arguments>
1300                </element>
1301                <element name="operReport" function="true" type="void">
1302                        <description><![CDATA[Show available genetic operators]]></description>
1303<arguments/></element>
1304                <element name="remove" function="true"/>
1305                <element name="removeGroup" function="true"/>
1306                <element name="toHTML" function="true" type="string">
1307                        <description><![CDATA[returns genotype expressed as colored HTML]]></description>
1308                        <arguments>
1309                                <argument type="string"/>
1310                        </arguments>
1311                </element>
1312                <element name="toHTMLshort" function="true" type="string">
1313                        <description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
1314                        <arguments>
1315                                <argument type="string"/>
1316                        </arguments>
1317                </element>
1318                <element name="validate" function="true" type="Geno">
1319                        <description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
1320                        <arguments>
1321                                <argument type="Geno"/>
1322                        </arguments>
1323                </element>
1324        </type>
1325        <type name="GenManStats" context="Global context">
1326<description><![CDATA[Statistics for genetic operations.]]></description>
1327                <element name="gen_count" type="integer">
1328                        <description><![CDATA[]]></description>
1329                </element>
1330                <element name="gen_mfailed" type="integer">
1331                        <description><![CDATA[couldn't be performed]]></description>
1332                </element>
1333                <element name="gen_minvalid" type="integer">
1334                        <description><![CDATA[couldn't be repaired]]></description>
1335                </element>
1336                <element name="gen_mutimpr" type="float">
1337                        <description><![CDATA[total cumulative mutation change]]></description>
1338                </element>
1339                <element name="gen_mvalid" type="integer">
1340                        <description><![CDATA[]]></description>
1341                </element>
1342                <element name="gen_mvalidated" type="integer">
1343                        <description><![CDATA[]]></description>
1344                </element>
1345                <element name="gen_xofailed" type="integer">
1346                        <description><![CDATA[couldn't be performed]]></description>
1347                </element>
1348                <element name="gen_xoimpr" type="float">
1349                        <description><![CDATA[total cumulative crossover change]]></description>
1350                </element>
1351                <element name="gen_xoinvalid" type="integer">
1352                        <description><![CDATA[couldn't be repaired]]></description>
1353                </element>
1354                <element name="gen_xovalid" type="integer">
1355                        <description><![CDATA[]]></description>
1356                </element>
1357                <element name="gen_xovalidated" type="integer">
1358                        <description><![CDATA[]]></description>
1359                </element>
1360                <element name="clrstats" function="true" type="void">
1361                        <description><![CDATA[]]></description>
1362<arguments/></element>
1363        </type>
1364        <type name="Geno" context="Global context">
1365<description><![CDATA[All information about a single genotype.
1366This is a genetics-only object which does not contain any performance data. See also: Genotype class]]></description>
1367                <element name="autoname" type="string"/>
1368                <element name="f0genotype" type="string">
1369                        <description><![CDATA[converted to f0 genotype]]></description>
1370                </element>
1371                <element name="format" type="integer">
1372                        <description><![CDATA[Genotype format]]></description>
1373                </element>
1374                <element name="genotype" type="string"/>
1375                <element name="info" type="string">
1376                        <description><![CDATA[Additional information or comments]]></description>
1377                </element>
1378                <element name="isValid" type="integer" min="0" max="1"/>
1379                <element name="name" type="string"/>
1380                <element name="rawgenotype" type="string">
1381                        <description><![CDATA[Genotype, excluding the format specifier]]></description>
1382                </element>
1383                <element name="getConverted" function="true" type="Geno">
1384                        <arguments>
1385                                <argument name="format" type="integer"/>
1386                        </arguments>
1387                </element>
1388                <element name="new" function="true" type="Geno"><arguments/></element>
1389                <element name="newFrom" function="true" type="Geno">
1390                        <arguments>
1391                                <argument name="genotype" type="string"/>
1392                                <argument name="format" type="integer"/>
1393                                <argument name="name" type="string"/>
1394                                <argument name="description" type="string"/>
1395                        </arguments>
1396                </element>
1397                <element name="newFromString" function="true" type="Geno">
1398                        <arguments>
1399                                <argument name="genotype" type="string"/>
1400                        </arguments>
1401                </element>
1402        </type>
1403        <type name="Genotype" context="Global context">
1404<description><![CDATA[A Genotype with the associated performance information. All but one Genotype objects are placed in Genotype Groups. There is also a single static Genotype object not associated with a group, which is used as a temporary storage by genetic operators and some functions from GenePools.]]></description>
1405                <element name="convtrace1" type="string"/>
1406                <element name="distance" type="float"/>
1407                <element name="energ0" type="float"/>
1408                <element name="f0genotype" type="string">
1409                        <description><![CDATA[converted to f0 genotype]]></description>
1410                </element>
1411                <element name="fit" type="float"/>
1412                <element name="fit2" type="float">
1413                        <description><![CDATA[Fitnes shifted by (avg-n*stddev)]]></description>
1414                </element>
1415                <element name="geno" type="Geno">
1416                        <description><![CDATA[Geno object for this Genotype]]></description>
1417                </element>
1418                <element name="genotype" type="string"/>
1419                <element name="gnum" type="integer"/>
1420                <element name="info" type="string">
1421                        <description><![CDATA[Additional information or comments]]></description>
1422                </element>
1423                <element name="instances" type="integer"/>
1424                <element name="isValid" type="integer" min="0" max="1"/>
1425                <element name="lifespan" type="float">
1426                        <description><![CDATA[Average life span]]></description>
1427                </element>
1428                <element name="name" type="string"/>
1429                <element name="nncon" type="float">
1430                        <description><![CDATA[(deprecated) old name for numconnections]]></description>
1431                </element>
1432                <element name="nnsiz" type="float">
1433                        <description><![CDATA[(deprecated) old name for numneurons]]></description>
1434                </element>
1435                <element name="num" type="integer"/>
1436                <element name="numconnections" type="float"/>
1437                <element name="numjoints" type="float"/>
1438                <element name="numneurons" type="float"/>
1439                <element name="numparts" type="float"/>
1440                <element name="popsiz" type="integer">
1441                        <description><![CDATA[(deprecated) old name for instances]]></description>
1442                </element>
1443                <element name="simi" type="float"/>
1444                <element name="strjoints" type="float">
1445                        <description><![CDATA[(deprecated) old name for numjoints]]></description>
1446                </element>
1447                <element name="strsiz" type="float">
1448                        <description><![CDATA[(deprecated) old name for numparts]]></description>
1449                </element>
1450                <element name="uid" type="string">
1451                        <description><![CDATA[Unique identifier]]></description>
1452                </element>
1453                <element name="user1" type="untyped"/>
1454                <element name="user2" type="untyped"/>
1455                <element name="user3" type="untyped"/>
1456                <element name="velocity" type="float">
1457                        <description><![CDATA[Average velocity]]></description>
1458                </element>
1459                <element name="vertpos" type="float"/>
1460                <element name="vertvel" type="float"/>
1461                <element name="getModel" function="true" type="Model"><arguments/></element>
1462                <element name="getNormalized" function="true" type="float">
1463                        <arguments>
1464                                <argument name="property name or index" type="untyped"/>
1465                        </arguments>
1466                </element>
1467                <element name="mutate" function="true" type="void"><arguments/></element>
1468        </type>
1469        <type name="GenotypeGroup" context="Global context">
1470<description><![CDATA[The static GenePool object refers to the "selected group" as described in GenePools]]></description>
1471                <element name="fitfun" type="integer" min="0" max="1" default="0">
1472                        <description><![CDATA[Enable fitness scaling]]></description>
1473                </element>
1474                <element name="fitm" type="float" min="0" max="10" default="2">
1475                        <description><![CDATA[Lower threshold: how many standard deviations below average?
1476(avg - n * stddev) - used for fitness shifting]]></description>
1477                </element>
1478                <element name="fitma" type="float" min="1" max="10" default="2">
1479                        <description><![CDATA[The best genotype is as many times
1480better than the average one]]></description>
1481                </element>
1482                <element name="fitness" type="string">
1483                        <description><![CDATA[(intended for advanced users)]]></description>
1484                </element>
1485                <element name="index" type="integer"/>
1486                <element name="name" type="string"/>
1487                <element name="size" type="integer">
1488                        <description><![CDATA[In standard.expdef, this is equivalent to the number of unique genotypes. Standard experiment definition uses the Genotype.popsiz field to indicate that some genotypes exist in multiple instances despite having only one item in the group. Other experiment definitions may create multiple copies of the same genotype.]]></description>
1489                </element>
1490                <element name="totalpop" type="integer">
1491                        <description><![CDATA[Takes into account the Genotype.popsiz field (which may give the total number of instances depending on the experiment definition)]]></description>
1492                </element>
1493                <element name="addGeno" function="true" type="Genotype">
1494                        <description><![CDATA[create new Genotype from the supplied Geno object.
1495returns the created Genotype.]]></description>
1496                        <arguments>
1497                                <argument type="Geno"/>
1498                        </arguments>
1499                </element>
1500                <element name="delete" function="true" type="void">
1501                        <description><![CDATA[delete genotype]]></description>
1502                        <arguments>
1503                                <argument name="genotype index" type="integer"/>
1504                        </arguments>
1505                </element>
1506                <element name="findGeno" function="true" type="integer">
1507                        <description><![CDATA[find Genotype matching the supplied Geno object.
1508returns genotype index or -1 if not found]]></description>
1509                        <arguments>
1510                                <argument type="Geno"/>
1511                        </arguments>
1512                </element>
1513                <element name="findUID" function="true" type="integer">
1514                        <arguments>
1515                                <argument name="uid" type="string"/>
1516                        </arguments>
1517                </element>
1518                <element name="get" function="true" type="Genotype">
1519                        <arguments>
1520                                <argument name="index" type="integer"/>
1521                        </arguments>
1522                </element>
1523        </type>
1524        <type name="Interface" context="Global context">
1525<description><![CDATA[Used to query for object member descriptions. Example:
1526var iface=Interface.makeFrom(someobject); var description="this object has "+iface.properties+" properties, first property is "+iface.getId(0);]]></description>
1527                <element name="groups" type="integer"/>
1528                <element name="name" type="string"/>
1529                <element name="properties" type="integer"/>
1530                <element name="findGroupId" function="true" type="integer">
1531                        <arguments>
1532                                <argument name="name" type="string"/>
1533                        </arguments>
1534                </element>
1535                <element name="findId" function="true" type="integer">
1536                        <arguments>
1537                                <argument name="name" type="string"/>
1538                        </arguments>
1539                </element>
1540                <element name="findIdInGroup" function="true" type="integer">
1541                        <arguments>
1542                                <argument name="name" type="string"/>
1543                                <argument name="group name or index" type="untyped"/>
1544                        </arguments>
1545                </element>
1546                <element name="get" function="true" type="untyped">
1547                        <arguments>
1548                                <argument name="index" type="integer"/>
1549                        </arguments>
1550                </element>
1551                <element name="getFlags" function="true" type="integer">
1552                        <arguments>
1553                                <argument name="index" type="integer"/>
1554                        </arguments>
1555                </element>
1556                <element name="getGroup" function="true" type="integer">
1557                        <arguments>
1558                                <argument name="index" type="integer"/>
1559                        </arguments>
1560                </element>
1561                <element name="getGroupName" function="true" type="string">
1562                        <arguments>
1563                                <argument name="index" type="integer"/>
1564                        </arguments>
1565                </element>
1566                <element name="getHelp" function="true" type="string">
1567                        <arguments>
1568                                <argument name="index" type="integer"/>
1569                        </arguments>
1570                </element>
1571                <element name="getId" function="true" type="string">
1572                        <arguments>
1573                                <argument name="index" type="integer"/>
1574                        </arguments>
1575                </element>
1576                <element name="getName" function="true" type="string">
1577                        <arguments>
1578                                <argument name="index" type="integer"/>
1579                        </arguments>
1580                </element>
1581                <element name="getType" function="true" type="string">
1582                        <arguments>
1583                                <argument name="index" type="integer"/>
1584                        </arguments>
1585                </element>
1586                <element name="invoke" function="true" type="void">
1587                        <arguments>
1588                                <argument name="function name or index" type="untyped"/>
1589                                <argument name="arguments" type="Vector"/>
1590                        </arguments>
1591                </element>
1592                <element name="makeFrom" function="true" type="Interface">
1593                        <arguments>
1594                                <argument type="Object"/>
1595                        </arguments>
1596                </element>
1597                <element name="set" function="true" type="void">
1598                        <arguments>
1599                                <argument name="index" type="integer"/>
1600                                <argument name="value" type="untyped"/>
1601                        </arguments>
1602                </element>
1603                <element name="setAllDefault" function="true" type="void"><arguments/></element>
1604                <element name="setDefault" function="true" type="void">
1605                        <arguments>
1606                                <argument name="index" type="integer"/>
1607                        </arguments>
1608                </element>
1609        </type>
1610        <type name="Joint" context="Global context">
1611                <element name="dx" type="float" min="-2" max="2" default="0"/>
1612                <element name="dy" type="float" min="-2" max="2" default="0"/>
1613                <element name="dz" type="float" min="-2" max="2" default="0"/>
1614                <element name="i" type="string"/>
1615                <element name="p1" type="integer" min="-1" max="999999" default="-1"/>
1616                <element name="p2" type="integer" min="-1" max="999999" default="-1"/>
1617                <element name="rotstif" type="float" min="0" max="1" default="1"/>
1618                <element name="rx" type="float"/>
1619                <element name="ry" type="float"/>
1620                <element name="rz" type="float"/>
1621                <element name="stam" type="float" min="0" max="1" default="0.25"/>
1622                <element name="stif" type="float" min="0" max="1" default="1"/>
1623                <element name="Vstyle" type="string"/>
1624        </type>
1625        <type name="Loader" context="Global context">
1626<description><![CDATA[Support for loading files in the Framsticks format. Used in the experiment definition to retrieve experiment state (see OnExpLoad function in standard.expdef). Registered objects (addClass) are handled automaticaly. Loader can call user functions defined by setBreakLabel.]]></description>
1627                <element name="AfterObject" type="integer"/>
1628                <element name="BeforeObject" type="integer"/>
1629                <element name="BeforeUnknown" type="integer"/>
1630                <element name="comment" type="string"/>
1631                <element name="currentObject" type="Object"/>
1632                <element name="firstComment" type="integer" min="0" max="1"/>
1633                <element name="objectName" type="string"/>
1634                <element name="OnComment" type="integer"/>
1635                <element name="OnError" type="integer"/>
1636                <element name="status" type="integer"/>
1637                <element name="abort" function="true" type="void"><arguments/></element>
1638                <element name="addClass" function="true" type="void">
1639                        <arguments>
1640                                <argument type="Object"/>
1641                        </arguments>
1642                </element>
1643                <element name="clearClasses" function="true" type="void"><arguments/></element>
1644                <element name="go" function="true" type="integer"><arguments/></element>
1645                <element name="loadObject" function="true" type="void"><arguments/></element>
1646                <element name="removeClass" function="true" type="void">
1647                        <arguments>
1648                                <argument type="Object"/>
1649                        </arguments>
1650                </element>
1651                <element name="run" function="true" type="integer"><arguments/></element>
1652                <element name="setBreak" function="true" type="void">
1653                        <arguments>
1654                                <argument name="break conditions" type="integer"/>
1655                        </arguments>
1656                </element>
1657                <element name="setBreakLabel" function="true" type="void">
1658                        <arguments>
1659                                <argument name="break condition" type="integer"/>
1660                                <argument name="label" type="string"/>
1661                        </arguments>
1662                </element>
1663                <element name="skipObject" function="true" type="void"><arguments/></element>
1664        </type>
1665        <type name="Math" context="Global context">
1666<description><![CDATA[Mathematical functions library.]]></description>
1667                <element name="pi" type="float"/>
1668                <element name="pi2" type="float"/>
1669                <element name="pi4" type="float"/>
1670                <element name="rnd01" type="float"/>
1671                <element name="rndGaussStd" type="float"/>
1672                <element name="seed" type="integer">
1673                        <description><![CDATA[Random number generator seed.
1674Note: Math.seed influences all future random activity in the simulator, not only Math.rnd01 results.]]></description>
1675                </element>
1676                <element name="time" type="float">
1677                        <description><![CDATA[Number of seconds since the Epoch (00:00:00 UTC/GMT, January 1, 1970)]]></description>
1678                </element>
1679                <element name="twopi" type="float"/>
1680                <element name="abs" function="true" type="float">
1681                        <arguments>
1682                                <argument type="float"/>
1683                        </arguments>
1684                </element>
1685                <element name="acos" function="true" type="float">
1686                        <arguments>
1687                                <argument type="float"/>
1688                        </arguments>
1689                </element>
1690                <element name="asin" function="true" type="float">
1691                        <arguments>
1692                                <argument type="float"/>
1693                        </arguments>
1694                </element>
1695                <element name="atan" function="true" type="float">
1696                        <arguments>
1697                                <argument type="float"/>
1698                        </arguments>
1699                </element>
1700                <element name="atan2" function="true" type="float">
1701                        <arguments>
1702                                <argument name="y" type="float"/>
1703                                <argument name="x" type="float"/>
1704                        </arguments>
1705                </element>
1706                <element name="cos" function="true" type="float">
1707                        <arguments>
1708                                <argument type="float"/>
1709                        </arguments>
1710                </element>
1711                <element name="exp" function="true" type="float">
1712                        <arguments>
1713                                <argument type="float"/>
1714                        </arguments>
1715                </element>
1716                <element name="log" function="true" type="float">
1717                        <arguments>
1718                                <argument type="float"/>
1719                        </arguments>
1720                </element>
1721                <element name="max" function="true" type="untyped">
1722                        <arguments>
1723                                <argument type="untyped"/>
1724                                <argument type="untyped"/>
1725                        </arguments>
1726                </element>
1727                <element name="min" function="true" type="untyped">
1728                        <arguments>
1729                                <argument type="untyped"/>
1730                                <argument type="untyped"/>
1731                        </arguments>
1732                </element>
1733                <element name="pow" function="true" type="float">
1734                        <arguments>
1735                                <argument name="a" type="float"/>
1736                                <argument name="b" type="float"/>
1737                        </arguments>
1738                </element>
1739                <element name="random" function="true" type="integer">
1740                        <description><![CDATA[0..num-1]]></description>
1741                        <arguments>
1742                                <argument name="num" type="integer"/>
1743                        </arguments>
1744                </element>
1745                <element name="rndCustom" function="true" type="float">
1746                        <description><![CDATA[the parameter describes the desired random distribution, being a sum of uniform distributions, eg. rndCustom([-10,-1, -1,1, 1,10]) defines 3 uniform distribution intervals [-1,10) [-1,1), [1,10)]]></description>
1747                        <arguments>
1748                                <argument type="Vector"/>
1749                        </arguments>
1750                </element>
1751                <element name="rndGauss" function="true" type="float">
1752                        <description><![CDATA[rndGaussStd is rndGauss(0,1)]]></description>
1753                        <arguments>
1754                                <argument name="center" type="float"/>
1755                                <argument name="stdandard deviation" type="float"/>
1756                        </arguments>
1757                </element>
1758                <element name="rndUni" function="true" type="float">
1759                        <description><![CDATA[[begin..end)]]></description>
1760                        <arguments>
1761                                <argument name="begin" type="float"/>
1762                                <argument name="end" type="float"/>
1763                        </arguments>
1764                </element>
1765                <element name="sigmoid" function="true" type="float">
1766                        <arguments>
1767                                <argument type="float"/>
1768                        </arguments>
1769                </element>
1770                <element name="sign" function="true" type="integer">
1771                        <arguments>
1772                                <argument type="float"/>
1773                        </arguments>
1774                </element>
1775                <element name="sin" function="true" type="float">
1776                        <arguments>
1777                                <argument type="float"/>
1778                        </arguments>
1779                </element>
1780                <element name="sqrt" function="true" type="float">
1781                        <arguments>
1782                                <argument type="float"/>
1783                        </arguments>
1784                </element>
1785        </type>
1786        <type name="MechJoint" context="Global context">
1787                <element name="dx" type="float"/>
1788                <element name="dy" type="float"/>
1789                <element name="dz" type="float"/>
1790                <element name="part1" type="MechPart"/>
1791                <element name="part2" type="MechPart"/>
1792                <element name="rotstif" type="float"/>
1793                <element name="rotstress" type="float"/>
1794                <element name="rx" type="float"/>
1795                <element name="ry" type="float"/>
1796                <element name="rz" type="float"/>
1797                <element name="stif" type="float"/>
1798                <element name="stress" type="float"/>
1799        </type>
1800        <type name="MechPart" context="Global context">
1801                <element name="fr" type="float"/>
1802                <element name="m" type="float"/>
1803                <element name="orient" type="Orient"/>
1804                <element name="oxx" type="float"/>
1805                <element name="oxy" type="float"/>
1806                <element name="oxz" type="float"/>
1807                <element name="oyx" type="float"/>
1808                <element name="oyy" type="float"/>
1809                <element name="oyz" type="float"/>
1810                <element name="ozx" type="float"/>
1811                <element name="ozy" type="float"/>
1812                <element name="ozz" type="float"/>
1813                <element name="pos" type="XYZ"/>
1814                <element name="s" type="float"/>
1815                <element name="v" type="XYZ"/>
1816                <element name="vol" type="float"/>
1817                <element name="vx" type="float"/>
1818                <element name="vy" type="float"/>
1819                <element name="vz" type="float"/>
1820                <element name="x" type="float"/>
1821                <element name="y" type="float"/>
1822                <element name="z" type="float"/>
1823                <element name="applyForce" function="true" type="void">
1824                        <arguments>
1825                                <argument name="x" type="float"/>
1826                                <argument name="y" type="float"/>
1827                                <argument name="z" type="float"/>
1828                        </arguments>
1829                </element>
1830        </type>
1831        <type name="Model" context="Global context">
1832                <element name="geno" type="Geno"/>
1833                <element name="numconnections" type="integer"/>
1834                <element name="numjoints" type="integer"/>
1835                <element name="numneurons" type="integer"/>
1836                <element name="numparts" type="integer"/>
1837                <element name="se" type="float"/>
1838                <element name="size_x" type="float">
1839                        <description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including imaginary Part sizes (Part.s, usually 1.0). A creature consisting of a single default part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
1840See also: Creature.moveAbs]]></description>
1841                </element>
1842                <element name="size_y" type="float">
1843                        <description><![CDATA[See Model.size_x]]></description>
1844                </element>
1845                <element name="size_z" type="float">
1846                        <description><![CDATA[See Model.size_x]]></description>
1847                </element>
1848                <element name="Vstyle" type="string"/>
1849                <element name="getJoint" function="true" type="Joint">
1850                        <arguments>
1851                                <argument name="index" type="integer"/>
1852                        </arguments>
1853                </element>
1854                <element name="getNeuroDef" function="true" type="NeuroDef">
1855                        <arguments>
1856                                <argument name="index" type="integer"/>
1857                        </arguments>
1858                </element>
1859                <element name="getPart" function="true" type="Part">
1860                        <arguments>
1861                                <argument name="index" type="integer"/>
1862                        </arguments>
1863                </element>
1864                <element name="newFromGeno" function="true" type="Model">
1865                        <arguments>
1866                                <argument type="Geno"/>
1867                        </arguments>
1868                </element>
1869                <element name="newFromString" function="true" type="Model">
1870                        <arguments>
1871                                <argument name="genotype" type="string"/>
1872                        </arguments>
1873                </element>
1874        </type>
1875        <type name="Neuro" context="Global context">
1876<description><![CDATA[Live Neuron object.]]></description>
1877                <element name="channelCount" type="integer"/>
1878                <element name="creature" type="Creature"/>
1879                <element name="currState" type="float">
1880                        <description><![CDATA[the only difference from the "state" field is that currState, when written, changes the internal neuron state immediately (which disturbs the regular synchronous NN operation). This feature should only be used while controlling the neuron 'from outside' (like a neuro probe) and not in the neuron definition.]]></description>
1881                </element>
1882                <element name="def" type="NeuroDef"/>
1883                <element name="fields" type="Fields">
1884                        <description><![CDATA[Neurons can have different fields depending on their class. Script neurons have their fields defined using the "prop:" syntax. If you develop a custom neuron script you should use the Fields object for accessing your own neuron fields. The Neuro.fields property is meant for accessing the neuron fields from the outside script.
1885Examples:
1886var c=Populations.createFromString("X[N]");
1887Simulator.print("standard neuron inertia="+c.getNeuro(0).fields.in);
1888c=Populations.createFromString("X[Nn,e:0.1]");
1889Simulator.print("noisy neuron error rate="+c.getNeuro(0).fields.e);
1890
1891The Interface object can be used to discover which fields are available for a certain neuron object:
1892c=Populations.createFromString("X[N]");
1893var iobj=Interface.makeFrom(c.getNeuro(0).fields);
1894var i;
1895for(i=0;i<iobj.properties;i++)
1896 Simulator.print(iobj.getId(i)+" ("+iobj.getName(i)+")");]]></description>
1897                </element>
1898                <element name="getInputCount" type="integer"/>
1899                <element name="hold" type="integer" min="0" max="1">
1900                        <description><![CDATA[]]></description>
1901                </element>
1902                <element name="inputSum" type="float"/>
1903                <element name="joint" type="MechJoint"/>
1904                <element name="part" type="MechPart"/>
1905                <element name="position_x" type="float"/>
1906                <element name="position_y" type="float"/>
1907                <element name="position_z" type="float"/>
1908                <element name="signals" type="NeuroSignals"/>
1909                <element name="state" type="float">
1910                        <description><![CDATA[when read, returns the current neuron state.
1911When written, sets the next neuron state (for use in the neuron definition)]]></description>
1912                </element>
1913                <element name="weightedInputSum" type="float"/>
1914                <element name="getInputChannelCount" function="true" type="integer">
1915                        <arguments>
1916                                <argument name="input" type="integer"/>
1917                        </arguments>
1918                </element>
1919                <element name="getInputState" function="true" type="float">
1920                        <arguments>
1921                                <argument name="input" type="integer"/>
1922                        </arguments>
1923                </element>
1924                <element name="getInputStateChannel" function="true" type="float">
1925                        <arguments>
1926                                <argument name="input" type="integer"/>
1927                                <argument name="channel" type="integer"/>
1928                        </arguments>
1929                </element>
1930                <element name="getInputSum" function="true" type="float">
1931                        <arguments>
1932                                <argument name="input" type="integer"/>
1933                        </arguments>
1934                </element>
1935                <element name="getInputWeight" function="true" type="float">
1936                        <arguments>
1937                                <argument name="input" type="integer"/>
1938                        </arguments>
1939                </element>
1940                <element name="getStateChannel" function="true" type="float">
1941                        <arguments>
1942                                <argument name="channel" type="integer"/>
1943                        </arguments>
1944                </element>
1945                <element name="getWeightedInputState" function="true" type="float">
1946                        <arguments>
1947                                <argument name="input" type="integer"/>
1948                        </arguments>
1949                </element>
1950                <element name="getWeightedInputStateChannel" function="true" type="float">
1951                        <arguments>
1952                                <argument name="input" type="integer"/>
1953                                <argument name="channel" type="integer"/>
1954                        </arguments>
1955                </element>
1956                <element name="getWeightedInputSum" function="true" type="float">
1957                        <description><![CDATA[uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
1958                        <arguments>
1959                                <argument name="input" type="integer"/>
1960                        </arguments>
1961                </element>
1962                <element name="setCurrStateChannel" function="true" type="void">
1963                        <description><![CDATA[like "currState"]]></description>
1964                        <arguments>
1965                                <argument name="channel" type="integer"/>
1966                                <argument name="value" type="float"/>
1967                        </arguments>
1968                </element>
1969                <element name="setStateChannel" function="true" type="void">
1970                        <arguments>
1971                                <argument name="channel" type="integer"/>
1972                                <argument name="value" type="float"/>
1973                        </arguments>
1974                </element>
1975        </type>
1976        <type name="NeuroClass" context="Global context">
1977<description><![CDATA[The static NeuroClass object refers to class selected in the NeuroClassLibrary.]]></description>
1978                <element name="description" type="string"/>
1979                <element name="glyph" type="string"/>
1980                <element name="longname" type="string"/>
1981                <element name="name" type="string"/>
1982                <element name="prefinputs" type="integer"/>
1983                <element name="preflocation" type="integer" min="0" max="2"/>
1984                <element name="prefoutput" type="integer" min="0" max="1"/>
1985                <element name="properties" type="Interface"/>
1986                <element name="summary" type="string">
1987                        <description><![CDATA[Textual summary of all features]]></description>
1988                </element>
1989                <element name="visualhints" type="integer"/>
1990        </type>
1991        <type name="NeuroClassLibrary" context="Global context">
1992<description><![CDATA[Set of Neuron classes. You can access the selected class in the static NeuroClass object.]]></description>
1993                <element name="class" type="integer">
1994                        <description><![CDATA[0 ... count-1]]></description>
1995                </element>
1996                <element name="count" type="integer"/>
1997                <element name="findClass" function="true" type="void">
1998                        <arguments>
1999                                <argument name="class name" type="string"/>
2000                        </arguments>
2001                </element>
2002        </type>
2003        <type name="NeuroDef" context="Global context">
2004                <element name="d" type="string"/>
2005                <element name="getInputCount" type="integer"/>
2006                <element name="i" type="string"/>
2007                <element name="j" type="integer" min="-1" max="999999" default="-1"/>
2008                <element name="p" type="integer" min="-1" max="999999" default="-1"/>
2009                <element name="Vstyle" type="string"/>
2010                <element name="getInputNeuroDef" function="true" type="NeuroDef">
2011                        <arguments>
2012                                <argument type="integer"/>
2013                        </arguments>
2014                </element>
2015                <element name="getInputNeuroIndex" function="true" type="integer">
2016                        <arguments>
2017                                <argument type="integer"/>
2018                        </arguments>
2019                </element>
2020                <element name="getInputWeight" function="true" type="float">
2021                        <arguments>
2022                                <argument type="integer"/>
2023                        </arguments>
2024                </element>
2025        </type>
2026        <type name="NeuroSignals" context="Global context">
2027<description><![CDATA[Signals attached to the neuron.
2028See also: Signal, WorldSignals, CreatureSignals.
2029scripts/light.neuro and scripts/seelight.neuro are simple custom neuron examples demonstrating how to send/receive signals between creatures.]]></description>
2030                <element name="size" type="integer"/>
2031                <element name="add" function="true" type="void">
2032                        <description><![CDATA[Create a new signal]]></description>
2033                        <arguments>
2034                                <argument name="channel" type="string"/>
2035                        </arguments>
2036                </element>
2037                <element name="clear" function="true" type="void"><arguments/></element>
2038                <element name="get" function="true" type="Signal">
2039                        <arguments>
2040                                <argument name="index" type="integer"/>
2041                        </arguments>
2042                </element>
2043                <element name="receive" function="true" type="float">
2044                        <description><![CDATA[Receive the aggregated signal power in a given channel.]]></description>
2045                        <arguments>
2046                                <argument name="channel" type="string"/>
2047                        </arguments>
2048                </element>
2049                <element name="receiveFilter" function="true" type="float">
2050                        <description><![CDATA[Receive the aggregated signal power in a given channel.
2051
2052Additional filtering options:
2053- Max distance only receives the neighbor signals (based on their physical location)
2054- Flavor filtering: only signals having the flavor close to the specified one will be received. The filter value is the maximum allowed difference.]]></description>
2055                        <arguments>
2056                                <argument name="channel" type="string"/>
2057                                <argument name="max distance" type="float"/>
2058                                <argument name="flavor" type="float"/>
2059                                <argument name="filter" type="float"/>
2060                        </arguments>
2061                </element>
2062                <element name="receiveSet" function="true" type="Vector">
2063                        <description><![CDATA[Get all signals in the specified range. Returns a readonly vector object containing Signal objects (individual signals can be accessed as result[0] throught result[result.size-1]).]]></description>
2064                        <arguments>
2065                                <argument name="channel" type="string"/>
2066                                <argument name="max distance" type="float"/>
2067                        </arguments>
2068                </element>
2069                <element name="receiveSingle" function="true" type="Signal">
2070                        <description><![CDATA[Find the signal source having the highest signal power (including the distance)]]></description>
2071                        <arguments>
2072                                <argument name="channel" type="string"/>
2073                                <argument name="range" type="float"/>
2074                        </arguments>
2075                </element>
2076        </type>
2077        <type name="ODE" context="Global context">
2078<description><![CDATA[ODE Parameters.]]></description>
2079                <element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
2080                        <description><![CDATA[A drag force ("air drag") proportional to the velocity of mass centers of moving parts]]></description>
2081                </element>
2082                <element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
2083                <element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
2084                <element name="odecol2mumax" type="float" min="0" max="10" default="1">
2085                        <description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
2086                </element>
2087                <element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
2088                        <description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
2089                </element>
2090                <element name="odecol2softcfm" type="float" min="0" max="1" default="0"/>
2091                <element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
2092                <element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
2093                <element name="odecolmumax" type="float" min="0" max="10" default="5">
2094                        <description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
2095                </element>
2096                <element name="odecolmumin" type="float" min="0" max="10" default="0.1">
2097                        <description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
2098                </element>
2099                <element name="odecolsoftcfm" type="float" min="0" max="1" default="0"/>
2100                <element name="odemusclemax" type="float" min="0" max="100" default="10">
2101                        <description><![CDATA[i.e. "MMMMM" if f1]]></description>
2102                </element>
2103                <element name="odemusclemin" type="float" min="0" max="100" default="0">
2104                        <description><![CDATA[i.e. "mmmmm" in f1]]></description>
2105                </element>
2106                <element name="odemusclespeed" type="float" min="0" max="10" default="1">
2107                        <description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
2108                </element>
2109                <element name="odeseed" type="integer" min="0" max="2">
2110                        <description><![CDATA[Affects collisions.
2111- 'Truly random' is closest to the standard ODE operation. Use Math.seed to influence randomness in ODE collisions
2112- 'Deterministic' automatically calculates random seed in each step based on the current simulation (world) state, which makes the simulation repeatable but more random than 'Fixed'
2113- 'Fixed' is completely deterministic and does not depend on Math.seed. This might negatively affect ODE accuracy
2114]]></description>
2115                </element>
2116                <element name="odeshape" type="integer" min="0" max="1"/>
2117                <element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
2118                <element name="odewaterbuoy" type="float" min="0" max="2" default="1"/>
2119                <element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
2120                <element name="rayIntersection" function="true" type="float">
2121                        <arguments>
2122                                <argument name="position x" type="float"/>
2123                                <argument name="position y" type="float"/>
2124                                <argument name="position z" type="float"/>
2125                                <argument name="direction x" type="float"/>
2126                                <argument name="direction y" type="float"/>
2127                                <argument name="direction z" type="float"/>
2128                                <argument name="max distance" type="float"/>
2129                        </arguments>
2130                </element>
2131        </type>
2132        <type name="Orient" context="Global context">
2133<description><![CDATA[3D orientation, stored as 3x3 matrix.]]></description>
2134                <element name="x" type="XYZ"/>
2135                <element name="xx" type="float"/>
2136                <element name="xy" type="float"/>
2137                <element name="xz" type="float"/>
2138                <element name="y" type="XYZ"/>
2139                <element name="yx" type="float"/>
2140                <element name="yy" type="float"/>
2141                <element name="yz" type="float"/>
2142                <element name="z" type="XYZ"/>
2143                <element name="zx" type="float"/>
2144                <element name="zy" type="float"/>
2145                <element name="zz" type="float"/>
2146                <element name="between2" function="true" type="void">
2147                        <arguments>
2148                                <argument type="Orient"/>
2149                                <argument type="Orient"/>
2150                                <argument name="amount" type="float"/>
2151                        </arguments>
2152                </element>
2153                <element name="betweenOV" function="true" type="void">
2154                        <arguments>
2155                                <argument type="Orient"/>
2156                                <argument type="XYZ"/>
2157                                <argument name="amount" type="float"/>
2158                        </arguments>
2159                </element>
2160                <element name="clone" function="true" type="Orient"><arguments/></element>
2161                <element name="localToWorld" function="true">
2162                        <arguments>
2163                                <argument name="point" type="XYZ"/>
2164                                <argument name="center" type="XYZ"/>
2165                        </arguments>
2166                </element>
2167                <element name="lookAt" function="true" type="void">
2168                        <arguments>
2169                                <argument name="direction" type="XYZ"/>
2170                                <argument name="up" type="XYZ"/>
2171                        </arguments>
2172                </element>
2173                <element name="new" function="true" type="Orient">
2174                        <arguments>
2175                                <argument name="x" type="float"/>
2176                                <argument name="y" type="float"/>
2177                                <argument name="z" type="float"/>
2178                        </arguments>
2179                </element>
2180                <element name="normalize" function="true" type="void"><arguments/></element>
2181                <element name="reset" function="true" type="void"><arguments/></element>
2182                <element name="revRotate" function="true" type="void">
2183                        <arguments>
2184                                <argument type="Orient"/>
2185                        </arguments>
2186                </element>
2187                <element name="rotate" function="true" type="void">
2188                        <arguments>
2189                                <argument type="Orient"/>
2190                        </arguments>
2191                </element>
2192                <element name="rotate3" function="true" type="void">
2193                        <arguments>
2194                                <argument name="x" type="float"/>
2195                                <argument name="y" type="float"/>
2196                                <argument name="z" type="float"/>
2197                        </arguments>
2198                </element>
2199                <element name="set" function="true" type="void">
2200                        <arguments>
2201                                <argument type="Orient"/>
2202                        </arguments>
2203                </element>
2204                <element name="worldToLocal" function="true">
2205                        <arguments>
2206                                <argument name="point" type="XYZ"/>
2207                                <argument name="center" type="XYZ"/>
2208                        </arguments>
2209                </element>
2210        </type>
2211        <type name="Part" context="Global context">
2212                <element name="as" type="float" min="0" max="1" default="0.25"/>
2213                <element name="dn" type="float" min="0.2" max="5" default="1"/>
2214                <element name="fr" type="float" min="0" max="4" default="0.4"/>
2215                <element name="i" type="string"/>
2216                <element name="ing" type="float" min="0" max="1" default="0.25"/>
2217                <element name="m" type="float" min="0.1" max="999" default="1"/>
2218                <element name="rx" type="float"/>
2219                <element name="ry" type="float"/>
2220                <element name="rz" type="float"/>
2221                <element name="s" type="float" min="0.1" max="10" default="1"/>
2222                <element name="Vstyle" type="string"/>
2223                <element name="x" type="float"/>
2224                <element name="y" type="float"/>
2225                <element name="z" type="float"/>
2226        </type>
2227        <type name="Population" context="Global context">
2228<description><![CDATA[A set of Creature objects, sharing some high level simulation properties (performance calculation, NN simulation, collision detection, event handling). The groups usually have different roles in the experiment (Creatures groups and Food group in standard.expdef)]]></description>
2229                <element name="bodysim" type="integer" min="0" max="1" default="1">
2230                        <description><![CDATA[Enable/disable physical body simulation. This is the initial value of Creature.bodysim for all objects created in this group. For details, see the documentation of Creature.bodysim.]]></description>
2231                </element>
2232                <element name="colmask" type="integer" min="0" max="65535" default="0">
2233                        <description><![CDATA[DEPRECATED. You should use selfmask and othermask (these masks are also much easier to understand than the old colmask field).]]></description>
2234                </element>
2235                <element name="death" type="integer" min="0" max="1" default="1">
2236                        <description><![CDATA[Do creatures die when no energy?]]></description>
2237                </element>
2238                <element name="em_dyn" type="float" min="0" max="1" default="0">
2239                        <description><![CDATA[Energy requirements for a muscle
2240moving a stick]]></description>
2241                </element>
2242                <element name="em_stat" type="float" min="0" max="1" default="0">
2243                        <description><![CDATA[Energy requirements for a muscle
2244resisting an external force]]></description>
2245                </element>
2246                <element name="en_assim" type="float" min="0" max="1" default="0">
2247                        <description><![CDATA[Maximal energy gain produced by a vertical specialized stick.
2248Horizontal specialized sticks get half of this value.]]></description>
2249                </element>
2250                <element name="enableperf" type="integer" min="0" max="2" default="1">
2251                        <description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
2252                </element>
2253                <element name="energy" type="integer" min="0" max="1" default="1">
2254                        <description><![CDATA[If turned off, creature's energy will be constant]]></description>
2255                </element>
2256                <element name="index" type="integer"/>
2257                <element name="killnostable" type="integer" min="0" max="10000000" default="1000000">
2258                        <description><![CDATA[Creatures that fail to stabilize after the specified waiting period (e.g. because they are continuously rolling) will be killed. 0 disables this feature.]]></description>
2259                </element>
2260                <element name="name" type="string"/>
2261                <element name="nnsim" type="integer" min="0" max="2" default="1">
2262                        <description><![CDATA[Stabilization means no significant movement during a specified period of time.]]></description>
2263                </element>
2264                <element name="othermask" type="integer" min="0" max="2147483647" default="0">
2265                        <description><![CDATA[See selfmask.]]></description>
2266                </element>
2267                <element name="perfperiod" type="integer" min="0" max="1000000" default="100">
2268                        <description><![CDATA[Defines how often onUpdate() events are called. Also used to compute partial performance of creatures (distance, speed, etc.) and to determine stabilization.]]></description>
2269                </element>
2270                <element name="selfcol" type="integer" min="0" max="1" default="0">
2271                        <description><![CDATA[Detect collisions within creature bodies (only applicable for the ODE simulation engine). This is the initial value of Creature.selfcol for all objects created in this group. If enabled, creatures with self-colliding genotypes are not born, and others will have their sticks collide during lifespan.]]></description>
2272                </element>
2273                <element name="selfmask" type="integer" min="0" max="2147483647" default="0">
2274                        <description><![CDATA[Collisions between objects can be handled in two ways:
2275 - standard 'mechanical' collision (simple 'rebound' effect)
2276 - special script handler (On[GROUPNAME]Collision function)
2277
2278In the script handler function, use the Collision object to access the two colliding parts of two creatures.
2279The first part in the Collision object (i.e. Collision.Creature1) always concerns the creature that belongs to [GROUPNAME].
2280The handler is called once for each creature that collides with the creature from [GROUPNAME].
2281
2282Collision masks determine which one will be used (none and both are also possible). On each collision, selfmask and othermask of the colliding objects are logically ANDed. 16 lower bits (0xffff) enable the standard handler. 16 higher bits (0xffff0000) enable the custom handler.
2283Examples:
2284
22851.With one group, all possible combinations of the collision handlers are as follows:
2286  - ignore collisions (e.g. selfmask=othermask=0)
2287  - use standard handling (e.g. selfmask=othermask=1)
2288  - use custom handling (e.g. selfmask=othermask=0x10000)
2289  - use standard and custom handling (e.g. selfmask=othermask=0x10001)
2290
22912.Two groups yield more interesting cases. Let us consider the 'standard.expdef' setting:
2292  Creatures: selfmask=0x10001, othermask=0x20001
2293  Food colmask = selfmask=0x20002, othermask=0x10002
2294There are three possible scenarios:
2295- creature and creature: collision value = 0x10001 & 0x20001 = 1 -> Standard handling will be used (1 is one of the lower 16 bits)
2296- food and food: collision value = 0x20002 & 0x10002 = 2 -> As above.
2297- creature and food: collision value = (0x10001 & 0x10002) or (0x20002 & 0x20001) = 0x10000 or 0x20000 -> Custom handling will be used (higher 16 bits).
2298]]></description>
2299                </element>
2300                <element name="size" type="integer"/>
2301                <element name="stabilperiod" type="integer" min="0" max="1000000" default="100">
2302                        <description><![CDATA["Performance sampling period" for the stabilization phase.]]></description>
2303                </element>
2304                <element name="stabledist" type="float" min="0" max="1" default="0.01">
2305                        <description><![CDATA[A creature is considered stabilized when its center of gravity stays within the specified distance after the "Sampling period while waiting" has elapsed.]]></description>
2306                </element>
2307                <element name="createFromGeno" function="true" type="Creature">
2308                        <description><![CDATA[uses the supplied Geno object]]></description>
2309                        <arguments>
2310                                <argument type="Geno"/>
2311                        </arguments>
2312                </element>
2313                <element name="createFromGenotype" function="true" type="Creature">
2314                        <description><![CDATA[uses the selected Genotype object]]></description>
2315<arguments/></element>
2316                <element name="createFromString" function="true" type="Creature">
2317                        <description><![CDATA[uses the supplied string argument]]></description>
2318                        <arguments>
2319                                <argument name="genotype" type="string"/>
2320                        </arguments>
2321                </element>
2322                <element name="delete" function="true" type="void">
2323                        <description><![CDATA[delete creature]]></description>
2324                        <arguments>
2325                                <argument name="creature index" type="integer"/>
2326                        </arguments>
2327                </element>
2328                <element name="findCreatureAt" function="true" type="Creature">
2329                        <arguments>
2330                                <argument name="point" type="Vector"/>
2331                                <argument name="vector" type="Vector"/>
2332                        </arguments>
2333                </element>
2334                <element name="findUID" function="true" type="integer">
2335                        <arguments>
2336                                <argument name="uid" type="string"/>
2337                        </arguments>
2338                </element>
2339                <element name="get" function="true" type="Creature">
2340                        <arguments>
2341                                <argument name="index" type="integer"/>
2342                        </arguments>
2343                </element>
2344                <element name="kill" function="true" type="void">
2345                        <description><![CDATA[kill creature]]></description>
2346                        <arguments>
2347                                <argument name="creature index" type="integer"/>
2348                        </arguments>
2349                </element>
2350                <element name="senseCreaturesProperty" function="true" type="float">
2351                        <description><![CDATA[arguments:
2352 - x,y,z (sensor position)
2353 - property (name, name[index] or Class:id). name[index] can be used for Vector objects inside the user fields, eg "user2[10]"
2354 - exclude (creature object)
2355works like a smell sensor for a given property (for all creatures in this group except "exclude").
2356The following function reproduces the "classic" framsticks "S" sensor:
2357function smellReceptorValue(x,y,z,exclude)
2358{
2359var i,s=0; for(i=0;i<Populations.size;i++)
2360        s+=Populations[0].senseCreaturesProperty(x,y,z,"energy",exclude);
2361return s;
2362}]]></description>
2363                        <arguments>
2364                                <argument name="x" type="float"/>
2365                                <argument name="y" type="float"/>
2366                                <argument name="z" type="float"/>
2367                                <argument name="propertyname" type="string"/>
2368                                <argument name="exclude" type="Creature"/>
2369                        </arguments>
2370                </element>
2371        </type>
2372        <type name="Populations" context="Global context">
2373<description><![CDATA[Manages all Creature objects in the experiment, organized in one or more groups. See also: Creature, Population]]></description>
2374                <element name="creature" type="integer"/>
2375                <element name="group" type="integer"/>
2376                <element name="size" type="integer"/>
2377                <element name="addGroup" function="true" type="void">
2378                        <description><![CDATA[add population]]></description>
2379                        <arguments>
2380                                <argument name="name" type="string"/>
2381                        </arguments>
2382                </element>
2383                <element name="clear" function="true" type="void">
2384                        <description><![CDATA[remove all populations except the first one]]></description>
2385<arguments/></element>
2386                <element name="clearGroup" function="true" type="void">
2387                        <arguments>
2388                                <argument name="index" type="integer"/>
2389                        </arguments>
2390                </element>
2391                <element name="creatBBCollisions" function="true" type="integer">
2392                        <description><![CDATA[Checks approximate collisions for the selected creature.
2393Returns the collision mask calculated as in the regular simulation. The argument is the collision mask substituted for the selected creature (defaults to group colmask for 0)]]></description>
2394                        <arguments>
2395                                <argument name="mask" type="integer"/>
2396                        </arguments>
2397                </element>
2398                <element name="createFromGenotype" function="true" type="Creature">
2399                        <description><![CDATA[uses the selected Genotype object]]></description>
2400<arguments/></element>
2401                <element name="createFromString" function="true" type="Creature">
2402                        <description><![CDATA[uses the supplied string argument]]></description>
2403                        <arguments>
2404                                <argument name="genotype" type="string"/>
2405                        </arguments>
2406                </element>
2407                <element name="deleteGroup" function="true" type="void">
2408                        <description><![CDATA[remove population]]></description>
2409                        <arguments>
2410                                <argument name="index" type="integer"/>
2411                        </arguments>
2412                </element>
2413                <element name="deleteSelected" function="true" type="void">
2414                        <description><![CDATA[applies to the selected Creature]]></description>
2415<arguments/></element>
2416                <element name="findCreatureAt" function="true" type="Creature">
2417                        <arguments>
2418                                <argument name="point" type="Vector"/>
2419                                <argument name="vector" type="Vector"/>
2420                        </arguments>
2421                </element>
2422                <element name="get" function="true" type="Population">
2423                        <arguments>
2424                                <argument name="index" type="integer"/>
2425                        </arguments>
2426                </element>
2427                <element name="killSelected" function="true" type="void">
2428                        <description><![CDATA[applies to the selected Creature]]></description>
2429<arguments/></element>
2430        </type>
2431        <type name="Ref" context="Global context">
2432<description><![CDATA[Reference objects. Useful for returning things from functions.
2433
2434Example:
2435var x=111;
2436square(&x);// '&' creates the Reference object
2437Simulator.print(x);//x is now 12321
2438
2439function square(r)
2440{r.value=r.value*r.value;}
2441//square receives the Reference objects and changes its 'value' field]]></description>
2442                <element name="toString" type="string"/>
2443                <element name="value" type="untyped"/>
2444                <element name="copyFrom" function="true" type="void">
2445                        <description><![CDATA[make the reference point to the same target,]]></description>
2446                        <arguments>
2447                                <argument type="Ref"/>
2448                        </arguments>
2449                </element>
2450                <element name="newO" function="true">
2451                        <description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
2452                </element>
2453                <element name="newS" function="true">
2454                        <description><![CDATA[(for internal use only) use &variablename to create Ref objects.]]></description>
2455                </element>
2456        </type>
2457        <type name="Shapes" context="Global context">
2458<description><![CDATA[This object defines appearance of the elements of creatures (applies to the 'wireframe' display mode). Default shape definitions make food's "p:" look like a sphere, and manipulator's "p:" look like a robot hand. The model's Vstyle property is the name of the shape. Developers of experiment definitions can introduce new Vstyle(s) for their expdef and provide appropriate shape definitions by calling Shapes.set(...) in the onExpDefLoad() function.]]></description>
2459                <element name="clear" function="true" type="void"><arguments/></element>
2460                <element name="set" function="true" type="void">
2461                        <description><![CDATA[Arguments:
2462
2463- "id" - can be
2464  "1p_STYLENAME": affects a single-Part creature (without Joints)
2465  "p_STYLENAME": affects all normal Parts
2466  "j_STYLENAME": affects Joints
2467     (STYLENAME corresponds to the Model.Vstyle value, and it can be empty).
2468
2469- "definition" is a genotype describing the object shape
2470
2471- "color" can be 0xRRGGBB or one of the special values: -3 = default creature color, -4 = default food color, -5 = default manipulator color
2472
2473Examples:
2474Shapes.set("j_predator","X",0xff0000);//make all predators (i.e. creatures with Vstyle=predator) red
2475Shapes.set("1p_food","...some...genotype...",-4);//change food appearance
2476Shapes.set("p_","//0\np:0,0,0\np:-0.1,0,0\np:0.1,0,0\np:0,-0.1,0\np:0,0.1,0\np:0,0,-0.1\np:0,0,0.1\nj:0,1\nj:0,2\nj:0,3\nj:0,4\nj:0,5\nj:0,6\n",0);//make Parts' orientation axes visible]]></description>
2477                        <arguments>
2478                                <argument name="id" type="string"/>
2479                                <argument name="definition" type="string"/>
2480                                <argument name="color" type="integer"/>
2481                        </arguments>
2482                </element>
2483        </type>
2484        <type name="Signal" context="Global context">
2485<description><![CDATA[Signals broadcast information in a channel (being an abstract communication medium that could be imagined as sound, smell, vision or anything else). There are no sender-receiver associations, although the receiving party can filter out signals (two standard filtering methods are: physical neighborhood and one-dimensional attribute called flavor). Signals attached to neurons and creatures (created in Creature.signals and Neuro.signals) automatically follow the owner's location. Environmental signals (in World.signals) are stationary.
2486
2487Receiving:
2488There are 2 kinds of data you can receive:
24891. aggregating functions (receive and receiveFilter) calculate the overall power of the received signal (based on the distance and the source power).
24902.receiveSet and receiveSingle fetch the individual Signal object(s) so it is possible to transmit something else than just a single number (by using Signal.value) and do more sophisticated processing.
2491
2492Creating: Use "add" in Creature.signals, Neuro.signals, or World.signals.]]></description>
2493                <element name="channel" type="string">
2494                        <description><![CDATA[Channel name, readonly.]]></description>
2495                </element>
2496                <element name="flavor" type="float">
2497                        <description><![CDATA[Signal flavor is can be used to differentiate between signals in a single channel. ]]></description>
2498                </element>
2499                <element name="pos" type="XYZ">
2500                        <description><![CDATA[Signal position, readonly.]]></description>
2501                </element>
2502                <element name="power" type="float">
2503                        <description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
2504                </element>
2505                <element name="value" type="untyped">
2506                        <description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating function receive() and receiveFilter() ignore this attribute.]]></description>
2507                </element>
2508                <element name="remove" function="true">
2509                        <description><![CDATA[Deletes the signal]]></description>
2510                </element>
2511        </type>
2512        <type name="sim_params" context="Global context">
2513<description><![CDATA[This object groups all simulator parameters so they can be loaded or saved with a single call (see scripts/standard_loadsave.inc). For other purposes please use specific objects, like Simulator, World, Populations, etc.]]></description>
2514                <element name="autosaveperiod" type="integer" min="0" max="100000">
2515                        <description><![CDATA[Save simulation state once every n-th event
2516(events are defined by the script. For 'standard.expdef' it is after each death).
2517Save EXPT file first to initialize name for autosave files.]]></description>
2518                </element>
2519                <element name="bnoise_struct" type="float" min="0" max="10" default="0">
2520                        <description><![CDATA[When >0, body constructs of creatures (position of Parts) will be randomly disturbed when they are created.]]></description>
2521                </element>
2522                <element name="bnoise_vel" type="float" min="0" max="10" default="0">
2523                        <description><![CDATA[Random velocities will be applied to all body Parts (in MechaStick) or rigid segments (in ODE) of newly created creatures.]]></description>
2524                </element>
2525                <element name="changedProperty" type="integer"/>
2526                <element name="changedPropertyId" type="string"/>
2527                <element name="createrr" type="integer" min="0" max="2" default="1"/>
2528                <element name="creatwarnfail" type="integer" min="0" max="1">
2529                        <description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
2530                </element>
2531                <element name="expdef" type="string">
2532                        <description><![CDATA[Choose the experiment framework
2533(in Windows GUI, confirm by pressing 'Apply')
2534
2535Stop the simulation before selecting another experiment definition.
2536It is a good practice to initialize the experiment before running the simulation.]]></description>
2537                </element>
2538                <element name="expdef_info" type="string"/>
2539                <element name="expdef_title" type="string"/>
2540                <element name="f0_c_del" type="float" min="0" max="100" default="5">
2541                        <description><![CDATA[]]></description>
2542                </element>
2543                <element name="f0_c_new" type="float" min="0" max="100" default="5">
2544                        <description><![CDATA[]]></description>
2545                </element>
2546                <element name="f0_c_wei" type="float" min="0" max="100" default="10">
2547                        <description><![CDATA[]]></description>
2548                </element>
2549                <element name="f0_j_del" type="float" min="0" max="100" default="5">
2550                        <description><![CDATA[]]></description>
2551                </element>
2552                <element name="f0_j_new" type="float" min="0" max="100" default="5">
2553                        <description><![CDATA[]]></description>
2554                </element>
2555                <element name="f0_j_rsf" type="float" min="0" max="100" default="10">
2556                        <description><![CDATA[]]></description>
2557                </element>
2558                <element name="f0_j_stf" type="float" min="0" max="100" default="10">
2559                        <description><![CDATA[]]></description>
2560                </element>
2561                <element name="f0_j_stm" type="float" min="0" max="100" default="10">
2562                        <description><![CDATA[]]></description>
2563                </element>
2564                <element name="f0_n_del" type="float" min="0" max="100" default="5">
2565                        <description><![CDATA[]]></description>
2566                </element>
2567                <element name="f0_n_new" type="float" min="0" max="100" default="5">
2568                        <description><![CDATA[]]></description>
2569                </element>
2570                <element name="f0_n_prp" type="float" min="0" max="100" default="10">
2571                        <description><![CDATA[]]></description>
2572                </element>
2573                <element name="f0_nodel_tag" type="integer" min="0" max="1" default="1">
2574                        <description><![CDATA[You can tag elements using their 'i' field and the i="mi=d" tag.
2575Mutations will not delete such elements.
2576The i="mi=dm" combination is allowed.]]></description>
2577                </element>
2578                <element name="f0_nomod_tag" type="integer" min="0" max="1" default="1">
2579                        <description><![CDATA[You can tag elements using their 'i' field and the i="mi=m" tag.
2580Mutations will not modify properties of such elements.
2581The i="mi=md" combination is allowed.]]></description>
2582                </element>
2583                <element name="f0_p_asm" type="float" min="0" max="100" default="10">
2584                        <description><![CDATA[]]></description>
2585                </element>
2586                <element name="f0_p_del" type="float" min="0" max="100" default="5">
2587                        <description><![CDATA[]]></description>
2588                </element>
2589                <element name="f0_p_frc" type="float" min="0" max="100" default="10">
2590                        <description><![CDATA[]]></description>
2591                </element>
2592                <element name="f0_p_ing" type="float" min="0" max="100" default="10">
2593                        <description><![CDATA[]]></description>
2594                </element>
2595                <element name="f0_p_mas" type="float" min="0" max="100" default="10">
2596                        <description><![CDATA[]]></description>
2597                </element>
2598                <element name="f0_p_new" type="float" min="0" max="100" default="5">
2599                        <description><![CDATA[]]></description>
2600                </element>
2601                <element name="f0_p_pos" type="float" min="0" max="100" default="10">
2602                        <description><![CDATA[]]></description>
2603                </element>
2604                <element name="f0_p_swp" type="float" min="0" max="100" default="10">
2605                        <description><![CDATA[]]></description>
2606                </element>
2607                <element name="f0Fuzzy_maxRules" type="integer" min="0" max="999">
2608                        <description><![CDATA[Maximum number of fuzzy rules]]></description>
2609                </element>
2610                <element name="f0Fuzzy_maxSets" type="integer" min="0" max="999">
2611                        <description><![CDATA[Maximum number of fuzzy sets]]></description>
2612                </element>
2613                <element name="f0Fuzzy_prob0" type="float" min="0" max="1">
2614                        <description><![CDATA[Probability of adding new fuzzy set with simple rule, which uses this set (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2615                </element>
2616                <element name="f0Fuzzy_prob1" type="float" min="0" max="1">
2617                        <description><![CDATA[Probability of removing fuzzy set (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2618                </element>
2619                <element name="f0Fuzzy_prob2" type="float" min="0" max="1">
2620                        <description><![CDATA[Probability of adding new rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2621                </element>
2622                <element name="f0Fuzzy_prob3" type="float" min="0" max="1">
2623                        <description><![CDATA[Probability of removing rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2624                </element>
2625                <element name="f0Fuzzy_prob4" type="float" min="0" max="1">
2626                        <description><![CDATA[Probability of adding new input or output to exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2627                </element>
2628                <element name="f0Fuzzy_prob5" type="float" min="0" max="1">
2629                        <description><![CDATA[Probability of removing input or output from exisitng rule (1=proceed on all genes, 0.1=proceed on ten percent)]]></description>
2630                </element>
2631                <element name="f1_mut_exmod" type="string">
2632                        <description><![CDATA[Modifiers that will not be added nor deleted during mutation
2633(all: RrLlAaCcFfMmSsIiQqWwEe)]]></description>
2634                </element>
2635                <element name="f1_nmConn" type="float" min="0" max="100" default="0.1">
2636                        <description><![CDATA[]]></description>
2637                </element>
2638                <element name="f1_nmNeu" type="float" min="0" max="100" default="0.05">
2639                        <description><![CDATA[Adds a (connected) neuron or removes a neuron]]></description>
2640                </element>
2641                <element name="f1_nmProp" type="float" min="0" max="100" default="0.1">
2642                        <description><![CDATA[]]></description>
2643                </element>
2644                <element name="f1_nmVal" type="float" min="0" max="100" default="0.05"/>
2645                <element name="f1_nmWei" type="float" min="0" max="100" default="1"/>
2646                <element name="f1_smComma" type="float" min="0" max="100" default="0.02"/>
2647                <element name="f1_smJunct" type="float" min="0" max="100" default="0.02"/>
2648                <element name="f1_smModif" type="float" min="0" max="100" default="0.1">
2649                        <description><![CDATA[Modifiers: RrLlAaCcFfMmSsIiQqWwEe]]></description>
2650                </element>
2651                <element name="f1_smX" type="float" min="0" max="100" default="0.05"/>
2652                <element name="f1_xo_propor" type="integer" min="0" max="1" default="1">
2653                        <description><![CDATA[Cross over (exchange) corresponding segments of the two parent genotypes?
2654
2655f1 uses a two-point crossing over.
2656If this option is turned on, cut points will be selected proportionally to neural genes.
2657Thus, if both parents have the same number of neurons, then this will be preserved in their children.]]></description>
2658                </element>
2659                <element name="f2_mutAddOper" type="float" min="0" max="1" default="0.4">
2660                        <description><![CDATA[]]></description>
2661                </element>
2662                <element name="f2_mutConnElem" type="float" min="0" max="1" default="0.33">
2663                        <description><![CDATA[]]></description>
2664                </element>
2665                <element name="f2_mutDelOper" type="float" min="0" max="1" default="0.1">
2666                        <description><![CDATA[]]></description>
2667                </element>
2668                <element name="f2_mutHandleOper" type="float" min="0" max="1" default="0.3">
2669                        <description><![CDATA[]]></description>
2670                </element>
2671                <element name="f2_mutJointElem" type="float" min="0" max="1" default="0.33">
2672                        <description><![CDATA[]]></description>
2673                </element>
2674                <element name="f2_mutNeuroElem" type="float" min="0" max="1" default="0.33">
2675                        <description><![CDATA[]]></description>
2676                </element>
2677                <element name="f2_mutPropOper" type="float" min="0" max="1" default="0.2">
2678                        <description><![CDATA[]]></description>
2679                </element>
2680                <element name="f3_mutDelIns" type="float" min="0" max="1" default="0.1">
2681                        <description><![CDATA[]]></description>
2682                </element>
2683                <element name="f3_mutDelInsLength" type="integer" min="1" max="100" default="5">
2684                        <description><![CDATA[]]></description>
2685                </element>
2686                <element name="f3_mutDelInsPerChar" type="float" min="0" max="1" default="0.05">
2687                        <description><![CDATA[]]></description>
2688                </element>
2689                <element name="f3_mutDuplication" type="float" min="0" max="1" default="0.05">
2690                        <description><![CDATA[]]></description>
2691                </element>
2692                <element name="f3_mutSubstitution" type="float" min="0" max="1" default="0.6">
2693                        <description><![CDATA[]]></description>
2694                </element>
2695                <element name="f3_mutSubstPerChar" type="float" min="0" max="1" default="0.1">
2696                        <description><![CDATA[]]></description>
2697                </element>
2698                <element name="f3_mutTranslocation" type="float" min="0" max="1" default="0.15">
2699                        <description><![CDATA[]]></description>
2700                </element>
2701                <element name="f3_xovCrossingOver" type="float" min="0" max="1" default="0.2">
2702                        <description><![CDATA[]]></description>
2703                </element>
2704                <element name="f3_xovGeneTransfer" type="float" min="0" max="1" default="0.8">
2705                        <description><![CDATA[]]></description>
2706                </element>
2707                <element name="f4_mut_add" type="float" min="0" max="100" default="50">
2708                        <description><![CDATA[mutation: probability of adding a node]]></description>
2709                </element>
2710                <element name="f4_mut_add_conn" type="float" min="0" max="100" default="15">
2711                        <description><![CDATA[add node mutation: probability of adding a neural connection]]></description>
2712                </element>
2713                <element name="f4_mut_add_div" type="float" min="0" max="100" default="20">
2714                        <description><![CDATA[add node mutation: probability of adding a division]]></description>
2715                </element>
2716                <element name="f4_mut_add_neupar" type="float" min="0" max="100" default="5">
2717                        <description><![CDATA[add node mutation: probability of adding a neuron property/modifier]]></description>
2718                </element>
2719                <element name="f4_mut_add_rep" type="float" min="0" max="100" default="10">
2720                        <description><![CDATA[add node mutation: probability of adding a repetition]]></description>
2721                </element>
2722                <element name="f4_mut_add_simp" type="float" min="0" max="100" default="50">
2723                        <description><![CDATA[add node mutation: probability of adding a random, simple gene]]></description>
2724                </element>
2725                <element name="f4_mut_del" type="float" min="0" max="100" default="20">
2726                        <description><![CDATA[mutation: probability of deleting a node]]></description>
2727                </element>
2728                <element name="f4_mut_mod" type="float" min="0" max="100" default="30">
2729                        <description><![CDATA[mutation: probability of changing a node]]></description>
2730                </element>
2731                <element name="filecomm" type="integer" min="0" max="1" default="1">
2732                        <description><![CDATA[Display comments encountered in opened files]]></description>
2733                </element>
2734                <element name="gen_extmutinfo" type="integer" min="0" max="2" default="0">
2735                        <description><![CDATA[If active, information about employed mutation method will be stored in the 'info' field of each mutated genotype.]]></description>
2736                </element>
2737                <element name="gen_hilite" type="integer" min="0" max="1" default="1">
2738                        <description><![CDATA[Use colors for genes?
2739(slows down viewing/editing of huge genotypes)]]></description>
2740                </element>
2741                <element name="gen_hist" type="integer" min="0" max="1" default="0">
2742                        <description><![CDATA[Required for phylogenetic analysis]]></description>
2743                </element>
2744                <element name="genkonw0" type="integer" min="0" max="1">
2745                        <description><![CDATA[Original Framsticks genotype format]]></description>
2746                </element>
2747                <element name="genkonw1" type="integer" min="0" max="1">
2748                        <description><![CDATA[Similarity encoding]]></description>
2749                </element>
2750                <element name="genkonw2" type="integer" min="0" max="1">
2751                        <description><![CDATA[Biological encoding]]></description>
2752                </element>
2753                <element name="genkonw3" type="integer" min="0" max="1">
2754                        <description><![CDATA[Developmental encoding]]></description>
2755                </element>
2756                <element name="genolib" type="GenePools"/>
2757                <element name="genoper_f0" type="integer" min="0" max="1">
2758                        <description><![CDATA[]]></description>
2759                </element>
2760                <element name="genoper_f1" type="integer" min="0" max="0">
2761                        <description><![CDATA[]]></description>
2762                </element>
2763                <element name="genoper_f2" type="integer" min="0" max="0">
2764                        <description><![CDATA[]]></description>
2765                </element>
2766                <element name="genoper_f3" type="integer" min="0" max="0">
2767                        <description><![CDATA[]]></description>
2768                </element>
2769                <element name="genoper_f4" type="integer" min="0" max="0">
2770                        <description><![CDATA[]]></description>
2771                </element>
2772                <element name="groupchk" type="integer" min="0" max="1"/>
2773                <element name="importchk" type="integer" min="0" max="1"/>
2774                <element name="livelib" type="Populations"/>
2775                <element name="loadchk" type="integer" min="0" max="1"/>
2776                <element name="maxjoint" type="float" min="0" max="100" default="2"/>
2777                <element name="minjoint" type="float" min="0" max="100" default="0"/>
2778                <element name="neuadd_N" type="integer" min="0" max="1">
2779                        <description><![CDATA[Standard neuron
2780
2781Characteristics:
2782   supports any number of inputs
2783   provides output value
2784   does not require location in body
2785
2786
2787Properties:
2788   Inertia (in) float 0..1
2789   Force (fo) float 0..999
2790   Sigmoid (si) float -99999..99999
2791   State (s) float -1..1]]></description>
2792                </element>
2793                <element name="neuadd_Nu" type="integer" min="0" max="1">
2794                        <description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
2795Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
2796
2797Characteristics:
2798   supports any number of inputs
2799   provides output value
2800   does not require location in body
2801
2802
2803Properties:
2804   Inertia (in) float 0..1
2805   Force (fo) float 0..999
2806   Sigmoid (si) float -99999..99999
2807   State (s) float -1..1]]></description>
2808                </element>
2809                <element name="neuadd_G" type="integer" min="0" max="1">
2810                        <description><![CDATA[Equilibrium sensor.
28110=the stick is horizontal
2812+1/-1=the stick is vertical
2813
2814Characteristics:
2815   does not use inputs
2816   provides output value
2817   should be located on a Joint
2818]]></description>
2819                </element>
2820                <element name="neuadd_T" type="integer" min="0" max="1">
2821                        <description><![CDATA[Touch sensor.
2822-1=no contact
28230=just touching
2824>0=pressing, value depends on the force applied
2825
2826Characteristics:
2827   does not use inputs
2828   provides output value
2829   should be located on a Part
2830
2831
2832Properties:
2833   Range (r) float 0..1]]></description>
2834                </element>
2835                <element name="neuadd_S" type="integer" min="0" max="1">
2836                        <description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
2837Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
2838
2839Characteristics:
2840   does not use inputs
2841   provides output value
2842   should be located on a Part
2843]]></description>
2844                </element>
2845                <element name="neuadd_*" type="integer" min="0" max="1">
2846                        <description><![CDATA[Constant value
2847
2848Characteristics:
2849   does not use inputs
2850   provides output value
2851   does not require location in body
2852]]></description>
2853                </element>
2854                <element name="neuadd_|" type="integer" min="0" max="1">
2855                        <description><![CDATA[Characteristics:
2856   uses single input
2857   does not provide output value
2858   should be located on a Joint
2859
2860
2861Properties:
2862   power (p) float 0.01..1
2863   bending range (r) float 0..1]]></description>
2864                </element>
2865                <element name="neuadd_@" type="integer" min="0" max="1">
2866                        <description><![CDATA[Characteristics:
2867   uses single input
2868   does not provide output value
2869   should be located on a Joint
2870
2871
2872Properties:
2873   power (p) float 0.01..1]]></description>
2874                </element>
2875                <element name="neuadd_D" type="integer" min="0" max="1">
2876                        <description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
2877
2878Characteristics:
2879   supports any number of inputs
2880   provides output value
2881   does not require location in body
2882]]></description>
2883                </element>
2884                <element name="neuadd_Fuzzy" type="integer" min="0" max="1">
2885                        <description><![CDATA[Refer to publications to learn about this neuron
2886
2887Characteristics:
2888   supports any number of inputs
2889   provides output value
2890   does not require location in body
2891
2892
2893Properties:
2894   number of fuzzy sets (ns) integer
2895   number of rules (nr) integer
2896   fuzzy sets (fs) string
2897   fuzzy rules (fr) string]]></description>
2898                </element>
2899                <element name="neuadd_VEye" type="integer" min="0" max="1">
2900                        <description><![CDATA[Characteristics:
2901   uses single input
2902   provides output value
2903   should be located on a Part
2904
2905
2906Properties:
2907   target.x (tx) float
2908   target.y (ty) float
2909   target.z (tz) float
2910   target shape (ts) string
2911   perspective (p) float 0.1..10
2912   scale (s) float 0.1..100
2913   show hidden lines (h) integer 0..1
2914   output lines count (each line needs four channels) (o) integer 0..99
2915   debug (d) integer 0..1]]></description>
2916                </element>
2917                <element name="neuadd_VMotor" type="integer" min="0" max="1">
2918                        <description><![CDATA[Must be connected to the VEye and properly set up.
2919
2920Characteristics:
2921   supports any number of inputs
2922   provides output value
2923   does not require location in body
2924
2925
2926Properties:
2927   number of basic features (noIF) integer
2928   number of degrees of freedom (noDim) integer
2929   parameters (params) string]]></description>
2930                </element>
2931                <element name="neuadd_Sti" type="integer" min="0" max="1">
2932                        <description><![CDATA[Characteristics:
2933   uses single input
2934   does not provide output value
2935   should be located on a Part
2936]]></description>
2937                </element>
2938                <element name="neuadd_LMu" type="integer" min="0" max="1">
2939                        <description><![CDATA[Characteristics:
2940   uses single input
2941   does not provide output value
2942   should be located on a Joint
2943
2944
2945Properties:
2946   power (p) float 0.01..1]]></description>
2947                </element>
2948                <element name="neuadd_Water" type="integer" min="0" max="1">
2949                        <description><![CDATA[Output signal:
29500=on or above water surface
29511=under water (deeper than 1)
29520..1=in the transient area just below water surface
2953
2954Characteristics:
2955   does not use inputs
2956   provides output value
2957   should be located on a Part
2958]]></description>
2959                </element>
2960                <element name="neuadd_Energy" type="integer" min="0" max="1">
2961                        <description><![CDATA[The current energy level divided by the initial energy level.
2962Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
2963
2964Characteristics:
2965   does not use inputs
2966   provides output value
2967   does not require location in body
2968]]></description>
2969                </element>
2970                <element name="neuadd_Ch" type="integer" min="0" max="1">
2971                        <description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
2972
2973Characteristics:
2974   supports any number of inputs
2975   provides output value
2976   does not require location in body
2977]]></description>
2978                </element>
2979                <element name="neuadd_ChMux" type="integer" min="0" max="1">
2980                        <description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
2981
2982Characteristics:
2983   uses 2 inputs
2984   provides output value
2985   does not require location in body
2986]]></description>
2987                </element>
2988                <element name="neuadd_ChSel" type="integer" min="0" max="1">
2989                        <description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
2990
2991Characteristics:
2992   uses single input
2993   provides output value
2994   does not require location in body
2995
2996
2997Properties:
2998   channel (ch) integer]]></description>
2999                </element>
3000                <element name="neuadd_Rnd" type="integer" min="0" max="1">
3001                        <description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
3002
3003Characteristics:
3004   does not use inputs
3005   provides output value
3006   does not require location in body
3007]]></description>
3008                </element>
3009                <element name="neuadd_Sin" type="integer" min="0" max="1">
3010                        <description><![CDATA[Output frequency = f0+input
3011
3012Characteristics:
3013   uses single input
3014   provides output value
3015   does not require location in body
3016
3017
3018Properties:
3019   base frequency (f0) float -1..1
3020   time (t) float 0..6.28319]]></description>
3021                </element>
3022                <element name="ncl_N" type="integer" min="0" max="1">
3023                        <description><![CDATA[Standard neuron
3024
3025Characteristics:
3026   supports any number of inputs
3027   provides output value
3028   does not require location in body
3029
3030
3031Properties:
3032   Inertia (in) float 0..1
3033   Force (fo) float 0..999
3034   Sigmoid (si) float -99999..99999
3035   State (s) float -1..1]]></description>
3036                </element>
3037                <element name="ncl_Nu" type="integer" min="0" max="1">
3038                        <description><![CDATA[Works like standard neuron (N) but the output value is scaled to 0...+1 instead of -1...+1.
3039Having 0 as one of the saturation states should help in "gate circuits", where input signal is passed through or blocked depending on the other singal.
3040
3041Characteristics:
3042   supports any number of inputs
3043   provides output value
3044   does not require location in body
3045
3046
3047Properties:
3048   Inertia (in) float 0..1
3049   Force (fo) float 0..999
3050   Sigmoid (si) float -99999..99999
3051   State (s) float -1..1]]></description>
3052                </element>
3053                <element name="ncl_G" type="integer" min="0" max="1">
3054                        <description><![CDATA[Equilibrium sensor.
30550=the stick is horizontal
3056+1/-1=the stick is vertical
3057
3058Characteristics:
3059   does not use inputs
3060   provides output value
3061   should be located on a Joint
3062]]></description>
3063                </element>
3064                <element name="ncl_T" type="integer" min="0" max="1">
3065                        <description><![CDATA[Touch sensor.
3066-1=no contact
30670=just touching
3068>0=pressing, value depends on the force applied
3069
3070Characteristics:
3071   does not use inputs
3072   provides output value
3073   should be located on a Part
3074
3075
3076Properties:
3077   Range (r) float 0..1]]></description>
3078                </element>
3079                <element name="ncl_S" type="integer" min="0" max="1">
3080                        <description><![CDATA[Smell sensor. Aggregated "smell of energy" experienced from all energy objects (creatures and food pieces).
3081Close objects have bigger influence than the distant ones: for each energy source, its partial feeling is proportional to its energy/(distance^2)
3082
3083Characteristics:
3084   does not use inputs
3085   provides output value
3086   should be located on a Part
3087]]></description>
3088                </element>
3089                <element name="ncl_*" type="integer" min="0" max="1">
3090                        <description><![CDATA[Constant value
3091
3092Characteristics:
3093   does not use inputs
3094   provides output value
3095   does not require location in body
3096]]></description>
3097                </element>
3098                <element name="ncl_|" type="integer" min="0" max="1">
3099                        <description><![CDATA[Characteristics:
3100   uses single input
3101   does not provide output value
3102   should be located on a Joint
3103
3104
3105Properties:
3106   power (p) float 0.01..1
3107   bending range (r) float 0..1]]></description>
3108                </element>
3109                <element name="ncl_@" type="integer" min="0" max="1">
3110                        <description><![CDATA[Characteristics:
3111   uses single input
3112   does not provide output value
3113   should be located on a Joint
3114
3115
3116Properties:
3117   power (p) float 0.01..1]]></description>
3118                </element>
3119                <element name="ncl_D" type="integer" min="0" max="1">
3120                        <description><![CDATA[Calculate the difference between the current and previous input value. Multiple inputs are aggregated with respect to their weights
3121
3122Characteristics:
3123   supports any number of inputs
3124   provides output value
3125   does not require location in body
3126]]></description>
3127                </element>
3128                <element name="ncl_Fuzzy" type="integer" min="0" max="1">
3129                        <description><![CDATA[Refer to publications to learn about this neuron
3130
3131Characteristics:
3132   supports any number of inputs
3133   provides output value
3134   does not require location in body
3135
3136
3137Properties:
3138   number of fuzzy sets (ns) integer
3139   number of rules (nr) integer
3140   fuzzy sets (fs) string
3141   fuzzy rules (fr) string]]></description>
3142                </element>
3143                <element name="ncl_VEye" type="integer" min="0" max="1">
3144                        <description><![CDATA[Characteristics:
3145   uses single input
3146   provides output value
3147   should be located on a Part
3148
3149
3150Properties:
3151   target.x (tx) float
3152   target.y (ty) float
3153   target.z (tz) float
3154   target shape (ts) string
3155   perspective (p) float 0.1..10
3156   scale (s) float 0.1..100
3157   show hidden lines (h) integer 0..1
3158   output lines count (each line needs four channels) (o) integer 0..99
3159   debug (d) integer 0..1]]></description>
3160                </element>
3161                <element name="ncl_VMotor" type="integer" min="0" max="1">
3162                        <description><![CDATA[Must be connected to the VEye and properly set up.
3163
3164Characteristics:
3165   supports any number of inputs
3166   provides output value
3167   does not require location in body
3168
3169
3170Properties:
3171   number of basic features (noIF) integer
3172   number of degrees of freedom (noDim) integer
3173   parameters (params) string]]></description>
3174                </element>
3175                <element name="ncl_Sti" type="integer" min="0" max="1">
3176                        <description><![CDATA[Characteristics:
3177   uses single input
3178   does not provide output value
3179   should be located on a Part
3180]]></description>
3181                </element>
3182                <element name="ncl_LMu" type="integer" min="0" max="1">
3183                        <description><![CDATA[Characteristics:
3184   uses single input
3185   does not provide output value
3186   should be located on a Joint
3187
3188
3189Properties:
3190   power (p) float 0.01..1]]></description>
3191                </element>
3192                <element name="ncl_Water" type="integer" min="0" max="1">
3193                        <description><![CDATA[Output signal:
31940=on or above water surface
31951=under water (deeper than 1)
31960..1=in the transient area just below water surface
3197
3198Characteristics:
3199   does not use inputs
3200   provides output value
3201   should be located on a Part
3202]]></description>
3203                </element>
3204                <element name="ncl_Energy" type="integer" min="0" max="1">
3205                        <description><![CDATA[The current energy level divided by the initial energy level.
3206Usually falls from initial 1.0 down to 0.0 and then the creature dies. It can rise above 1.0 if enough food is ingested
3207
3208Characteristics:
3209   does not use inputs
3210   provides output value
3211   does not require location in body
3212]]></description>
3213                </element>
3214                <element name="ncl_Ch" type="integer" min="0" max="1">
3215                        <description><![CDATA[Combines all input signals into a single multichannel output; Note: ChSel and ChMux are the only neurons which support multiple channels. Other neurons discard everything except the first channel.
3216
3217Characteristics:
3218   supports any number of inputs
3219   provides output value
3220   does not require location in body
3221]]></description>
3222                </element>
3223                <element name="ncl_ChMux" type="integer" min="0" max="1">
3224                        <description><![CDATA[Outputs the selected channel from the second (multichannel) input. The first input is used as the selector value (-1=select first channel, .., 1=last channel)
3225
3226Characteristics:
3227   uses 2 inputs
3228   provides output value
3229   does not require location in body
3230]]></description>
3231                </element>
3232                <element name="ncl_ChSel" type="integer" min="0" max="1">
3233                        <description><![CDATA[Outputs a single channel (selected by the "ch" parameter) from multichannel input
3234
3235Characteristics:
3236   uses single input
3237   provides output value
3238   does not require location in body
3239
3240
3241Properties:
3242   channel (ch) integer]]></description>
3243                </element>
3244                <element name="ncl_Rnd" type="integer" min="0" max="1">
3245                        <description><![CDATA[Generates random noise (subsequent random values in the range of -1..+1)
3246
3247Characteristics:
3248   does not use inputs
3249   provides output value
3250   does not require location in body
3251]]></description>
3252                </element>
3253                <element name="ncl_Sin" type="integer" min="0" max="1">
3254                        <description><![CDATA[Output frequency = f0+input
3255
3256Characteristics:
3257   uses single input
3258   provides output value
3259   does not require location in body
3260
3261
3262Properties:
3263   base frequency (f0) float -1..1
3264   time (t) float 0..6.28319]]></description>
3265                </element>
3266                <element name="nnspeed" type="float" min="0" max="1000" default="1">
3267                        <description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
3268                </element>
3269                <element name="odeairdrag" type="float" min="0" max="0.5" default="0.01">
3270                        <description><![CDATA[A drag force ("air drag") proportional to the velocity of mass centers of moving parts]]></description>
3271                </element>
3272                <element name="odecol2bounce" type="float" min="0" max="1" default="0.1"/>
3273                <element name="odecol2bouncevel" type="float" min="0" max="1" default="0.01"/>
3274                <element name="odecol2mumax" type="float" min="0" max="10" default="1">
3275                        <description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
3276                </element>
3277                <element name="odecol2mumin" type="float" min="0" max="10" default="0.1">
3278                        <description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
3279                </element>
3280                <element name="odecol2softcfm" type="float" min="0" max="1" default="0"/>
3281                <element name="odecolbounce" type="float" min="0" max="1" default="0.1"/>
3282                <element name="odecolbouncevel" type="float" min="0" max="1" default="0.01"/>
3283                <element name="odecolmumax" type="float" min="0" max="10" default="5">
3284                        <description><![CDATA[Mu coefficient for Parts with maximal friction (i.e. "FFFFF" in f1)]]></description>
3285                </element>
3286                <element name="odecolmumin" type="float" min="0" max="10" default="0.1">
3287                        <description><![CDATA[Mu coefficient for Parts with minimal friction (i.e. "fffff" in f1)]]></description>
3288                </element>
3289                <element name="odecolsoftcfm" type="float" min="0" max="1" default="0"/>
3290                <element name="odemusclemax" type="float" min="0" max="100" default="10">
3291                        <description><![CDATA[i.e. "MMMMM" if f1]]></description>
3292                </element>
3293                <element name="odemusclemin" type="float" min="0" max="100" default="0">
3294                        <description><![CDATA[i.e. "mmmmm" in f1]]></description>
3295                </element>
3296                <element name="odemusclespeed" type="float" min="0" max="10" default="1">
3297                        <description><![CDATA[Muscle state cannot change faster than the supplied value]]></description>
3298                </element>
3299                <element name="odeseed" type="integer" min="0" max="2">
3300                        <description><![CDATA[Affects collisions.
3301- 'Truly random' is closest to the standard ODE operation. Use Math.seed to influence randomness in ODE collisions
3302- 'Deterministic' automatically calculates random seed in each step based on the current simulation (world) state, which makes the simulation repeatable but more random than 'Fixed'
3303- 'Fixed' is completely deterministic and does not depend on Math.seed. This might negatively affect ODE accuracy
3304]]></description>
3305                </element>
3306                <element name="odeshape" type="integer" min="0" max="1"/>
3307                <element name="odestep" type="float" min="0.001" max="1" default="0.05"/>
3308                <element name="odewaterbuoy" type="float" min="0" max="2" default="1"/>
3309                <element name="odewaterdrag" type="float" min="0.001" max="1" default="0.5"/>
3310                <element name="overwrite" type="integer" min="0" max="1">
3311                        <description><![CDATA[Overwite existing files or create their backups]]></description>
3312                </element>
3313                <element name="randinit" type="float" min="0" max="10" default="0.01">
3314                        <description><![CDATA[Initialize all neuron states with uniform distribution random numbers]]></description>
3315                </element>
3316                <element name="resetonexpdef" type="integer" min="0" max="1" default="1">
3317                        <description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
3318When turned off: parameters from previous experiment definition will remain.]]></description>
3319                </element>
3320                <element name="running" type="integer" min="0" max="1">
3321                        <description><![CDATA[for synchronizing the user interface state]]></description>
3322                </element>
3323                <element name="signals" type="WorldSignals"/>
3324                <element name="simil_method" type="integer" min="0" max="1" default="0">
3325                        <description><![CDATA[]]></description>
3326                </element>
3327                <element name="simil_neuro" type="float" min="0" max="100" default="0.5">
3328                        <description><![CDATA[]]></description>
3329                </element>
3330                <element name="simil_partdeg" type="float" min="0" max="100" default="1">
3331                        <description><![CDATA[]]></description>
3332                </element>
3333                <element name="simil_parts" type="float" min="0" max="100" default="0">
3334                        <description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
3335                </element>
3336                <element name="simspeed" type="integer">
3337                        <description><![CDATA[steps/second]]></description>
3338                </element>
3339                <element name="simtype" type="integer" min="0" max="1" default="0">
3340                        <description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
3341ODE is Open Dynamics Engine by Russel Smith et al.
3342
3343NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
3344                </element>
3345                <element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
3346                        <description><![CDATA[Default number of samples per full angle (#1)]]></description>
3347                </element>
3348                <element name="symBetaSteps" type="integer" min="2" max="50" default="20">
3349                        <description><![CDATA[Default number of samples per full angle (#2)]]></description>
3350                </element>
3351                <element name="symPosSteps" type="integer" min="2" max="50" default="10">
3352                        <description><![CDATA[Default number of samples per stick length]]></description>
3353                </element>
3354                <element name="symResultA" type="float"/>
3355                <element name="symResultB" type="float"/>
3356                <element name="symResultC" type="float"/>
3357                <element name="symResultD" type="float"/>
3358                <element name="time" type="integer"/>
3359                <element name="touchrange" type="float" min="0" max="100" default="1"/>
3360                <element name="usercode" type="string">
3361                        <description><![CDATA[This script overrides the experiment definition]]></description>
3362                </element>
3363                <element name="vmdebug" type="integer" min="0" max="1"/>
3364                <element name="world" type="World"/>
3365                <element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
3366                <element name="wrldg" type="float" min="0" max="10" default="1">
3367                        <description><![CDATA[You can adjust gravity for your experiments.
3368The "official" setting used to evaluate and compare creatures is 1.]]></description>
3369                </element>
3370                <element name="wrldmap" type="string">
3371                        <description><![CDATA[Description of the world (Type: Blocks or Heighfield). Enter
3372   r <sizex> <sizey> [seed]
3373to generate a random landscape, or
3374   m <sizex> <sizey> digits
3375   M <sizex> <sizey> numbers
3376to provide height values.
3377
3378See also the WorldMap object.]]></description>
3379                </element>
3380                <element name="wrldsiz" type="float" min="10" max="1000" default="20">
3381                        <description><![CDATA[Side length of the world]]></description>
3382                </element>
3383                <element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
3384                <element name="wrldwat" type="float" min="-20" max="30" default="-1"/>
3385                <element name="add" function="true"/>
3386                <element name="addGroup" function="true"/>
3387                <element name="beep" function="true" type="void">
3388                        <description><![CDATA[Plays a default system sound]]></description>
3389<arguments/></element>
3390                <element name="calculateSymmetry" function="true" type="float">
3391                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
3392Note: may take a long time for large creatures.]]></description>
3393                        <arguments>
3394                                <argument name="model" type="Model"/>
3395                        </arguments>
3396                </element>
3397                <element name="calculateSymmetry2" function="true" type="float">
3398                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using specified precision parameters. Returns the symmetry plane, too (sets symResultA,B,C,D).
3399Note: may take a long time for large creatures.]]></description>
3400                        <arguments>
3401                                <argument name="model" type="Model"/>
3402                                <argument name="posSteps" type="integer"/>
3403                                <argument name="alphaSteps" type="integer"/>
3404                                <argument name="betaSteps" type="integer"/>
3405                        </arguments>
3406                </element>
3407                <element name="calculateSymmetryForPlane" function="true" type="float">
3408                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model and given a specific plane defined by coefficients A, B, C, D.]]></description>
3409                        <arguments>
3410                                <argument name="model" type="Model"/>
3411                                <argument name="A" type="float"/>
3412                                <argument name="B" type="float"/>
3413                                <argument name="C" type="float"/>
3414                                <argument name="D" type="float"/>
3415                        </arguments>
3416                </element>
3417                <element name="checkpoint" function="true" type="void">
3418                        <description><![CDATA[This function was previously called "autosave".]]></description>
3419<arguments/></element>
3420                <element name="clear" function="true"/>
3421                <element name="crossOver" function="true" type="Geno">
3422                        <description><![CDATA[returns crossed over genotype]]></description>
3423                        <arguments>
3424                                <argument type="Geno"/>
3425                                <argument type="Geno"/>
3426                        </arguments>
3427                </element>
3428                <element name="eval" function="true" type="void">
3429                        <arguments>
3430                                <argument name="script expression" type="string"/>
3431                        </arguments>
3432                </element>
3433                <element name="evaluateDistance" function="true" type="float">
3434                        <description><![CDATA[calculate dissimilarity between two models created from Geno objects]]></description>
3435                        <arguments>
3436                                <argument type="Geno"/>
3437                                <argument type="Geno"/>
3438                        </arguments>
3439                </element>
3440                <element name="export" function="true" type="void">
3441                        <description><![CDATA[Save some data to file. arguments:
3442- filename
3443- flags: composed of the following bit values:
3444   1 - experiment (works like "save" and all other bits are ignored)
3445   2 - genotypes
3446   4 - simulator parameters
3447   8 - simulator stats
3448   16 - genepool settings
3449   32 - population settings
3450   64 - do autosave
3451- selected genepool
3452- selected population]]></description>
3453                        <arguments>
3454                                <argument name="filename" type="string"/>
3455                                <argument name="options" type="integer"/>
3456                                <argument name="genepool" type="integer"/>
3457                                <argument name="population" type="integer"/>
3458                        </arguments>
3459                </element>
3460                <element name="getSimplest" function="true" type="Geno">
3461                        <description><![CDATA[returns the simplest genotype for a given encoding (format). 0 means f0, 4 means f4, etc.]]></description>
3462                        <arguments>
3463                                <argument name="format" type="integer"/>
3464                        </arguments>
3465                </element>
3466                <element name="import" function="true" type="void">
3467                        <description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
3468 1 - experiment (works like "load" and can reset the simulator state!)
3469 2 - genotypes
3470 4 - simulator parameters
3471 8 - genepool settings
3472 16 - population settings
3473 32 - new groups will be created for imported genepools and populations
347464 - allow switching to a different expdef while importing parameters (4)
3475
3476The standard behavior (without the second argument) is to import genotypes, parameters, and genepool and population settings (2+4+8+16). Note that "64" is not included by default, because the expdef change resets all simulator parameters, which contradicts the usual meaning of "import" in Framsticks ("add data", as opposed to "load" meaning "replace data"). Moreover, using the "64" option in scripts can be dengerous, especially all expdef and show scripts should always declare the proper expdef name in their header rather than change the expdef directly. Without the "64" option, it is always safe to "import" any file in a script regardless of the current simulator state.]]></description>
3477                        <arguments>
3478                                <argument name="filename" type="string"/>
3479                                <argument name="options" type="integer"/>
3480                        </arguments>
3481                </element>
3482                <element name="init" function="true" type="void">
3483                        <description><![CDATA[Performs initialization procedures, like resetting counters, states, gene pools, etc.]]></description>
3484<arguments/></element>
3485                <element name="load" function="true" type="void">
3486                        <description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
3487                        <arguments>
3488                                <argument name="filename" type="string"/>
3489                        </arguments>
3490                </element>
3491                <element name="loadexpdef" function="true" type="void"><arguments/></element>
3492                <element name="loadNeurons" function="true" type="void">
3493                        <arguments>
3494                                <argument name="directory path" type="string"/>
3495                        </arguments>
3496                </element>
3497                <element name="message" function="true" type="void">
3498                        <description><![CDATA[The second argument can be:
3499 -1 = debugging message
3500 0 = information
3501 1 = warning
3502 2 = error
3503 3 = critical error]]></description>
3504                        <arguments>
3505                                <argument name="text" type="string"/>
3506                                <argument name="level" type="integer"/>
3507                        </arguments>
3508                </element>
3509                <element name="mutate" function="true" type="Geno">
3510                        <description><![CDATA[returns mutated Geno object from supplied Geno]]></description>
3511                        <arguments>
3512                                <argument type="Geno"/>
3513                        </arguments>
3514                </element>
3515                <element name="new" function="true" type="Simulator"><arguments/></element>
3516                <element name="operReport" function="true" type="void">
3517                        <description><![CDATA[Show available genetic operators]]></description>
3518<arguments/></element>
3519                <element name="print" function="true" type="void">
3520                        <description><![CDATA[One argument: message to be printed]]></description>
3521                        <arguments>
3522                                <argument name="text" type="string"/>
3523                        </arguments>
3524                </element>
3525                <element name="rayIntersection" function="true" type="float">
3526                        <arguments>
3527                                <argument name="position x" type="float"/>
3528                                <argument name="position y" type="float"/>
3529                                <argument name="position z" type="float"/>
3530                                <argument name="direction x" type="float"/>
3531                                <argument name="direction y" type="float"/>
3532                                <argument name="direction z" type="float"/>
3533                                <argument name="max distance" type="float"/>
3534                        </arguments>
3535                </element>
3536                <element name="remove" function="true"/>
3537                <element name="removeGroup" function="true"/>
3538                <element name="resetToDefaults" function="true" type="void">
3539                        <description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
3540<arguments/></element>
3541                <element name="save" function="true" type="void">
3542                        <description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
3543                        <arguments>
3544                                <argument name="filename" type="string"/>
3545                        </arguments>
3546                </element>
3547                <element name="sleep" function="true" type="void">
3548                        <description><![CDATA[Suspends the execution for a specified interval]]></description>
3549                        <arguments>
3550                                <argument name="milliseconds" type="integer"/>
3551                        </arguments>
3552                </element>
3553                <element name="sound" function="true" type="void">
3554                        <description><![CDATA[Generates a simple tone on the speaker]]></description>
3555                        <arguments>
3556                                <argument name="freqency in Hz" type="integer"/>
3557                                <argument name="length in milliseconds" type="integer"/>
3558                        </arguments>
3559                </element>
3560                <element name="start" function="true" type="void">
3561                        <description><![CDATA[called by the user interface]]></description>
3562<arguments/></element>
3563                <element name="step" function="true" type="void"><arguments/></element>
3564                <element name="stop" function="true" type="void">
3565                        <description><![CDATA[the expdef script calls this to stop simulation]]></description>
3566<arguments/></element>
3567                <element name="toHTML" function="true" type="string">
3568                        <description><![CDATA[returns genotype expressed as colored HTML]]></description>
3569                        <arguments>
3570                                <argument type="string"/>
3571                        </arguments>
3572                </element>
3573                <element name="toHTMLshort" function="true" type="string">
3574                        <description><![CDATA[returns genotype (abbreviated if needed) expressed as colored HTML]]></description>
3575                        <arguments>
3576                                <argument type="string"/>
3577                        </arguments>
3578                </element>
3579                <element name="validate" function="true" type="Geno">
3580                        <description><![CDATA[returns validated (if possible) Geno object from supplied Geno]]></description>
3581                        <arguments>
3582                                <argument type="Geno"/>
3583                        </arguments>
3584                </element>
3585                <element name="wrldchg" function="true" type="void"><arguments/></element>
3586        </type>
3587        <type name="Similarity" context="Global context">
3588                <element name="simil_method" type="integer" min="0" max="1" default="0">
3589                        <description><![CDATA[]]></description>
3590                </element>
3591                <element name="simil_neuro" type="float" min="0" max="100" default="0.5">
3592                        <description><![CDATA[]]></description>
3593                </element>
3594                <element name="simil_partdeg" type="float" min="0" max="100" default="1">
3595                        <description><![CDATA[]]></description>
3596                </element>
3597                <element name="simil_parts" type="float" min="0" max="100" default="0">
3598                        <description><![CDATA[Differing number of parts is also handled by the 'part degree' similarity component.]]></description>
3599                </element>
3600                <element name="evaluateDistance" function="true" type="float">
3601                        <description><![CDATA[calculate dissimilarity between two models created from Geno objects]]></description>
3602                        <arguments>
3603                                <argument type="Geno"/>
3604                                <argument type="Geno"/>
3605                        </arguments>
3606                </element>
3607        </type>
3608        <type name="Simulator" context="Global context">
3609<description><![CDATA[The Framsticks simulator.]]></description>
3610                <element name="autosaveperiod" type="integer" min="0" max="100000">
3611                        <description><![CDATA[Save simulation state once every n-th event
3612(events are defined by the script. For 'standard.expdef' it is after each death).
3613Save EXPT file first to initialize name for autosave files.]]></description>
3614                </element>
3615                <element name="createrr" type="integer" min="0" max="2" default="1"/>
3616                <element name="creatwarnfail" type="integer" min="0" max="1">
3617                        <description><![CDATA[Creatures grown with warnings will not be simulated.]]></description>
3618                </element>
3619                <element name="expdef" type="string">
3620                        <description><![CDATA[Choose the experiment framework
3621(in Windows GUI, confirm by pressing 'Apply')
3622
3623Stop the simulation before selecting another experiment definition.
3624It is a good practice to initialize the experiment before running the simulation.]]></description>
3625                </element>
3626                <element name="expdef_info" type="string"/>
3627                <element name="expdef_title" type="string"/>
3628                <element name="filecomm" type="integer" min="0" max="1" default="1">
3629                        <description><![CDATA[Display comments encountered in opened files]]></description>
3630                </element>
3631                <element name="genolib" type="GenePools"/>
3632                <element name="groupchk" type="integer" min="0" max="1"/>
3633                <element name="importchk" type="integer" min="0" max="1"/>
3634                <element name="livelib" type="Populations"/>
3635                <element name="loadchk" type="integer" min="0" max="1"/>
3636                <element name="maxjoint" type="float" min="0" max="100" default="2"/>
3637                <element name="minjoint" type="float" min="0" max="100" default="0"/>
3638                <element name="overwrite" type="integer" min="0" max="1">
3639                        <description><![CDATA[Overwite existing files or create their backups]]></description>
3640                </element>
3641                <element name="resetonexpdef" type="integer" min="0" max="1" default="1">
3642                        <description><![CDATA[If turned on: when a new experiment definition is selected, default values are loaded for most of the simulator parameters, and gene pools and populations are cleared.
3643When turned off: parameters from previous experiment definition will remain.]]></description>
3644                </element>
3645                <element name="running" type="integer" min="0" max="1">
3646                        <description><![CDATA[for synchronizing the user interface state]]></description>
3647                </element>
3648                <element name="simspeed" type="integer">
3649                        <description><![CDATA[steps/second]]></description>
3650                </element>
3651                <element name="time" type="integer"/>
3652                <element name="usercode" type="string">
3653                        <description><![CDATA[This script overrides the experiment definition]]></description>
3654                </element>
3655                <element name="vmdebug" type="integer" min="0" max="1"/>
3656                <element name="world" type="World"/>
3657                <element name="beep" function="true" type="void">
3658                        <description><![CDATA[Plays a default system sound]]></description>
3659<arguments/></element>
3660                <element name="checkpoint" function="true" type="void">
3661                        <description><![CDATA[This function was previously called "autosave".]]></description>
3662<arguments/></element>
3663                <element name="eval" function="true" type="void">
3664                        <arguments>
3665                                <argument name="script expression" type="string"/>
3666                        </arguments>
3667                </element>
3668                <element name="export" function="true" type="void">
3669                        <description><![CDATA[Save some data to file. arguments:
3670- filename
3671- flags: composed of the following bit values:
3672   1 - experiment (works like "save" and all other bits are ignored)
3673   2 - genotypes
3674   4 - simulator parameters
3675   8 - simulator stats
3676   16 - genepool settings
3677   32 - population settings
3678   64 - do autosave
3679- selected genepool
3680- selected population]]></description>
3681                        <arguments>
3682                                <argument name="filename" type="string"/>
3683                                <argument name="options" type="integer"/>
3684                                <argument name="genepool" type="integer"/>
3685                                <argument name="population" type="integer"/>
3686                        </arguments>
3687                </element>
3688                <element name="import" function="true" type="void">
3689                        <description><![CDATA[Load some data from file. The second optional argument selects what section(s) will be imported:
3690 1 - experiment (works like "load" and can reset the simulator state!)
3691 2 - genotypes
3692 4 - simulator parameters
3693 8 - genepool settings
3694 16 - population settings
3695 32 - new groups will be created for imported genepools and populations
369664 - allow switching to a different expdef while importing parameters (4)
3697
3698The standard behavior (without the second argument) is to import genotypes, parameters, and genepool and population settings (2+4+8+16). Note that "64" is not included by default, because the expdef change resets all simulator parameters, which contradicts the usual meaning of "import" in Framsticks ("add data", as opposed to "load" meaning "replace data"). Moreover, using the "64" option in scripts can be dengerous, especially all expdef and show scripts should always declare the proper expdef name in their header rather than change the expdef directly. Without the "64" option, it is always safe to "import" any file in a script regardless of the current simulator state.]]></description>
3699                        <arguments>
3700                                <argument name="filename" type="string"/>
3701                                <argument name="options" type="integer"/>
3702                        </arguments>
3703                </element>
3704                <element name="init" function="true" type="void">
3705                        <description><![CDATA[Performs initialization procedures, like resetting counters, states, gene pools, etc.]]></description>
3706<arguments/></element>
3707                <element name="load" function="true" type="void">
3708                        <description><![CDATA[Load experiment file (calls onExpLoad() in the current experiment definition). This function is intended to replace the simulator state; the old state is cleared by automatically calling "resetToDefaults()" (only if "resetonexpdef" is enabled). Use "import" if you don't want to loose the old simulator state.]]></description>
3709                        <arguments>
3710                                <argument name="filename" type="string"/>
3711                        </arguments>
3712                </element>
3713                <element name="loadexpdef" function="true" type="void"><arguments/></element>
3714                <element name="loadNeurons" function="true" type="void">
3715                        <arguments>
3716                                <argument name="directory path" type="string"/>
3717                        </arguments>
3718                </element>
3719                <element name="message" function="true" type="void">
3720                        <description><![CDATA[The second argument can be:
3721 -1 = debugging message
3722 0 = information
3723 1 = warning
3724 2 = error
3725 3 = critical error]]></description>
3726                        <arguments>
3727                                <argument name="text" type="string"/>
3728                                <argument name="level" type="integer"/>
3729                        </arguments>
3730                </element>
3731                <element name="new" function="true" type="Simulator"><arguments/></element>
3732                <element name="print" function="true" type="void">
3733                        <description><![CDATA[One argument: message to be printed]]></description>
3734                        <arguments>
3735                                <argument name="text" type="string"/>
3736                        </arguments>
3737                </element>
3738                <element name="resetToDefaults" function="true" type="void">
3739                        <description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
3740<arguments/></element>
3741                <element name="save" function="true" type="void">
3742                        <description><![CDATA[Save experiment file (calls onExpSave() in the current experiment definition)]]></description>
3743                        <arguments>
3744                                <argument name="filename" type="string"/>
3745                        </arguments>
3746                </element>
3747                <element name="sleep" function="true" type="void">
3748                        <description><![CDATA[Suspends the execution for a specified interval]]></description>
3749                        <arguments>
3750                                <argument name="milliseconds" type="integer"/>
3751                        </arguments>
3752                </element>
3753                <element name="sound" function="true" type="void">
3754                        <description><![CDATA[Generates a simple tone on the speaker]]></description>
3755                        <arguments>
3756                                <argument name="freqency in Hz" type="integer"/>
3757                                <argument name="length in milliseconds" type="integer"/>
3758                        </arguments>
3759                </element>
3760                <element name="start" function="true" type="void">
3761                        <description><![CDATA[called by the user interface]]></description>
3762<arguments/></element>
3763                <element name="step" function="true" type="void"><arguments/></element>
3764                <element name="stop" function="true" type="void">
3765                        <description><![CDATA[the expdef script calls this to stop simulation]]></description>
3766<arguments/></element>
3767        </type>
3768        <type name="stats" context="Global context">
3769                <element name="changedProperty" type="integer"/>
3770                <element name="changedPropertyId" type="string"/>
3771                <element name="gen_count" type="integer">
3772                        <description><![CDATA[]]></description>
3773                </element>
3774                <element name="gen_mfailed" type="integer">
3775                        <description><![CDATA[couldn't be performed]]></description>
3776                </element>
3777                <element name="gen_minvalid" type="integer">
3778                        <description><![CDATA[couldn't be repaired]]></description>
3779                </element>
3780                <element name="gen_mutimpr" type="float">
3781                        <description><![CDATA[total cumulative mutation change]]></description>
3782                </element>
3783                <element name="gen_mvalid" type="integer">
3784                        <description><![CDATA[]]></description>
3785                </element>
3786                <element name="gen_mvalidated" type="integer">
3787                        <description><![CDATA[]]></description>
3788                </element>
3789                <element name="gen_xofailed" type="integer">
3790                        <description><![CDATA[couldn't be performed]]></description>
3791                </element>
3792                <element name="gen_xoimpr" type="float">
3793                        <description><![CDATA[total cumulative crossover change]]></description>
3794                </element>
3795                <element name="gen_xoinvalid" type="integer">
3796                        <description><![CDATA[couldn't be repaired]]></description>
3797                </element>
3798                <element name="gen_xovalid" type="integer">
3799                        <description><![CDATA[]]></description>
3800                </element>
3801                <element name="gen_xovalidated" type="integer">
3802                        <description><![CDATA[]]></description>
3803                </element>
3804                <element name="st_avg_c_velocity" type="float"/>
3805                <element name="st_avg_c_vertpos" type="float"/>
3806                <element name="st_avg_c_vertvelocity" type="float"/>
3807                <element name="st_avg_center_x" type="float"/>
3808                <element name="st_avg_center_y" type="float"/>
3809                <element name="st_avg_center_z" type="float"/>
3810                <element name="st_avg_distance" type="float"/>
3811                <element name="st_avg_fit" type="float"/>
3812                <element name="st_avg_fit2" type="float"/>
3813                <element name="st_avg_gnum" type="float"/>
3814                <element name="st_avg_instances" type="float"/>
3815                <element name="st_avg_lifespan" type="float"/>
3816                <element name="st_avg_num" type="float"/>
3817                <element name="st_avg_numconnections" type="float"/>
3818                <element name="st_avg_numjoints" type="float"/>
3819                <element name="st_avg_numneurons" type="float"/>
3820                <element name="st_avg_numparts" type="float"/>
3821                <element name="st_avg_pos_x" type="float"/>
3822                <element name="st_avg_pos_y" type="float"/>
3823                <element name="st_avg_pos_z" type="float"/>
3824                <element name="st_avg_size_x" type="float"/>
3825                <element name="st_avg_size_y" type="float"/>
3826                <element name="st_avg_size_z" type="float"/>
3827                <element name="st_avg_velocity" type="float"/>
3828                <element name="st_avg_vertpos" type="float"/>
3829                <element name="st_avg_vertvel" type="float"/>
3830                <element name="st_count" type="integer"/>
3831                <element name="st_max_c_velocity" type="float"/>
3832                <element name="st_max_c_vertpos" type="float"/>
3833                <element name="st_max_c_vertvelocity" type="float"/>
3834                <element name="st_max_center_x" type="float"/>
3835                <element name="st_max_center_y" type="float"/>
3836                <element name="st_max_center_z" type="float"/>
3837                <element name="st_max_distance" type="float"/>
3838                <element name="st_max_fit" type="float"/>
3839                <element name="st_max_fit2" type="float"/>
3840                <element name="st_max_gnum" type="float"/>
3841                <element name="st_max_instances" type="float"/>
3842                <element name="st_max_lifespan" type="float"/>
3843                <element name="st_max_num" type="float"/>
3844                <element name="st_max_numconnections" type="float"/>
3845                <element name="st_max_numjoints" type="float"/>
3846                <element name="st_max_numneurons" type="float"/>
3847                <element name="st_max_numparts" type="float"/>
3848                <element name="st_max_pos_x" type="float"/>
3849                <element name="st_max_pos_y" type="float"/>
3850                <element name="st_max_pos_z" type="float"/>
3851                <element name="st_max_size_x" type="float"/>
3852                <element name="st_max_size_y" type="float"/>
3853                <element name="st_max_size_z" type="float"/>
3854                <element name="st_max_velocity" type="float"/>
3855                <element name="st_max_vertpos" type="float"/>
3856                <element name="st_max_vertvel" type="float"/>
3857                <element name="st_min_c_velocity" type="float"/>
3858                <element name="st_min_c_vertpos" type="float"/>
3859                <element name="st_min_c_vertvelocity" type="float"/>
3860                <element name="st_min_center_x" type="float"/>
3861                <element name="st_min_center_y" type="float"/>
3862                <element name="st_min_center_z" type="float"/>
3863                <element name="st_min_distance" type="float"/>
3864                <element name="st_min_fit" type="float"/>
3865                <element name="st_min_fit2" type="float"/>
3866                <element name="st_min_gnum" type="float"/>
3867                <element name="st_min_instances" type="float"/>
3868                <element name="st_min_lifespan" type="float"/>
3869                <element name="st_min_num" type="float"/>
3870                <element name="st_min_numconnections" type="float"/>
3871                <element name="st_min_numjoints" type="float"/>
3872                <element name="st_min_numneurons" type="float"/>
3873                <element name="st_min_numparts" type="float"/>
3874                <element name="st_min_pos_x" type="float"/>
3875                <element name="st_min_pos_y" type="float"/>
3876                <element name="st_min_pos_z" type="float"/>
3877                <element name="st_min_size_x" type="float"/>
3878                <element name="st_min_size_y" type="float"/>
3879                <element name="st_min_size_z" type="float"/>
3880                <element name="st_min_velocity" type="float"/>
3881                <element name="st_min_vertpos" type="float"/>
3882                <element name="st_min_vertvel" type="float"/>
3883                <element name="add" function="true"/>
3884                <element name="addGroup" function="true"/>
3885                <element name="clear" function="true"/>
3886                <element name="clrstats" function="true" type="void">
3887                        <description><![CDATA[]]></description>
3888<arguments/></element>
3889                <element name="remove" function="true"/>
3890                <element name="removeGroup" function="true"/>
3891        </type>
3892        <type name="String" context="Global context">
3893<description><![CDATA[String functions library.]]></description>
3894                <element name="char" function="true" type="string">
3895                        <arguments>
3896                                <argument type="integer"/>
3897                        </arguments>
3898                </element>
3899                <element name="code" function="true" type="integer">
3900                        <arguments>
3901                                <argument type="string"/>
3902                        </arguments>
3903                </element>
3904                <element name="format" function="true" type="string">
3905                        <description><![CDATA[Works like the standard C library "sprintf()" but only one %-argument is accepted.
3906Format string: %[-][+][0][width[.precision]]type
3907 -: left adjust (default is right adjust)
3908 +: place a sign (+ or -) before a number
3909 0: the value should be zero padded
3910 width: minimum field width
3911 precision: minimum number of decimal digits
3912 type: d=decimal integer, x/X=hexadecimal integer, f/g=floating point number, e="scientific" style floating point, t=time
3913Examples:
3914 String.format("|%07.2f|",Math.pi) -> ="|0003.14|"
3915 String.format("|%04x|",255) -> ="|00ff|"
3916 String.format("|%7s|","text") -> ="|   text|"
3917 String.format("|%-7d|",12345) -> ="|12345  |"
3918 String.format("%t",Math.time) -> ="Sun Apr 29 19:22:02 2007"
3919 String.format("%T",Math.time) -> ="2007-05-29 19:22:02"
3920]]></description>
3921                        <arguments>
3922                                <argument name="format" type="string"/>
3923                                <argument name="value" type="untyped"/>
3924                        </arguments>
3925                </element>
3926                <element name="indexOf" function="true" type="integer">
3927                        <description><![CDATA[String.indexOf("abcdef","cd") -> 2
3928String.indexOf("abcdef","dc") -> -1
3929]]></description>
3930                        <arguments>
3931                                <argument type="string"/>
3932                                <argument name="substring" type="string"/>
3933                        </arguments>
3934                </element>
3935                <element name="indexOfStart" function="true" type="integer">
3936                        <description><![CDATA[String.indexOfStart("abcdef","cd",1) -> 2
3937String.indexOfStart("abcdef","cd",3) -> -1
3938]]></description>
3939                        <arguments>
3940                                <argument type="string"/>
3941                                <argument name="substring" type="string"/>
3942                                <argument name="start index" type="integer"/>
3943                        </arguments>
3944                </element>
3945                <element name="left" function="true" type="string">
3946                        <description><![CDATA[String.left("abcdef",3) -> ="abc"]]></description>
3947                        <arguments>
3948                                <argument type="string"/>
3949                                <argument name="number of characters" type="integer"/>
3950                        </arguments>
3951                </element>
3952                <element name="len" function="true" type="integer">
3953                        <description><![CDATA[String.len("abcdef") -> 6]]></description>
3954                        <arguments>
3955                                <argument type="string"/>
3956                        </arguments>
3957                </element>
3958                <element name="parseFloat" function="true" type="float">
3959                        <arguments>
3960                                <argument type="string"/>
3961                        </arguments>
3962                </element>
3963                <element name="parseInt" function="true" type="integer">
3964                        <arguments>
3965                                <argument type="string"/>
3966                        </arguments>
3967                </element>
3968                <element name="replace" function="true" type="string">
3969                        <description><![CDATA[String.replace("abcdef","cd","X") -> "abXef"]]></description>
3970                        <arguments>
3971                                <argument name="search" type="string"/>
3972                                <argument name="substitute" type="string"/>
3973                        </arguments>
3974                </element>
3975                <element name="right" function="true" type="string">
3976                        <description><![CDATA[String.right("abcdef",3) -> ="def"]]></description>
3977                        <arguments>
3978                                <argument type="string"/>
3979                                <argument name="number of characters" type="integer"/>
3980                        </arguments>
3981                </element>
3982                <element name="split" function="true" type="Vector">
3983                        <description><![CDATA[return the vector of substrings, cut at separator positions.
3984subsequent separators give empty words: split("word1---word2-word3","-") -> ["word1","","","word2","word3"]]]></description>
3985                        <arguments>
3986                                <argument type="string"/>
3987                                <argument name="word separator" type="string"/>
3988                        </arguments>
3989                </element>
3990                <element name="split2" function="true" type="Vector">
3991                        <description><![CDATA[return the vector of substrings, cut at separator positions.
3992subsequent separators are treated as one: split2("word1---word2-word3","-") -> ["word1","word2","word3"]]]></description>
3993                        <arguments>
3994                                <argument type="string"/>
3995                                <argument name="word separator" type="string"/>
3996                        </arguments>
3997                </element>
3998                <element name="substr" function="true" type="string">
3999                        <description><![CDATA[String.substr("abcdef",3,2) -> ="de"]]></description>
4000                        <arguments>
4001                                <argument type="string"/>
4002                                <argument name="first character" type="integer"/>
4003                                <argument name="number of characters" type="integer"/>
4004                        </arguments>
4005                </element>
4006                <element name="toLower" function="true" type="string">
4007                        <arguments>
4008                                <argument type="string"/>
4009                        </arguments>
4010                </element>
4011                <element name="toUpper" function="true" type="string">
4012                        <arguments>
4013                                <argument type="string"/>
4014                        </arguments>
4015                </element>
4016        </type>
4017        <type name="Symmetry" context="Global context">
4018                <element name="symAlphaSteps" type="integer" min="2" max="50" default="20">
4019                        <description><![CDATA[Default number of samples per full angle (#1)]]></description>
4020                </element>
4021                <element name="symBetaSteps" type="integer" min="2" max="50" default="20">
4022                        <description><![CDATA[Default number of samples per full angle (#2)]]></description>
4023                </element>
4024                <element name="symPosSteps" type="integer" min="2" max="50" default="10">
4025                        <description><![CDATA[Default number of samples per stick length]]></description>
4026                </element>
4027                <element name="symResultA" type="float"/>
4028                <element name="symResultB" type="float"/>
4029                <element name="symResultC" type="float"/>
4030                <element name="symResultD" type="float"/>
4031                <element name="calculateSymmetry" function="true" type="float">
4032                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using default precision parameters (symPosSteps,symAlphaSteps,symBetaSteps). Returns the symmetry plane, too (sets symResultA,B,C,D).
4033Note: may take a long time for large creatures.]]></description>
4034                        <arguments>
4035                                <argument name="model" type="Model"/>
4036                        </arguments>
4037                </element>
4038                <element name="calculateSymmetry2" function="true" type="float">
4039                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model using specified precision parameters. Returns the symmetry plane, too (sets symResultA,B,C,D).
4040Note: may take a long time for large creatures.]]></description>
4041                        <arguments>
4042                                <argument name="model" type="Model"/>
4043                                <argument name="posSteps" type="integer"/>
4044                                <argument name="alphaSteps" type="integer"/>
4045                                <argument name="betaSteps" type="integer"/>
4046                        </arguments>
4047                </element>
4048                <element name="calculateSymmetryForPlane" function="true" type="float">
4049                        <description><![CDATA[Returns bilateral symmetry (0.0 .. 1.0) for a given Model and given a specific plane defined by coefficients A, B, C, D.]]></description>
4050                        <arguments>
4051                                <argument name="model" type="Model"/>
4052                                <argument name="A" type="float"/>
4053                                <argument name="B" type="float"/>
4054                                <argument name="C" type="float"/>
4055                                <argument name="D" type="float"/>
4056                        </arguments>
4057                </element>
4058        </type>
4059        <type name="Vector" context="Global context">
4060<description><![CDATA[Vector is 1-dimensional array, indexed by integer value (starting from 0). Multidimensional arrays can be simulated by putting other Vector objects into the Vector.
4061Example:
4062var v=Vector.new();
4063v.add(123); v.add("string");]]></description>
4064                <element name="avg" type="float"/>
4065                <element name="size" type="integer"/>
4066                <element name="stdev" type="float">
4067                        <description><![CDATA[=sqrt(sum((element[i]-avg)^2)/(size-1)) which is estimated population std.dev. from sample std.dev.]]></description>
4068                </element>
4069                <element name="toString" type="string"/>
4070                <element name="add" function="true" type="void">
4071                        <arguments>
4072                                <argument name="value" type="untyped"/>
4073                        </arguments>
4074                </element>
4075                <element name="clear" function="true" type="void"><arguments/></element>
4076                <element name="find" function="true" type="integer">
4077                        <description><![CDATA[returns the element index or -1 if not found]]></description>
4078                        <arguments>
4079                                <argument name="value" type="untyped"/>
4080                        </arguments>
4081                </element>
4082                <element name="get" function="true" type="untyped">
4083                        <arguments>
4084                                <argument name="position" type="integer"/>
4085                        </arguments>
4086                </element>
4087                <element name="new" function="true" type="Vector"><arguments/></element>
4088                <element name="remove" function="true" type="void">
4089                        <arguments>
4090                                <argument name="position" type="integer"/>
4091                        </arguments>
4092                </element>
4093                <element name="set" function="true" type="void">
4094                        <arguments>
4095                                <argument name="position" type="integer"/>
4096                                <argument name="value" type="untyped"/>
4097                        </arguments>
4098                </element>
4099        </type>
4100        <type name="World" context="Global context">
4101<description><![CDATA[Environment properties.]]></description>
4102                <element name="nnspeed" type="float" min="0" max="1000" default="1">
4103                        <description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
4104                </element>
4105                <element name="signals" type="WorldSignals"/>
4106                <element name="simtype" type="integer" min="0" max="1" default="0">
4107                        <description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
4108ODE is Open Dynamics Engine by Russel Smith et al.
4109
4110NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
4111                </element>
4112                <element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
4113                <element name="wrldg" type="float" min="0" max="10" default="1">
4114                        <description><![CDATA[You can adjust gravity for your experiments.
4115The "official" setting used to evaluate and compare creatures is 1.]]></description>
4116                </element>
4117                <element name="wrldmap" type="string">
4118                        <description><![CDATA[Description of the world (Type: Blocks or Heighfield). Enter
4119   r <sizex> <sizey> [seed]
4120to generate a random landscape, or
4121   m <sizex> <sizey> digits
4122   M <sizex> <sizey> numbers
4123to provide height values.
4124
4125See also the WorldMap object.]]></description>
4126                </element>
4127                <element name="wrldsiz" type="float" min="10" max="1000" default="20">
4128                        <description><![CDATA[Side length of the world]]></description>
4129                </element>
4130                <element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
4131                <element name="wrldwat" type="float" min="-20" max="30" default="-1"/>
4132                <element name="wrldchg" function="true" type="void"><arguments/></element>
4133        </type>
4134        <type name="WorldMap" context="Global context">
4135<description><![CDATA[Environment details for "Blocks" and "Heightfield" world type. The most important concept is a "Map", which is the array of Map elements. Internally, Maps have more elements than could be deduced from the user-supplied World.wrldsiz, as additional rows of element are added to provide smooth transitions to the flat surroundings.
4136
4137Blocks: x/ysize=World.wrldsiz+4 rows of blocks (from which only 2+World.wrldsiz rows are placed within the world boundaries)
4138
4139Smooth: x/ysize=World.wrldsiz+2 rows of vertices (creating World.wrldsiz+1 rows of triangles, everything within the world boundaries)
4140]]></description>
4141                <element name="xsize" type="integer"/>
4142                <element name="ysize" type="integer"/>
4143                <element name="getHeight" function="true" type="float">
4144                        <description><![CDATA[Height at any 2d coordinate]]></description>
4145                        <arguments>
4146                                <argument name="x" type="float"/>
4147                                <argument name="y" type="float"/>
4148                        </arguments>
4149                </element>
4150                <element name="getMap" function="true" type="Object">
4151                        <description><![CDATA[retrieve map cell object]]></description>
4152                        <arguments>
4153                                <argument name="x" type="integer"/>
4154                                <argument name="y" type="integer"/>
4155                        </arguments>
4156                </element>
4157                <element name="intersect" function="true" type="Vector">
4158                        <description><![CDATA[Calculate the intersection point between the world surface and the ray projected from "3d point" towards the given direction. 3D points are actually 3-elements Vector objects. The resulting vector contains the additional fourth element - the intersection point distance. The function returns null if there is no intersection.
4159
4160See "standard_events.inc" file, which uses "intersect" for calculating the world coordinates corresponding to the user-clicked screen location.
4161Bugs: This function does not currently handle the heightfield environment correctly (works as if it was flat)]]></description>
4162                        <arguments>
4163                                <argument name="3d point" type="Vector"/>
4164                                <argument name="3d direction" type="Vector"/>
4165                                <argument name="range" type="float"/>
4166                        </arguments>
4167                </element>
4168        </type>
4169        <type name="WorldSignals" context="Global context">
4170<description><![CDATA[Use this object to create stationary signals, not associated with any moving object and receive signals from any location in the world. There are Creature and Neuro-based variants of this object that automatically operate from the creature's or neuron's position.
4171
4172See also: Signal]]></description>
4173                <element name="size" type="integer">
4174                        <description><![CDATA[Number of signals in this set.]]></description>
4175                </element>
4176                <element name="add" function="true" type="Signal">
4177                        <description><![CDATA[Create a new signal]]></description>
4178                        <arguments>
4179                                <argument name="position" type="XYZ"/>
4180                                <argument name="channel" type="string"/>
4181                        </arguments>
4182                </element>
4183                <element name="clear" function="true" type="void">
4184                        <description><![CDATA[Delete all signals]]></description>
4185<arguments/></element>
4186                <element name="get" function="true" type="Signal">
4187                        <description><![CDATA[Access individual signals (index=0 .. size-1)]]></description>
4188                        <arguments>
4189                                <argument name="index" type="integer"/>
4190                        </arguments>
4191                </element>
4192                <element name="receive" function="true" type="float">
4193                        <description><![CDATA[Receive the aggregated signal power in a given channel.]]></description>
4194                        <arguments>
4195                                <argument name="position" type="XYZ"/>
4196                                <argument name="channel" type="string"/>
4197                        </arguments>
4198                </element>
4199                <element name="receiveFilter" function="true" type="float">
4200                        <description><![CDATA[Receive the aggregated signal power in a given channel.
4201
4202Additional filtering options:
4203- Max distance only receives the neighbor signals (based on their physical location)
4204- Flavor filtering: only signals having the flavor close to the specified one will be received. The filter value is the maximum allowed difference.]]></description>
4205                        <arguments>
4206                                <argument name="position" type="XYZ"/>
4207                                <argument name="channel" type="string"/>
4208                                <argument name="max distance" type="float"/>
4209                                <argument name="flavor" type="float"/>
4210                                <argument name="filter" type="float"/>
4211                        </arguments>
4212                </element>
4213                <element name="receiveSet" function="true" type="Vector">
4214                        <description><![CDATA[Get all signals in the specified range. Returns a readonly vector object containing Signal objects (individual signals can be accessed as result[0] throught result[result.size-1]).]]></description>
4215                        <arguments>
4216                                <argument name="position" type="XYZ"/>
4217                                <argument name="channel" type="string"/>
4218                                <argument name="max distance" type="float"/>
4219                        </arguments>
4220                </element>
4221                <element name="receiveSingle" function="true" type="Signal">
4222                        <description><![CDATA[Find the signal source having the highest signal power (including the distance)]]></description>
4223                        <arguments>
4224                                <argument name="position" type="XYZ"/>
4225                                <argument name="channel" type="string"/>
4226                                <argument name="max distance" type="float"/>
4227                        </arguments>
4228                </element>
4229        </type>
4230        <type name="XYZ" context="Global context">
4231<description><![CDATA[3D vector]]></description>
4232                <element name="length" type="float"/>
4233                <element name="toString" type="string"/>
4234                <element name="x" type="float"/>
4235                <element name="y" type="float"/>
4236                <element name="z" type="float"/>
4237                <element name="add" function="true" type="void">
4238                        <description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
4239                        <arguments>
4240                                <argument type="XYZ"/>
4241                        </arguments>
4242                </element>
4243                <element name="clone" function="true" type="XYZ">
4244                        <description><![CDATA[Note: copying object references does not create new objects. Use clone() if a new object is needed.
4245
4246Example:
4247var o1=(1,2,3), o2=o1, o3=o1.clone();
4248o1.y=9999;
4249//o2 is now (1,9999,3) but o3 is still (1,2,3)]]></description>
4250<arguments/></element>
4251                <element name="get" function="true" type="float">
4252                        <description><![CDATA[this function makes the XYZ objects "indexable" (so you can use [] for accessing subsequent fields, like in Vector)]]></description>
4253                        <arguments>
4254                                <argument name="index" type="integer"/>
4255                        </arguments>
4256                </element>
4257                <element name="new" function="true" type="XYZ">
4258                        <description><![CDATA[3D vectors objects can be also created using the (x,y,z) notation, i.e. var v=(1,2,3) is the same as var v=XYZ.new(1,2,3);]]></description>
4259                        <arguments>
4260                                <argument name="x" type="float"/>
4261                                <argument name="y" type="float"/>
4262                                <argument name="z" type="float"/>
4263                        </arguments>
4264                </element>
4265                <element name="normalize" function="true" type="void">
4266                        <description><![CDATA[scales the vector length to 1.0]]></description>
4267<arguments/></element>
4268                <element name="revRotate" function="true" type="void">
4269                        <arguments>
4270                                <argument type="Orient"/>
4271                        </arguments>
4272                </element>
4273                <element name="rotate" function="true" type="void">
4274                        <arguments>
4275                                <argument type="Orient"/>
4276                        </arguments>
4277                </element>
4278                <element name="scale" function="true" type="void">
4279                        <arguments>
4280                                <argument type="float"/>
4281                        </arguments>
4282                </element>
4283                <element name="set" function="true" type="void">
4284                        <arguments>
4285                                <argument type="XYZ"/>
4286                        </arguments>
4287                </element>
4288                <element name="set3" function="true" type="void">
4289                        <arguments>
4290                                <argument name="x" type="float"/>
4291                                <argument name="y" type="float"/>
4292                                <argument name="z" type="float"/>
4293                        </arguments>
4294                </element>
4295                <element name="sub" function="true" type="void">
4296                        <description><![CDATA[Note: it does not return a new object, just modifies the existing one]]></description>
4297                        <arguments>
4298                                <argument type="XYZ"/>
4299                        </arguments>
4300                </element>
4301        </type>
4302        <type name="ExpParams" context="Experiment definition">
4303                <element name="changedProperty" type="integer"/>
4304                <element name="changedPropertyId" type="string"/>
4305                <element name="add" function="true"/>
4306                <element name="addGroup" function="true"/>
4307                <element name="clear" function="true"/>
4308                <element name="remove" function="true"/>
4309                <element name="removeGroup" function="true"/>
4310        </type>
4311        <type name="ExpState" context="Experiment definition">
4312                <element name="changedProperty" type="integer"/>
4313                <element name="changedPropertyId" type="string"/>
4314                <element name="add" function="true"/>
4315                <element name="addGroup" function="true"/>
4316                <element name="clear" function="true"/>
4317                <element name="remove" function="true"/>
4318                <element name="removeGroup" function="true"/>
4319        </type>
4320        <type name="n" context="Neuron definitions">
4321                <element name="d" type="string"/>
4322                <element name="getInputCount" type="integer"/>
4323                <element name="i" type="string"/>
4324                <element name="j" type="integer" min="-1" max="999999" default="-1"/>
4325                <element name="p" type="integer" min="-1" max="999999" default="-1"/>
4326                <element name="Vstyle" type="string"/>
4327                <element name="getInputNeuroDef" function="true" type="NeuroDef">
4328                        <arguments>
4329                                <argument type="integer"/>
4330                        </arguments>
4331                </element>
4332                <element name="getInputNeuroIndex" function="true" type="integer">
4333                        <arguments>
4334                                <argument type="integer"/>
4335                        </arguments>
4336                </element>
4337                <element name="getInputWeight" function="true" type="float">
4338                        <arguments>
4339                                <argument type="integer"/>
4340                        </arguments>
4341                </element>
4342        </type>
4343        <type name="Neuro" context="Neuron definitions">
4344<description><![CDATA[Live Neuron object.]]></description>
4345                <element name="channelCount" type="integer"/>
4346                <element name="creature" type="Creature"/>
4347                <element name="currState" type="float">
4348                        <description><![CDATA[the only difference from the "state" field is that currState, when written, changes the internal neuron state immediately (which disturbs the regular synchronous NN operation). This feature should only be used while controlling the neuron 'from outside' (like a neuro probe) and not in the neuron definition.]]></description>
4349                </element>
4350                <element name="def" type="NeuroDef"/>
4351                <element name="fields" type="Fields">
4352                        <description><![CDATA[Neurons can have different fields depending on their class. Script neurons have their fields defined using the "prop:" syntax. If you develop a custom neuron script you should use the Fields object for accessing your own neuron fields. The Neuro.fields property is meant for accessing the neuron fields from the outside script.
4353Examples:
4354var c=Populations.createFromString("X[N]");
4355Simulator.print("standard neuron inertia="+c.getNeuro(0).fields.in);
4356c=Populations.createFromString("X[Nn,e:0.1]");
4357Simulator.print("noisy neuron error rate="+c.getNeuro(0).fields.e);
4358
4359The Interface object can be used to discover which fields are available for a certain neuron object:
4360c=Populations.createFromString("X[N]");
4361var iobj=Interface.makeFrom(c.getNeuro(0).fields);
4362var i;
4363for(i=0;i<iobj.properties;i++)
4364 Simulator.print(iobj.getId(i)+" ("+iobj.getName(i)+")");]]></description>
4365                </element>
4366                <element name="getInputCount" type="integer"/>
4367                <element name="hold" type="integer" min="0" max="1">
4368                        <description><![CDATA[]]></description>
4369                </element>
4370                <element name="inputSum" type="float"/>
4371                <element name="joint" type="MechJoint"/>
4372                <element name="part" type="MechPart"/>
4373                <element name="position_x" type="float"/>
4374                <element name="position_y" type="float"/>
4375                <element name="position_z" type="float"/>
4376                <element name="signals" type="NeuroSignals"/>
4377                <element name="state" type="float">
4378                        <description><![CDATA[when read, returns the current neuron state.
4379When written, sets the next neuron state (for use in the neuron definition)]]></description>
4380                </element>
4381                <element name="weightedInputSum" type="float"/>
4382                <element name="getInputChannelCount" function="true" type="integer">
4383                        <arguments>
4384                                <argument name="input" type="integer"/>
4385                        </arguments>
4386                </element>
4387                <element name="getInputState" function="true" type="float">
4388                        <arguments>
4389                                <argument name="input" type="integer"/>
4390                        </arguments>
4391                </element>
4392                <element name="getInputStateChannel" function="true" type="float">
4393                        <arguments>
4394                                <argument name="input" type="integer"/>
4395                                <argument name="channel" type="integer"/>
4396                        </arguments>
4397                </element>
4398                <element name="getInputSum" function="true" type="float">
4399                        <arguments>
4400                                <argument name="input" type="integer"/>
4401                        </arguments>
4402                </element>
4403                <element name="getInputWeight" function="true" type="float">
4404                        <arguments>
4405                                <argument name="input" type="integer"/>
4406                        </arguments>
4407                </element>
4408                <element name="getStateChannel" function="true" type="float">
4409                        <arguments>
4410                                <argument name="channel" type="integer"/>
4411                        </arguments>
4412                </element>
4413                <element name="getWeightedInputState" function="true" type="float">
4414                        <arguments>
4415                                <argument name="input" type="integer"/>
4416                        </arguments>
4417                </element>
4418                <element name="getWeightedInputStateChannel" function="true" type="float">
4419                        <arguments>
4420                                <argument name="input" type="integer"/>
4421                                <argument name="channel" type="integer"/>
4422                        </arguments>
4423                </element>
4424                <element name="getWeightedInputSum" function="true" type="float">
4425                        <description><![CDATA[uses any number of inputs starting with the specified input. getWeightedInputSum(0)=weightedInputSum]]></description>
4426                        <arguments>
4427                                <argument name="input" type="integer"/>
4428                        </arguments>
4429                </element>
4430                <element name="setCurrStateChannel" function="true" type="void">
4431                        <description><![CDATA[like "currState"]]></description>
4432                        <arguments>
4433                                <argument name="channel" type="integer"/>
4434                                <argument name="value" type="float"/>
4435                        </arguments>
4436                </element>
4437                <element name="setStateChannel" function="true" type="void">
4438                        <arguments>
4439                                <argument name="channel" type="integer"/>
4440                                <argument name="value" type="float"/>
4441                        </arguments>
4442                </element>
4443        </type>
4444        <type name="this" context="Fitness formula">
4445<description><![CDATA[A Genotype with the associated performance information. All but one Genotype objects are placed in Genotype Groups. There is also a single static Genotype object not associated with a group, which is used as a temporary storage by genetic operators and some functions from GenePools.]]></description>
4446                <element name="convtrace1" type="string"/>
4447                <element name="distance" type="float"/>
4448                <element name="energ0" type="float"/>
4449                <element name="f0genotype" type="string">
4450                        <description><![CDATA[converted to f0 genotype]]></description>
4451                </element>
4452                <element name="fit" type="float"/>
4453                <element name="fit2" type="float">
4454                        <description><![CDATA[Fitnes shifted by (avg-n*stddev)]]></description>
4455                </element>
4456                <element name="geno" type="Geno">
4457                        <description><![CDATA[Geno object for this Genotype]]></description>
4458                </element>
4459                <element name="genotype" type="string"/>
4460                <element name="gnum" type="integer"/>
4461                <element name="info" type="string">
4462                        <description><![CDATA[Additional information or comments]]></description>
4463                </element>
4464                <element name="instances" type="integer"/>
4465                <element name="isValid" type="integer" min="0" max="1"/>
4466                <element name="lifespan" type="float">
4467                        <description><![CDATA[Average life span]]></description>
4468                </element>
4469                <element name="name" type="string"/>
4470                <element name="nncon" type="float">
4471                        <description><![CDATA[(deprecated) old name for numconnections]]></description>
4472                </element>
4473                <element name="nnsiz" type="float">
4474                        <description><![CDATA[(deprecated) old name for numneurons]]></description>
4475                </element>
4476                <element name="num" type="integer"/>
4477                <element name="numconnections" type="float"/>
4478                <element name="numjoints" type="float"/>
4479                <element name="numneurons" type="float"/>
4480                <element name="numparts" type="float"/>
4481                <element name="popsiz" type="integer">
4482                        <description><![CDATA[(deprecated) old name for instances]]></description>
4483                </element>
4484                <element name="simi" type="float"/>
4485                <element name="strjoints" type="float">
4486                        <description><![CDATA[(deprecated) old name for numjoints]]></description>
4487                </element>
4488                <element name="strsiz" type="float">
4489                        <description><![CDATA[(deprecated) old name for numparts]]></description>
4490                </element>
4491                <element name="uid" type="string">
4492                        <description><![CDATA[Unique identifier]]></description>
4493                </element>
4494                <element name="user1" type="untyped"/>
4495                <element name="user2" type="untyped"/>
4496                <element name="user3" type="untyped"/>
4497                <element name="velocity" type="float">
4498                        <description><![CDATA[Average velocity]]></description>
4499                </element>
4500                <element name="vertpos" type="float"/>
4501                <element name="vertvel" type="float"/>
4502                <element name="getModel" function="true" type="Model"><arguments/></element>
4503                <element name="getNormalized" function="true" type="float">
4504                        <arguments>
4505                                <argument name="property name or index" type="untyped"/>
4506                        </arguments>
4507                </element>
4508                <element name="mutate" function="true" type="void"><arguments/></element>
4509        </type>
4510        <type name="Creature" context="Visual style definition">
4511<description><![CDATA[The object inside the simulated world, including its physical structure, neural network and performance data. Food pieces, obstacles and other movable objects can be implemented as Creatures even though the are not "alive". See also: Population.]]></description>
4512                <element name="bodysim" type="integer" min="0" max="1" default="1">
4513                        <description><![CDATA[(Physical) body simulation can be disabled for individual objects which makes them immovable. Disabled objects can still participate in collisions depending on their collisions masks.
4514
4515Bugs: the standard collision handler does not work for disabled objects when ODE simulation is used. It means that these objects won't physically interact with other objects. The custom (scripting) handlers work as expected.]]></description>
4516                </element>
4517                <element name="buildproblems" type="integer"/>
4518                <element name="c_velocity" type="float"/>
4519                <element name="c_vertpos" type="float"/>
4520                <element name="c_vertvelocity" type="float"/>
4521                <element name="center_x" type="float">
4522                        <description><![CDATA[Center of gravity]]></description>
4523                </element>
4524                <element name="center_y" type="float">
4525                        <description><![CDATA[Center of gravity]]></description>
4526                </element>
4527                <element name="center_z" type="float">
4528                        <description><![CDATA[Center of gravity]]></description>
4529                </element>
4530                <element name="distance" type="float"/>
4531                <element name="drive" type="XYZ">
4532                        <description><![CDATA[]]></description>
4533                </element>
4534                <element name="energ0" type="float"/>
4535                <element name="energy" type="float"/>
4536                <element name="energy_b" type="float"/>
4537                <element name="energy_m" type="float"/>
4538                <element name="energy_p" type="float"/>
4539                <element name="geno" type="Geno">
4540                        <description><![CDATA[Source genotype for this creature]]></description>
4541                </element>
4542                <element name="genotype" type="string"/>
4543                <element name="gnum" type="integer"/>
4544                <element name="group" type="untyped"/>
4545                <element name="idleen" type="float"/>
4546                <element name="index" type="integer">
4547                        <description><![CDATA[Index of this Creature in its Population.]]></description>
4548                </element>
4549                <element name="info" type="string">
4550                        <description><![CDATA[Additional info or comments]]></description>
4551                </element>
4552                <element name="lifespan" type="integer"/>
4553                <element name="liveModel" type="Model">
4554                        <description><![CDATA[A Model object that is a copy of the current (temporary) geometry of this creature]]></description>
4555                </element>
4556                <element name="localDrive" type="XYZ">
4557                        <description><![CDATA[]]></description>
4558                </element>
4559                <element name="model" type="Model">
4560                        <description><![CDATA[Source Model for this creature]]></description>
4561                </element>
4562                <element name="name" type="string"/>
4563                <element name="nnenabled" type="integer" min="0" max="1"/>
4564                <element name="numjoints" type="integer"/>
4565                <element name="numneurons" type="integer"/>
4566                <element name="numparts" type="integer"/>
4567                <element name="orient" type="Orient">
4568                        <description><![CDATA[by convention the creature orientation is equal to its first part orientation]]></description>
4569                </element>
4570                <element name="othermask" type="integer" min="0" max="2147483647" default="0"/>
4571                <element name="perf" type="integer" min="0" max="2">
4572                        <description><![CDATA[Initial value of this property is taken from Population.enableperf]]></description>
4573                </element>
4574                <element name="pos_x" type="float">
4575                        <description><![CDATA[(pos_x,pos_y,pos_z) is the point of minimal coordinates ("bottom left corner") of the creature, including imaginary Part sizes (Part.s, usually 1.0). See also: Creature.moveAbs]]></description>
4576                </element>
4577                <element name="pos_y" type="float">
4578                        <description><![CDATA[See Creature.pos_x]]></description>
4579                </element>
4580                <element name="pos_z" type="float">
4581                        <description><![CDATA[See Creature.pos_x]]></description>
4582                </element>
4583                <element name="selfcol" type="integer" min="0" max="1">
4584                        <description><![CDATA[Enable/disable detection of self-collisions (within a creature body). They can only occur when using the ODE simulation engine. If enabled, the creature will have its sticks collide during lifespan.]]></description>
4585                </element>
4586                <element name="selfcolstate" type="integer" min="0" max="1">
4587                        <description><![CDATA[Current self-collision state]]></description>
4588                </element>
4589                <element name="selfmask" type="integer" min="0" max="2147483647" default="0"/>
4590                <element name="signals" type="CreatureSignals"/>
4591                <element name="size_x" type="float">
4592                        <description><![CDATA[(size_x,size_y,size_z) are dimensions of the axis-aligned bounding box of the creature, including the imaginary part sizes (Part.s, usually 1.0). A creature consisting of a single default part has the size of (2.0,2.0,2.0) - twice the Part.s value (like a sphere diameter is twice its radius).
4593See also: Creature.moveAbs]]></description>
4594                </element>
4595                <element name="size_y" type="float">
4596                        <description><![CDATA[See Creature.size_x]]></description>
4597                </element>
4598                <element name="size_z" type="float">
4599                        <description><![CDATA[See Creature.size_x]]></description>
4600                </element>
4601                <element name="uid" type="string"/>
4602                <element name="user1" type="untyped"/>
4603                <element name="user2" type="untyped"/>
4604                <element name="user3" type="untyped"/>
4605                <element name="velocity" type="float"/>
4606                <element name="vertpos" type="float"/>
4607                <element name="vertvel" type="float"/>
4608                <element name="currentGeometryAsF0" function="true" type="string"><arguments/></element>
4609                <element name="getJoint" function="true" type="Joint">
4610                        <arguments>
4611                                <argument name="index" type="integer"/>
4612                        </arguments>
4613                </element>
4614                <element name="getMechJoint" function="true" type="MechJoint">
4615                        <arguments>
4616                                <argument name="index" type="integer"/>
4617                        </arguments>
4618                </element>
4619                <element name="getMechPart" function="true" type="MechPart">
4620                        <arguments>
4621                                <argument name="index" type="integer"/>
4622                        </arguments>
4623                </element>
4624                <element name="getNeuro" function="true" type="Neuro">
4625                        <arguments>
4626                                <argument name="index" type="integer"/>
4627                        </arguments>
4628                </element>
4629                <element name="getNeuroDef" function="true" type="NeuroDef">
4630                        <arguments>
4631                                <argument name="index" type="integer"/>
4632                        </arguments>
4633                </element>
4634                <element name="getPart" function="true" type="Part">
4635                        <arguments>
4636                                <argument name="index" type="integer"/>
4637                        </arguments>
4638                </element>
4639                <element name="localToWorld" function="true" type="XYZ">
4640                        <arguments>
4641                                <argument name="x" type="float"/>
4642                                <argument name="y" type="float"/>
4643                                <argument name="z" type="float"/>
4644                        </arguments>
4645                </element>
4646                <element name="move" function="true" type="void">
4647                        <description><![CDATA[Shift the creature by a given vector.]]></description>
4648                        <arguments>
4649                                <argument name="x" type="float"/>
4650                                <argument name="y" type="float"/>
4651                                <argument name="z" type="float"/>
4652                        </arguments>
4653                </element>
4654                <element name="moveAbs" function="true" type="void">
4655                        <description><![CDATA[Moves the creature so that its origin (pos_x,pos_y,pos_z) is placed at the given location. The origin is the point of minimal coordinates ("bottom left corner"), including imaginary part sizes (Part.s, usually 1.0).
4656Assuming a simple single-stick creature "X" having parts at (0,0,0) and (1,0,0),
4657
4658origin (pos_x,pos_y,pos_z) = (-1,-1,-1)
4659size (size_x,size_y,size_z) = (2,1,1)
4660
4661The following example places the bottom of a creature at a given location (x,y,z):
4662Creature.moveAbs(x-(Creature.size_x/2),y-(Creature.size_y/2),z-1.0)
4663(assuming that the part size is 1.0)]]></description>
4664                        <arguments>
4665                                <argument name="x" type="float"/>
4666                                <argument name="y" type="float"/>
4667                                <argument name="z" type="float"/>
4668                        </arguments>
4669                </element>
4670                <element name="moveLocal" function="true" type="void">
4671                        <arguments>
4672                                <argument name="x" type="float"/>
4673                                <argument name="y" type="float"/>
4674                                <argument name="z" type="float"/>
4675                        </arguments>
4676                </element>
4677                <element name="rotate" function="true" type="void">
4678                        <description><![CDATA[Rotate the creature around X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise the further simulation could be disturbed.]]></description>
4679                        <arguments>
4680                                <argument name="x" type="float"/>
4681                                <argument name="y" type="float"/>
4682                                <argument name="z" type="float"/>
4683                        </arguments>
4684                </element>
4685                <element name="rotateLocal" function="true" type="void">
4686                        <description><![CDATA[Rotate the creature around (local) X, Y and Z axes. Should only be used immediately after creating a new creature (before the first simulation step is performed for this creature), otherwise the further simulation could be disturbed.]]></description>
4687                        <arguments>
4688                                <argument name="x" type="float"/>
4689                                <argument name="y" type="float"/>
4690                                <argument name="z" type="float"/>
4691                        </arguments>
4692                </element>
4693                <element name="worldToLocal" function="true" type="XYZ">
4694                        <arguments>
4695                                <argument name="x" type="float"/>
4696                                <argument name="y" type="float"/>
4697                                <argument name="z" type="float"/>
4698                        </arguments>
4699                </element>
4700        </type>
4701        <type name="Element" context="Visual style definition">
4702<description><![CDATA[Information about current visual element: Part, Joint or Neuro. To be used in _build() or _update() functions.
4703
4704This is a link between a creature's element (part/joint/neuron) and the geometry object (Element.node).
4705Calling Element.useXXX() functions connects the static object references (Creature, Model, Part, Joint, Neuro, MechPart, MechJoint) to the proper creature elements. All these objects are invalid before doing that! E.g. you have to call "Element.useCreature()" before referring to "Creature.energy" in your _build() and _update() functions.]]></description>
4706                <element name="node" type="integer"/>
4707                <element name="useCreature" function="true"/>
4708                <element name="useJoint" function="true"/>
4709                <element name="useJointPart1" function="true"/>
4710                <element name="useJointPart2" function="true"/>
4711                <element name="useMechJoint" function="true"/>
4712                <element name="useMechJointPart1" function="true"/>
4713                <element name="useMechJointPart2" function="true"/>
4714                <element name="useMechPart" function="true"/>
4715                <element name="useModel" function="true"/>
4716                <element name="useNeuro" function="true"/>
4717                <element name="useNeuroJoint" function="true"/>
4718                <element name="useNeuroPart" function="true"/>
4719                <element name="usePart" function="true"/>
4720        </type>
4721        <type name="GeomBuilder" context="Visual style definition">
4722<description><![CDATA[Scene graph access (build and manipulate the 3d object tree)]]></description>
4723                <element name="code" type="string"/>
4724                <element name="currentNode" type="integer"/>
4725                <element name="defaultStyle" type="string"/>
4726                <element name="matrix00" type="float"/>
4727                <element name="matrix01" type="float"/>
4728                <element name="matrix02" type="float"/>
4729                <element name="matrix03" type="float"/>
4730                <element name="matrix10" type="float"/>
4731                <element name="matrix11" type="float"/>
4732                <element name="matrix12" type="float"/>
4733                <element name="matrix13" type="float"/>
4734                <element name="matrix20" type="float"/>
4735                <element name="matrix21" type="float"/>
4736                <element name="matrix22" type="float"/>
4737                <element name="matrix23" type="float"/>
4738                <element name="matrix30" type="float"/>
4739                <element name="matrix31" type="float"/>
4740                <element name="matrix32" type="float"/>
4741                <element name="matrix33" type="float"/>
4742                <element name="rootNode" type="integer"/>
4743                <element name="updatingNode" type="integer"/>
4744                <element name="add" function="true" type="void">
4745                        <description><![CDATA[add a child node to the current node]]></description>
4746                        <arguments>
4747                                <argument name="node" type="integer"/>
4748                        </arguments>
4749                </element>
4750                <element name="addBranch" function="true">
4751                        <description><![CDATA[create the branch node as a child of the current node and make it the new current node]]></description>
4752                </element>
4753                <element name="addTransform" function="true">
4754                        <description><![CDATA[create the transform node as a child of the current node and make it the new current node.]]></description>
4755                </element>
4756                <element name="dump" function="true" type="void">
4757                        <arguments>
4758                                <argument name="node" type="integer"/>
4759                                <argument name="level" type="integer"/>
4760                        </arguments>
4761                </element>
4762                <element name="getBranch" function="true" type="integer">
4763                        <arguments>
4764                                <argument name="branch node" type="integer"/>
4765                                <argument name="branch index" type="integer"/>
4766                        </arguments>
4767                </element>
4768                <element name="matrixMove" function="true" type="void">
4769                        <arguments>
4770                                <argument name="x" type="float"/>
4771                                <argument name="y" type="float"/>
4772                                <argument name="z" type="float"/>
4773                        </arguments>
4774                </element>
4775                <element name="matrixMove1" function="true" type="void">
4776                        <description><![CDATA[MechPart.pos can be used here]]></description>
4777                        <arguments>
4778                                <argument name="xyz" type="integer"/>
4779                        </arguments>
4780                </element>
4781                <element name="matrixOrient" function="true" type="void">
4782                        <arguments>
4783                                <argument name="x" type="float"/>
4784                                <argument name="y" type="float"/>
4785                                <argument name="z" type="float"/>
4786                        </arguments>
4787                </element>
4788                <element name="matrixOrient1" function="true" type="void">
4789                        <description><![CDATA[MechPart.orient can be used here]]></description>
4790                        <arguments>
4791                                <argument name="xyz" type="integer"/>
4792                        </arguments>
4793                </element>
4794                <element name="matrixReset" function="true"/>
4795                <element name="matrixRotate" function="true" type="void">
4796                        <arguments>
4797                                <argument name="x" type="float"/>
4798                                <argument name="y" type="float"/>
4799                                <argument name="z" type="float"/>
4800                        </arguments>
4801                </element>
4802                <element name="matrixRotate1" function="true" type="void">
4803                        <arguments>
4804                                <argument name="xyz" type="integer"/>
4805                        </arguments>
4806                </element>
4807                <element name="matrixScale" function="true" type="void">
4808                        <arguments>
4809                                <argument name="x" type="float"/>
4810                                <argument name="y" type="float"/>
4811                                <argument name="z" type="float"/>
4812                        </arguments>
4813                </element>
4814                <element name="setMatrix" function="true" type="void">
4815                        <description><![CDATA[copy current matrix into specified node]]></description>
4816                        <arguments>
4817                                <argument name="transform node" type="integer"/>
4818                        </arguments>
4819                </element>
4820        </type>
4821        <type name="GL" context="Visual style definition">
4822<description><![CDATA[OpenGL constants used in GeomBuilder and Material functions.]]></description>
4823                <element name="ALPHA_TEST" type="integer"/>
4824                <element name="AMBIENT" type="integer"/>
4825                <element name="AMBIENT_AND_DIFFUSE" type="integer"/>
4826                <element name="BLEND" type="integer"/>
4827                <element name="COLOR_MATERIAL" type="integer"/>
4828                <element name="CULL_FACE" type="integer"/>
4829                <element name="DIFFUSE" type="integer"/>
4830                <element name="EMISSION" type="integer"/>
4831                <element name="LIGHTING" type="integer"/>
4832                <element name="LINE_LOOP" type="integer"/>
4833                <element name="LINE_STRIP" type="integer"/>
4834                <element name="LINES" type="integer"/>
4835                <element name="POINTS" type="integer"/>
4836                <element name="QUAD_STRIP" type="integer"/>
4837                <element name="QUADS" type="integer"/>
4838                <element name="SPECULAR" type="integer"/>
4839                <element name="TEXTURE_2D" type="integer"/>
4840                <element name="TRIANGLE_FAN" type="integer"/>
4841                <element name="TRIANGLE_STRIP" type="integer"/>
4842                <element name="TRIANGLES" type="integer"/>
4843        </type>
4844        <type name="j" context="Visual style definition">
4845                <element name="dx" type="float" min="-2" max="2" default="0"/>
4846                <element name="dy" type="float" min="-2" max="2" default="0"/>
4847                <element name="dz" type="float" min="-2" max="2" default="0"/>
4848                <element name="i" type="string"/>
4849                <element name="p1" type="integer" min="-1" max="999999" default="-1"/>
4850                <element name="p2" type="integer" min="-1" max="999999" default="-1"/>
4851                <element name="rotstif" type="float" min="0" max="1" default="1"/>
4852                <element name="rx" type="float"/>
4853                <element name="ry" type="float"/>
4854                <element name="rz" type="float"/>
4855                <element name="stam" type="float" min="0" max="1" default="0.25"/>
4856                <element name="stif" type="float" min="0" max="1" default="1"/>
4857                <element name="Vstyle" type="string"/>
4858        </type>
4859        <type name="Loader" context="Visual style definition">
4860<description><![CDATA[Loads 3d objects files.
4861Visual styles placed in subdirectories (like "matrix") automatically access the parent directory if the file is not found in their subdirectory.]]></description>
4862                <element name="loaded" type="integer"/>
4863                <element name="load" function="true"/>
4864        </type>
4865        <type name="m" context="Visual style definition">
4866                <element name="se" type="float"/>
4867                <element name="Vstyle" type="string"/>
4868        </type>
4869        <type name="Material" context="Visual style definition">
4870<description><![CDATA[Manipulate 3d objects surface properties (Material objects can be associated with geometry nodes).]]></description>
4871                <element name="ambient" type="integer"/>
4872                <element name="colormat" type="integer"/>
4873                <element name="diffuse" type="integer"/>
4874                <element name="emission" type="integer"/>
4875                <element name="object" type="Object"/>
4876                <element name="shininess" type="float"/>
4877                <element name="specular" type="integer"/>
4878                <element name="texture" type="string"/>
4879                <element name="translucent" type="integer"/>
4880                <element name="care" function="true"/>
4881                <element name="disable" function="true"/>
4882                <element name="dontcare" function="true"/>
4883                <element name="enable" function="true"/>
4884                <element name="new" function="true"/>
4885                <element name="setFlat" function="true"/>
4886                <element name="setSmooth" function="true"/>
4887        </type>
4888        <type name="MechJoint" context="Visual style definition">
4889<description><![CDATA[Current joint properties during the simulation]]></description>
4890                <element name="absorient" type="integer"/>
4891                <element name="calcorient" type="integer"/>
4892                <element name="dx" type="float"/>
4893                <element name="dy" type="float"/>
4894                <element name="dz" type="float"/>
4895                <element name="length" type="float"/>
4896                <element name="orient" type="integer"/>
4897                <element name="rotstif" type="float"/>
4898                <element name="rotstress" type="float"/>
4899                <element name="rx" type="float"/>
4900                <element name="ry" type="float"/>
4901                <element name="rz" type="float"/>
4902                <element name="stif" type="float"/>
4903                <element name="stress" type="float"/>
4904        </type>
4905        <type name="MechPart" context="Visual style definition">
4906<description><![CDATA[Current part properties during the simulation]]></description>
4907                <element name="fr" type="float"/>
4908                <element name="m" type="float"/>
4909                <element name="orient" type="integer"/>
4910                <element name="pos" type="integer"/>
4911                <element name="s" type="float"/>
4912                <element name="vol" type="float"/>
4913                <element name="x" type="float"/>
4914                <element name="y" type="float"/>
4915                <element name="z" type="float"/>
4916        </type>
4917        <type name="n" context="Visual style definition">
4918                <element name="class" type="string"/>
4919                <element name="d" type="string"/>
4920                <element name="getInputCount" type="integer"/>
4921                <element name="i" type="string"/>
4922                <element name="j" type="integer" min="-1" max="999999" default="-1"/>
4923                <element name="p" type="integer" min="-1" max="999999" default="-1"/>
4924                <element name="state" type="float"/>
4925                <element name="Vstyle" type="string"/>
4926                <element name="getInputNeuroDef" function="true" type="NeuroDef">
4927                        <arguments>
4928                                <argument type="integer"/>
4929                        </arguments>
4930                </element>
4931                <element name="getInputNeuroIndex" function="true" type="integer">
4932                        <arguments>
4933                                <argument type="integer"/>
4934                        </arguments>
4935                </element>
4936                <element name="getInputWeight" function="true" type="float">
4937                        <arguments>
4938                                <argument type="integer"/>
4939                        </arguments>
4940                </element>
4941        </type>
4942        <type name="p" context="Visual style definition">
4943                <element name="as" type="float" min="0" max="1" default="0.25"/>
4944                <element name="dn" type="float" min="0.2" max="5" default="1"/>
4945                <element name="fr" type="float" min="0" max="4" default="0.4"/>
4946                <element name="i" type="string"/>
4947                <element name="ing" type="float" min="0" max="1" default="0.25"/>
4948                <element name="m" type="float" min="0.1" max="999" default="1"/>
4949                <element name="rx" type="float"/>
4950                <element name="ry" type="float"/>
4951                <element name="rz" type="float"/>
4952                <element name="s" type="float" min="0.1" max="10" default="1"/>
4953                <element name="Vstyle" type="string"/>
4954                <element name="x" type="float"/>
4955                <element name="y" type="float"/>
4956                <element name="z" type="float"/>
4957        </type>
4958        <type name="Scene" context="Visual style definition">
4959<description><![CDATA[Additional properties to be used in the current view, currently only the background settings]]></description>
4960                <element name="backcolor" type="integer"/>
4961                <element name="worldtexture" type="string"/>
4962        </type>
4963        <type name="VertexBuilder" context="Visual style definition">
4964                <element name="material" type="Object"/>
4965                <element name="node" type="integer">
4966                        <description><![CDATA[This field returns the geometry node for use in GeomBuilder. You have to set all relevant geometry properties before using this field. The usual sequence:
49671. newXXX - selects the geometry type (see your OpenGL manual for explanation)
49682. Set all properties (add vertices, normals, colors, texture coordinates, material). All unspecified properties are assumed to have default values.
49693. Use the resulting node ( GeomBuilder.add(VertexBuilder.node) )]]></description>
4970                </element>
4971                <element name="twosided" type="integer" min="0" max="1"/>
4972                <element name="addCalculatedNormal" function="true">
4973                        <description><![CDATA[calculate the normal vector from 3 coordinates. integer arguments are the vertices' indices. 0,1,2... = first, second, third vertex, -1,-2,-3,... = last, last-1, last-2 vertex]]></description>
4974                </element>
4975                <element name="addColor" function="true"/>
4976                <element name="addNormal" function="true"/>
4977                <element name="addNormal_1" function="true">
4978                        <description><![CDATA[use addNormal instead of this function]]></description>
4979                </element>
4980                <element name="addTexCoord" function="true"/>
4981                <element name="addVertex" function="true"/>
4982                <element name="genTexCoords" function="true"/>
4983                <element name="genTexCoordsXY" function="true"/>
4984                <element name="genTexCoordsXZ" function="true"/>
4985                <element name="genTexCoordsYZ" function="true"/>
4986                <element name="new" function="true" type="void">
4987                        <arguments>
4988                                <argument name="type" type="integer"/>
4989                        </arguments>
4990                </element>
4991                <element name="newLineLoop" function="true"/>
4992                <element name="newLines" function="true"/>
4993                <element name="newLineStrip" function="true"/>
4994                <element name="newPoints" function="true"/>
4995                <element name="newPolygon" function="true"/>
4996                <element name="newQuads" function="true"/>
4997                <element name="newQuadStrip" function="true"/>
4998                <element name="newTriangleFan" function="true"/>
4999                <element name="newTriangles" function="true"/>
5000                <element name="newTriangleStrip" function="true"/>
5001        </type>
5002        <type name="VisParams" context="Visual style definition">
5003                <element name="changedProperty" type="integer"/>
5004                <element name="changedPropertyId" type="string"/>
5005                <element name="modelpan" type="integer" min="0" max="3">
5006                        <description><![CDATA[]]></description>
5007                </element>
5008                <element name="shownames" type="integer" min="0" max="1">
5009                        <description><![CDATA[]]></description>
5010                </element>
5011                <element name="worldpan" type="integer" min="0" max="3">
5012                        <description><![CDATA[]]></description>
5013                </element>
5014                <element name="add" function="true"/>
5015                <element name="addGroup" function="true"/>
5016                <element name="clear" function="true"/>
5017                <element name="remove" function="true"/>
5018                <element name="removeGroup" function="true"/>
5019        </type>
5020        <type name="VisualModel" context="Visual style definition">
5021<description><![CDATA[Visual representation of the Creature object.]]></description>
5022                <element name="args" type="string">
5023                        <description><![CDATA[style parameters: Vstyle=name(args)]]></description>
5024                </element>
5025                <element name="color" type="integer">
5026                        <description><![CDATA[0xBBGGRR, 0x808080=normal, 0x000000=black, 0xffffff=extra bright]]></description>
5027                </element>
5028                <element name="jointshadow" type="float"/>
5029                <element name="partshadow" type="float"/>
5030                <element name="rootNode" type="integer"/>
5031                <element name="style" type="string">
5032                        <description><![CDATA[visual style applied to this object]]></description>
5033                </element>
5034                <element name="getArg" function="true" type="string">
5035                        <description><![CDATA[retrieve single style argument, as in:
5036Vstyle=name(a=1,b=3)
5037VisualModel.getArg("a") returns 1]]></description>
5038                        <arguments>
5039                                <argument name="name" type="string"/>
5040                        </arguments>
5041                </element>
5042        </type>
5043        <type name="VisualStyle" context="Visual style definition">
5044                <element name="changedProperty" type="integer"/>
5045                <element name="changedPropertyId" type="string"/>
5046                <element name="code" type="string"/>
5047                <element name="info" type="string"/>
5048                <element name="modelpan" type="integer" min="0" max="3">
5049                        <description><![CDATA[]]></description>
5050                </element>
5051                <element name="name" type="string"/>
5052                <element name="neurons" type="integer" min="0" max="1"/>
5053                <element name="shownames" type="integer" min="0" max="1">
5054                        <description><![CDATA[]]></description>
5055                </element>
5056                <element name="smooth" type="integer" min="0" max="1"/>
5057                <element name="style" type="string"/>
5058                <element name="tex" type="integer" min="0" max="2"/>
5059                <element name="worldpan" type="integer" min="0" max="3">
5060                        <description><![CDATA[]]></description>
5061                </element>
5062                <element name="add" function="true"/>
5063                <element name="addGroup" function="true"/>
5064                <element name="clear" function="true"/>
5065                <element name="rebuild" function="true"/>
5066                <element name="remove" function="true"/>
5067                <element name="removeGroup" function="true"/>
5068                <element name="streload" function="true"/>
5069        </type>
5070        <type name="World" context="Visual style definition">
5071<description><![CDATA[Environment properties.]]></description>
5072                <element name="nnspeed" type="float" min="0" max="1000" default="1">
5073                        <description><![CDATA[Number of neural network simulation steps in each physics simulation step]]></description>
5074                </element>
5075                <element name="signals" type="WorldSignals"/>
5076                <element name="simtype" type="integer" min="0" max="1" default="0">
5077                        <description><![CDATA[MechaStick is a fast and simple primary Framsticks simulation engine.
5078ODE is Open Dynamics Engine by Russel Smith et al.
5079
5080NOTE: switching between simulation engines causes removal of all objects in the world (e.g. creatures).]]></description>
5081                </element>
5082                <element name="wrldbnd" type="integer" min="0" max="2" default="1"/>
5083                <element name="wrldg" type="float" min="0" max="10" default="1">
5084                        <description><![CDATA[You can adjust gravity for your experiments.
5085The "official" setting used to evaluate and compare creatures is 1.]]></description>
5086                </element>
5087                <element name="wrldmap" type="string">
5088                        <description><![CDATA[Description of the world (Type: Blocks or Heighfield). Enter
5089   r <sizex> <sizey> [seed]
5090to generate a random landscape, or
5091   m <sizex> <sizey> digits
5092   M <sizex> <sizey> numbers
5093to provide height values.
5094
5095See also the WorldMap object.]]></description>
5096                </element>
5097                <element name="wrldsiz" type="float" min="10" max="1000" default="20">
5098                        <description><![CDATA[Side length of the world]]></description>
5099                </element>
5100                <element name="wrldtyp" type="integer" min="0" max="2" default="0"/>
5101                <element name="wrldwat" type="float" min="-20" max="30" default="-1"/>
5102                <element name="wrldchg" function="true" type="void"><arguments/></element>
5103        </type>
5104        <type name="WorldMap" context="Visual style definition">
5105<description><![CDATA[Environment details for "Blocks" and "Heightfield" world type. The most important concept is a "Map", which is the array of Map elements. Internally, Maps have more elements than could be deduced from the user-supplied World.wrldsiz, as additional rows of element are added to provide smooth transitions to the flat surroundings.
5106
5107Blocks: x/ysize=World.wrldsiz+4 rows of blocks (from which only 2+World.wrldsiz rows are placed within the world boundaries)
5108
5109Smooth: x/ysize=World.wrldsiz+2 rows of vertices (creating World.wrldsiz+1 rows of triangles, everything within the world boundaries)
5110]]></description>
5111                <element name="xsize" type="integer"/>
5112                <element name="ysize" type="integer"/>
5113                <element name="getHeight" function="true" type="float">
5114                        <description><![CDATA[Height at any 2d coordinate]]></description>
5115                        <arguments>
5116                                <argument name="x" type="float"/>
5117                                <argument name="y" type="float"/>
5118                        </arguments>
5119                </element>
5120                <element name="getMap" function="true" type="Object">
5121                        <description><![CDATA[retrieve map cell object]]></description>
5122                        <arguments>
5123                                <argument name="x" type="integer"/>
5124                                <argument name="y" type="integer"/>
5125                        </arguments>
5126                </element>
5127                <element name="intersect" function="true" type="Vector">
5128                        <description><![CDATA[Calculate the intersection point between the world surface and the ray projected from "3d point" towards the given direction. 3D points are actually 3-elements Vector objects. The resulting vector contains the additional fourth element - the intersection point distance. The function returns null if there is no intersection.
5129
5130See "standard_events.inc" file, which uses "intersect" for calculating the world coordinates corresponding to the user-clicked screen location.
5131Bugs: This function does not currently handle the heightfield environment correctly (works as if it was flat)]]></description>
5132                        <arguments>
5133                                <argument name="3d point" type="Vector"/>
5134                                <argument name="3d direction" type="Vector"/>
5135                                <argument name="range" type="float"/>
5136                        </arguments>
5137                </element>
5138        </type>
5139        <type name="Signal" context="Signal label formula">
5140<description><![CDATA[Signals broadcast information in a channel (being an abstract communication medium that could be imagined as sound, smell, vision or anything else). There are no sender-receiver associations, although the receiving party can filter out signals (two standard filtering methods are: physical neighborhood and one-dimensional attribute called flavor). Signals attached to neurons and creatures (created in Creature.signals and Neuro.signals) automatically follow the owner's location. Environmental signals (in World.signals) are stationary.
5141
5142Receiving:
5143There are 2 kinds of data you can receive:
51441. aggregating functions (receive and receiveFilter) calculate the overall power of the received signal (based on the distance and the source power).
51452.receiveSet and receiveSingle fetch the individual Signal object(s) so it is possible to transmit something else than just a single number (by using Signal.value) and do more sophisticated processing.
5146
5147Creating: Use "add" in Creature.signals, Neuro.signals, or World.signals.]]></description>
5148                <element name="channel" type="string">
5149                        <description><![CDATA[Channel name, readonly.]]></description>
5150                </element>
5151                <element name="flavor" type="float">
5152                        <description><![CDATA[Signal flavor is can be used to differentiate between signals in a single channel. ]]></description>
5153                </element>
5154                <element name="pos" type="XYZ">
5155                        <description><![CDATA[Signal position, readonly.]]></description>
5156                </element>
5157                <element name="power" type="float">
5158                        <description><![CDATA[Signal power affects the aggregated signal value returned from receive() and receiveFilter().]]></description>
5159                </element>
5160                <element name="value" type="untyped">
5161                        <description><![CDATA[Signal value can be any type. On the receiver side it is only available by accessing the individual Signal objects, i.e. after calling receiveSet() or receiveSingle(). The aggregating function receive() and receiveFilter() ignore this attribute.]]></description>
5162                </element>
5163                <element name="remove" function="true">
5164                        <description><![CDATA[Deletes the signal]]></description>
5165                </element>
5166        </type>
5167        <type name="ClassBrowser" context="Command line interface">
5168<description><![CDATA[Object reference, can be used to provide online hints.]]></description>
5169                <element name="resultCount" type="integer"/>
5170                <element name="getLabel" function="true" type="string">
5171                        <description><![CDATA[Short texual label of the search result.]]></description>
5172                        <arguments>
5173                                <argument name="item" type="integer"/>
5174                        </arguments>
5175                </element>
5176                <element name="getText" function="true" type="string">
5177                        <description><![CDATA[Complete result text.]]></description>
5178                        <arguments>
5179                                <argument name="item" type="integer"/>
5180                        </arguments>
5181                </element>
5182                <element name="getType" function="true" type="integer">
5183                        <description><![CDATA[0 = Unknown
51841 = Context
51852 = Class
51863 = Member
51874 = Integer field
51885 = Float field
51896 = String field
51907 = Object field
51918 = Function]]></description>
5192                        <arguments>
5193                                <argument name="item" type="integer"/>
5194                        </arguments>
5195                </element>
5196                <element name="getTypeName" function="true" type="string">
5197                        <arguments>
5198                                <argument name="item" type="integer"/>
5199                        </arguments>
5200                </element>
5201                <element name="search" function="true" type="integer">
5202                        <description><![CDATA[Searches the class reference and returns the number of  hits (results). getXXX(item) function can be used to retrieve the results.]]></description>
5203                        <arguments>
5204                                <argument name="Text" type="string"/>
5205                        </arguments>
5206                </element>
5207        </type>
5208        <type name="CLI" context="Command line interface">
5209<description><![CDATA[Commandline support functions.]]></description>
5210                <element name="cmdhandler" type="string"/>
5211                <element name="msgtype" type="integer" min="0" max="1"/>
5212                <element name="script" type="string"/>
5213                <element name="stdin" type="Object"/>
5214                <element name="stdout" type="Object"/>
5215                <element name="addMacro" function="true" type="void">
5216                        <arguments>
5217                                <argument name="name" type="string"/>
5218                                <argument name="numargs" type="integer"/>
5219                                <argument name="definition" type="string"/>
5220                                <argument name="helptext" type="string"/>
5221                        </arguments>
5222                </element>
5223                <element name="execute" function="true" type="void">
5224                        <arguments>
5225                                <argument name="command" type="string"/>
5226                        </arguments>
5227                </element>
5228                <element name="listMacros" function="true" type="void"><arguments/></element>
5229                <element name="print" function="true" type="void">
5230                        <arguments>
5231                                <argument name="text" type="string"/>
5232                        </arguments>
5233                </element>
5234                <element name="println" function="true" type="void">
5235                        <arguments>
5236                                <argument name="text" type="string"/>
5237                        </arguments>
5238                </element>
5239                <element name="quit" function="true"/>
5240                <element name="removeMacro" function="true" type="void">
5241                        <description><![CDATA[(numargs==-2) means remove all macros matching the name, otherwise only one definition is removed]]></description>
5242                        <arguments>
5243                                <argument name="name" type="string"/>
5244                                <argument name="numargs" type="integer"/>
5245                        </arguments>
5246                </element>
5247        </type>
5248        <type name="CreatureCharts" context="Command line interface">
5249<description><![CDATA[Manages charts for monitoring creatures performance.
5250This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.]]></description>
5251                <element name="creature" type="untyped"/>
5252                <element name="selected" type="integer"/>
5253                <element name="add" function="true">
5254                        <description><![CDATA[return the new Window object with chart as its client
5255arguments: property to be tracked]]></description>
5256                </element>
5257                <element name="addSelected" function="true">
5258                        <description><![CDATA[Add the chart for currenly selected property]]></description>
5259                </element>
5260                <element name="createChart" function="true">
5261                        <description><![CDATA[return the new chart object (can be client for Window)
5262arguments: property to be tracked]]></description>
5263                </element>
5264                <element name="removeAll" function="true"/>
5265                <element name="resetAll" function="true">
5266                        <description><![CDATA[Removes all data from the chart windows.]]></description>
5267                </element>
5268        </type>
5269        <type name="CreatureSelection" context="Command line interface">
5270                <element name="count" type="integer"/>
5271                <element name="add" function="true"/>
5272                <element name="clear" function="true"/>
5273                <element name="get" function="true"/>
5274                <element name="remove" function="true"/>
5275        </type>
5276        <type name="DynaChart" context="Command line interface">
5277<description><![CDATA[Line chart (visual object). Can be used as the client object in the Window.]]></description>
5278                <element name="xscale" type="integer" min="1" max="20"/>
5279                <element name="add" function="true">
5280                        <description><![CDATA[add new value]]></description>
5281                </element>
5282                <element name="clear" function="true" type="void"><arguments/></element>
5283                <element name="new" function="true" type="DynaChart"><arguments/></element>
5284        </type>
5285        <type name="DynaChart2D" context="Command line interface">
5286<description><![CDATA[2D Line chart (visual object). Can be used as the client object in the Window.]]></description>
5287                <element name="memory" type="integer" min="1" max="1000" default="100">
5288                        <description><![CDATA[maximum number of (x,y) pairs drawn in the graph.]]></description>
5289                </element>
5290                <element name="add" function="true" type="void">
5291                        <description><![CDATA[add (x,y) values for the next graph point]]></description>
5292                        <arguments>
5293                                <argument name="x coordinate" type="float"/>
5294                                <argument name="y coordinate" type="float"/>
5295                        </arguments>
5296                </element>
5297                <element name="clear" function="true" type="void"><arguments/></element>
5298                <element name="new" function="true" type="DynaChart2D"><arguments/></element>
5299        </type>
5300        <type name="GLDisplay" context="Command line interface">
5301<description><![CDATA[OpenGL display for the Framsticks Theater application.]]></description>
5302                <element name="active" type="integer" min="0" max="1"/>
5303                <element name="banner" type="string"/>
5304                <element name="desiredsimspeed" type="float" min="0" max="999999" default="0">
5305                        <description><![CDATA[Desired simulation speed in steps/second. 0 = simulation is disabled.]]></description>
5306                </element>
5307                <element name="fps" type="float">
5308                        <description><![CDATA[Frames Per Second (measured)]]></description>
5309                </element>
5310                <element name="fpsvisible" type="integer" min="0" max="1"/>
5311                <element name="maxfps" type="integer" min="1" max="100" default="30"/>
5312                <element name="messagesVisible" type="integer" min="0" max="1"/>
5313                <element name="messagesWindow" type="Object">
5314                        <description><![CDATA[get window object (class Window)]]></description>
5315                </element>
5316                <element name="minfps" type="integer" min="1" max="100" default="5"/>
5317                <element name="simsteps" type="integer" min="0" max="999999" default="0">
5318                        <description><![CDATA[0 = simulation is disabled. In most cases you should use desiredsimspeed as it ensures automatic throttle control.]]></description>
5319                </element>
5320                <element name="size_x" type="integer"/>
5321                <element name="size_y" type="integer"/>
5322                <element name="userspeed" type="float" min="0" max="100" default="1">
5323                        <description><![CDATA[User interface sets this property to adjust simulation speed.]]></description>
5324                </element>
5325                <element name="clearMessages" function="true"/>
5326                <element name="createWindow" function="true" type="Window">
5327                        <description><![CDATA[create and return the new window object.]]></description>
5328                        <arguments>
5329                                <argument name="style" type="integer"/>
5330                                <argument name="title" type="string"/>
5331                                <argument name="client" type="Object"/>
5332                        </arguments>
5333                </element>
5334                <element name="deleteWindow" function="true" type="void">
5335                        <arguments>
5336                                <argument type="Window"/>
5337                        </arguments>
5338                </element>
5339                <element name="draw" function="true"/>
5340                <element name="newCreatureCharts" function="true"/>
5341                <element name="newSimStatsCharts" function="true"/>
5342                <element name="quit" function="true"/>
5343                <element name="resume" function="true"/>
5344                <element name="stop" function="true"/>
5345        </type>
5346        <type name="NeuroDiagram" context="Command line interface">
5347<description><![CDATA[Can be used as the client object in the Window.]]></description>
5348                <element name="hide" function="true" type="void"><arguments/></element>
5349                <element name="new" function="true"/>
5350                <element name="showCreature" function="true" type="void">
5351                        <arguments>
5352                                <argument type="Creature"/>
5353                        </arguments>
5354                </element>
5355                <element name="showModel" function="true" type="void">
5356                        <arguments>
5357                                <argument type="Model"/>
5358                        </arguments>
5359                </element>
5360        </type>
5361        <type name="RowFormat" context="Command line interface">
5362<description><![CDATA[Used for creating simple listings of objects (in command line applications). There is only one shared RowFormat object. In order to use RowFormat you should first configure it, by adding column definitions (prepare or addColumn), i.e. defining column names and widths. Then, the "format" method can be invoked on a number of objects (of the same class) returning the formatted rows of the table.
5363
5364Example:
5365RowFormat.clear();
5366RowFormat.prepare(Genotype.*,"name/20,strsiz/5,nnsiz/5,fit/6");
5367CLI.println(RowFormat.format(Genotype.*));]]></description>
5368                <element name="fieldsep" type="string">
5369                        <description><![CDATA[The character used for separating columns]]></description>
5370                </element>
5371                <element name="fillchar" type="string">
5372                        <description><![CDATA[The characted used for padding the columns contents]]></description>
5373                </element>
5374                <element name="header" type="string">
5375                        <description><![CDATA[Contains the field names with the same formatting applied (i.e. with fill and separators)]]></description>
5376                </element>
5377                <element name="addColumn" function="true" type="void">
5378                        <description><![CDATA[Low level call, adds a single column. "prepare" is better.]]></description>
5379                        <arguments>
5380                                <argument name="Field#" type="integer"/>
5381                                <argument name="Column width" type="integer"/>
5382                        </arguments>
5383                </element>
5384                <element name="clear" function="true" type="void">
5385                        <description><![CDATA[Remove all existing column definitions.]]></description>
5386<arguments/></element>
5387                <element name="format" function="true" type="string">
5388                        <description><![CDATA[Returns the formatted string taking data from the supplied object.]]></description>
5389                        <arguments>
5390                                <argument name="Object" type="Object"/>
5391                        </arguments>
5392                </element>
5393                <element name="prepare" function="true" type="void">
5394                        <description><![CDATA[Adds a number of columns, described as FIELD_NAME/WIDTH, columns are separated by "," (comma). Existing column definitions are not removed. Usually you will need to call "clear()" before "prepare".]]></description>
5395                        <arguments>
5396                                <argument name="Object" type="Object"/>
5397                                <argument name="Column Descriptions" type="string"/>
5398                        </arguments>
5399                </element>
5400        </type>
5401        <type name="ShowManager" context="Command line interface">
5402                <element name="changedProperty" type="integer"/>
5403                <element name="changedPropertyId" type="string"/>
5404                <element name="code" type="string"/>
5405                <element name="dispinfo" type="integer" min="0" max="2"/>
5406                <element name="expdef" type="string"/>
5407                <element name="info" type="string"/>
5408                <element name="mode" type="integer" min="0" max="2"/>
5409                <element name="name" type="string"/>
5410                <element name="regname" type="string"/>
5411                <element name="show" type="string"/>
5412                <element name="showlog" type="integer" min="0" max="1"/>
5413                <element name="switchmode" type="integer" min="0" max="2"/>
5414                <element name="switchshows" type="string">
5415                        <description><![CDATA[names of the shows participating in automatic switching (comma separated). Use * as a wildcard.]]></description>
5416                </element>
5417                <element name="switchtime" type="integer" min="0" max="9999">
5418                        <description><![CDATA[time between switching (seconds)]]></description>
5419                </element>
5420                <element name="userspeed" type="integer" min="0" max="5" default="3"/>
5421                <element name="about" function="true"/>
5422                <element name="add" function="true"/>
5423                <element name="addGroup" function="true"/>
5424                <element name="clear" function="true"/>
5425                <element name="dummy" function="true">
5426                        <description><![CDATA[This is the empty item in the Theater's menu]]></description>
5427                </element>
5428                <element name="reload" function="true"/>
5429                <element name="remove" function="true"/>
5430                <element name="removeGroup" function="true"/>
5431        </type>
5432        <type name="SignalView" context="Command line interface">
5433                <element name="labels" type="string">
5434                        <description><![CDATA[The label formula should return a text to be displayed over the signal source, presumably by reading some values from the supplied Signal object. It is especially useful for more sophisticated signal usage scenarios with Signal.value holding object references (the default signal label only shows <XXX Object at xxxxx> in such cases)]]></description>
5435                </element>
5436                <element name="mode" type="integer" min="0" max="2"/>
5437                <element name="addMap" function="true" type="void">
5438                        <arguments>
5439                                <argument name="channel" type="string"/>
5440                                <argument name="color" type="integer"/>
5441                        </arguments>
5442                </element>
5443                <element name="addSignals" function="true" type="void">
5444                        <arguments>
5445                                <argument name="channel" type="string"/>
5446                                <argument name="color" type="integer"/>
5447                                <argument name="angle_x" type="integer"/>
5448                                <argument name="angle_y" type="integer"/>
5449                                <argument name="angle_z" type="integer"/>
5450                        </arguments>
5451                </element>
5452                <element name="addSignalsFilter" function="true" type="void">
5453                        <arguments>
5454                                <argument name="channel" type="string"/>
5455                                <argument name="color" type="integer"/>
5456                                <argument name="angle_x" type="integer"/>
5457                                <argument name="angle_y" type="integer"/>
5458                                <argument name="angle_z" type="integer"/>
5459                                <argument name="flavor" type="integer"/>
5460                                <argument name="filter" type="integer"/>
5461                        </arguments>
5462                </element>
5463                <element name="clear" function="true"/>
5464        </type>
5465        <type name="SimStatsCharts" context="Command line interface">
5466<description><![CDATA[Manages charts for monitoring simulator statistics.
5467This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.]]></description>
5468                <element name="selected" type="integer"/>
5469                <element name="add" function="true"/>
5470                <element name="createChart" function="true"/>
5471                <element name="removeAll" function="true"/>
5472                <element name="resetAll" function="true">
5473                        <description><![CDATA[Removes all data from the chart windows.]]></description>
5474                </element>
5475                <element name="sscAddSelected" function="true"/>
5476        </type>
5477        <type name="TrackingCam" context="Command line interface">
5478<description><![CDATA[Camera object with the automatic target tracking ability.]]></description>
5479                <element name="cam_change" type="integer" min="0" max="5" default="3"/>
5480                <element name="cam_chspeed" type="float" min="0.1" max="10" default="1"/>
5481                <element name="cam_dir" type="float" min="0" max="360" default="30"/>
5482                <element name="cam_distrac" type="integer" min="0" max="1" default="0">
5483                        <description><![CDATA[Suspend automatic tracking when the camera is moved manually]]></description>
5484                </element>
5485                <element name="cam_h" type="float" min="0" max="360" default="45">
5486                        <description><![CDATA[0=side view, 90=top view]]></description>
5487                </element>
5488                <element name="cam_restrac" type="integer" min="0" max="100" default="10">
5489                        <description><![CDATA[Restore automatic tracking after some period of time
5490(0 to never restore automatic tracking)]]></description>
5491                </element>
5492                <element name="cam_tracking" type="integer" min="0" max="3" default="1"/>
5493                <element name="cam_trspeed" type="float" min="0.1" max="10" default="5"/>
5494                <element name="cam_zoom" type="float" min="0.2" max="3" default="0.8"/>
5495                <element name="cam_restore" function="true" type="void">
5496                        <description><![CDATA[Update camera position and restore automatic tracking]]></description>
5497<arguments/></element>
5498                <element name="moveTarget" function="true" type="void">
5499                        <description><![CDATA[notify about the target location/size change]]></description>
5500                        <arguments>
5501                                <argument name="location x" type="float"/>
5502                                <argument name="location y" type="float"/>
5503                                <argument name="location z" type="float"/>
5504                                <argument name="target size" type="float"/>
5505                        </arguments>
5506                </element>
5507                <element name="setTarget" function="true" type="void">
5508                        <description><![CDATA[select a new target for the camera]]></description>
5509                        <arguments>
5510                                <argument name="location x" type="float"/>
5511                                <argument name="location y" type="float"/>
5512                                <argument name="location z" type="float"/>
5513                                <argument name="target size" type="float"/>
5514                        </arguments>
5515                </element>
5516                <element name="setViewDir" function="true" type="void">
5517                        <description><![CDATA[heading: 0..360, height: -90..+90]]></description>
5518                        <arguments>
5519                                <argument name="heading angle" type="float"/>
5520                                <argument name="height angle" type="float"/>
5521                        </arguments>
5522                </element>
5523        </type>
5524        <type name="VisualStyle" context="Command line interface">
5525                <element name="changedProperty" type="integer"/>
5526                <element name="changedPropertyId" type="string"/>
5527                <element name="code" type="string"/>
5528                <element name="info" type="string"/>
5529                <element name="modelpan" type="integer" min="0" max="3">
5530                        <description><![CDATA[]]></description>
5531                </element>
5532                <element name="name" type="string"/>
5533                <element name="neurons" type="integer" min="0" max="1"/>
5534                <element name="shownames" type="integer" min="0" max="1">
5535                        <description><![CDATA[]]></description>
5536                </element>
5537                <element name="smooth" type="integer" min="0" max="1"/>
5538                <element name="style" type="string"/>
5539                <element name="tex" type="integer" min="0" max="2"/>
5540                <element name="worldpan" type="integer" min="0" max="3">
5541                        <description><![CDATA[]]></description>
5542                </element>
5543                <element name="add" function="true"/>
5544                <element name="addGroup" function="true"/>
5545                <element name="clear" function="true"/>
5546                <element name="rebuild" function="true"/>
5547                <element name="remove" function="true"/>
5548                <element name="removeGroup" function="true"/>
5549                <element name="streload" function="true"/>
5550        </type>
5551        <type name="Window" context="Command line interface">
5552<description><![CDATA[Window object, used in the Framsticks Theater application.
5553This class has no corresponding static object. If you want to use it, you have to create an object or get a reference to the existing object.
5554 See also: GLDisplay]]></description>
5555                <element name="backcolor" type="integer">
5556                        <description><![CDATA[format: 0xAABBGGRR (alpha,blue,green,red)]]></description>
5557                </element>
5558                <element name="client" type="Object">
5559                        <description><![CDATA[what is displayed in the window]]></description>
5560                </element>
5561                <element name="pos_x" type="integer"/>
5562                <element name="pos_y" type="integer"/>
5563                <element name="size_x" type="integer"/>
5564                <element name="size_y" type="integer"/>
5565                <element name="style" type="integer">
5566                        <description><![CDATA[bitfield:
55671 - border
55682 - title
55694 - Opaque background
55708 - Close button
557116 - resizable]]></description>
5572                </element>
5573                <element name="title" type="string"/>
5574        </type>
5575</framscript>
Note: See TracBrowser for help on using the repository browser.