Index: /java/FramclipsePlugin/src/main/resources/framscript.xml
===================================================================
--- /java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 435)
+++ /java/FramclipsePlugin/src/main/resources/framscript.xml	(revision 436)
@@ -90,5 +90,5 @@
 	</type>
 	<type name="CheckpointEvent" context="Global context">
-<description><![CDATA[CheckpointEvent]]></description>
+<description><![CDATA[Used in onSlaveCheckpoint() which is called when a Slave Simulator checkpoint is reached.]]></description>
 		<element name="index" type="integer" flags="1"/>
 		<element name="slave" type="Simulator" flags="1"/>
@@ -510,4 +510,7 @@
 <arguments/></element>
 		<element name="toString" type="string" flags="257"/>
+		<element name="clone" function="true" type="Dictionary" flags="256">
+			<description><![CDATA[The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));]]></description>
+<arguments/></element>
 	</type>
 	<type name="File" context="Global context">
@@ -620,9 +623,9 @@
 		</element>
 		<element name="close" function="true" type="string" flags="32">
-			<description><![CDATA[returns file contents if it has been buffered]]></description>
+			<description><![CDATA[Returns file contents if it has been buffered.]]></description>
 <arguments/></element>
 		<element name="exists" function="true" type="integer" min="0" max="1" flags="32">
 			<description><![CDATA[Sample:
-File.exists("default.sim") -> return 0 or 1]]></description>
+File.exists("walking.gen") -> returns 0 or 1.]]></description>
 <arguments/></element>
 		<element name="pathseparator" type="string" flags="33"/>
@@ -1507,6 +1510,12 @@
 			<description><![CDATA[Genes as a string of characters]]></description>
 		</element>
-		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8449"/>
-		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="256"/>
+		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8449">
+			<description><![CDATA[Use 'is_valid' instead of 'isValid'.]]></description>
+		</element>
+		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="256">
+			<description><![CDATA[0 = invalid genotype
+1 = valid genotype
+-1 = validity is not known. This is a transient state. The value of "is_valid" will never be -1 when read. It is safe to treat is_valid as boolean in statements like "if (g.is_valid) ...". Setting "is_valid=-1" will make it 0 or 1 again. This third state (-1) is only needed for loading Genotype objects from files where the "is_valid" field might not be present.]]></description>
+		</element>
 		<element name="getConverted" function="true" type="Geno" flags="256">
 			<arguments>
@@ -1593,6 +1602,12 @@
 		<element name="user3" type="untyped"/>
 		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8227"/>
-		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="32"/>
+		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8227">
+			<description><![CDATA[Use 'is_valid' instead of 'isValid'.]]></description>
+		</element>
+		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="32">
+			<description><![CDATA[0 = invalid genotype
+1 = valid genotype
+-1 = validity is not known. This is a transient state. The value of "is_valid" will never be -1 when read. It is safe to treat is_valid as boolean in statements like "if (g.is_valid) ...". Setting "is_valid=-1" will make it 0 or 1 again. This third state (-1) is only needed for loading Genotype objects from files where the "is_valid" field might not be present.]]></description>
+		</element>
 		<element name="getNormalized" function="true" type="float" flags="35">
 			<arguments>
@@ -2236,5 +2251,5 @@
 		</element>
 		<element name="glyph" type="string">
-			<description><![CDATA[<html>The neuron icon for use in NN diagrams, encoded as a coma-separated sequence of integer numbers.<ul>
+			<description><![CDATA[<html>The neuron icon for use in NN diagrams, encoded as a comma-separated sequence of integer numbers.<ul>
 <li>N = the total number of all numbers following this one
 <li>NS = the number of line sequences<br>
@@ -3230,5 +3245,5 @@
 		</element>
 		<element name="load" function="true" type="void" flags="32">
-			<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>
+			<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()". Use "import" if you don't want to loose the old simulator state.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -3313,6 +3328,13 @@
 <arguments/></element>
 		<element name="loadexpdef" function="true" type="void"><arguments/></element>
-		<element name="usercode" type="string" min="1" flags="2048">
-			<description><![CDATA[This script overrides the experiment definition]]></description>
+		<element name="usercode" type="string" min="1">
+			<description><![CDATA[You can override any function from the original experiment definition script. Use the same function names and provide alternative implementations.
+Example:
+
+function onBorn(cr)
+{
+  Simulator.print("A creature is born: "+cr.name);
+  super_onBorn(cr); //calls the original implementation
+}]]></description>
 		</element>
 		<element name="autosaveperiod" type="integer" min="0" max="100000">
@@ -3322,6 +3344,6 @@
 Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
 		</element>
-		<element name="overwrite" type="integer" min="0" max="1">
-			<description><![CDATA[Overwite existing files or create their backups]]></description>
+		<element name="overwrite" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Lets you choose what to do when a file is created with the same name as an already existing file: overwite the existing file or create its backup?]]></description>
 		</element>
 		<element name="filecomm" type="integer" min="0" max="1" default="1">
@@ -3349,8 +3371,4 @@
 			<description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
 <arguments/></element>
-		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
-			<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.
-If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
-		</element>
 		<element name="new" function="true" type="Simulator" flags="32"><arguments/></element>
 		<element name="slaves" type="SlaveSimulators" flags="35"/>
@@ -3396,5 +3414,5 @@
 		</element>
 		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+		<element name="wrldbnd" type="integer" min="0" max="2" default="0">
 			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
 		</element>
@@ -4384,5 +4402,5 @@
 		</element>
 		<element name="load" function="true" type="void" flags="32">
-			<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>
+			<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()". Use "import" if you don't want to loose the old simulator state.]]></description>
 			<arguments>
 				<argument name="filename" type="string"/>
@@ -4467,6 +4485,13 @@
 <arguments/></element>
 		<element name="loadexpdef" function="true" type="void"><arguments/></element>
-		<element name="usercode" type="string" min="1" flags="2048">
-			<description><![CDATA[This script overrides the experiment definition]]></description>
+		<element name="usercode" type="string" min="1">
+			<description><![CDATA[You can override any function from the original experiment definition script. Use the same function names and provide alternative implementations.
+Example:
+
+function onBorn(cr)
+{
+  Simulator.print("A creature is born: "+cr.name);
+  super_onBorn(cr); //calls the original implementation
+}]]></description>
 		</element>
 		<element name="autosaveperiod" type="integer" min="0" max="100000">
@@ -4476,6 +4501,6 @@
 Slave simulators (in multithreaded experiments) ignore this setting and never create autosave files.]]></description>
 		</element>
-		<element name="overwrite" type="integer" min="0" max="1">
-			<description><![CDATA[Overwite existing files or create their backups]]></description>
+		<element name="overwrite" type="integer" min="0" max="1" default="0">
+			<description><![CDATA[Lets you choose what to do when a file is created with the same name as an already existing file: overwite the existing file or create its backup?]]></description>
 		</element>
 		<element name="filecomm" type="integer" min="0" max="1" default="1">
@@ -4503,8 +4528,4 @@
 			<description><![CDATA[Clears groups and loads default values for simulator parameters, then calls onExpDefLoad() of the current experiment definition.]]></description>
 <arguments/></element>
-		<element name="resetonexpdef" type="integer" min="0" max="1" default="1">
-			<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.
-If turned off: parameters from previous experiment definition will remain (dangerous).]]></description>
-		</element>
 		<element name="new" function="true" type="Simulator" flags="32"><arguments/></element>
 		<element name="slaves" type="SlaveSimulators" flags="35"/>
@@ -4705,5 +4726,5 @@
 	</type>
 	<type name="StopEvent" context="Global context">
-<description><![CDATA[StopEvent]]></description>
+<description><![CDATA[Used in onSlaveStop() which is called when a Slave Simulator is stopped.]]></description>
 		<element name="index" type="integer" flags="1"/>
 		<element name="slave" type="Simulator" flags="1"/>
@@ -4712,5 +4733,5 @@
 <description><![CDATA[String functions library.]]></description>
 		<element name="len" function="true" type="integer">
-			<description><![CDATA[String.len("abcdef") -> 6]]></description>
+			<description><![CDATA[String.len("abcdef") == 6]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4718,5 +4739,5 @@
 		</element>
 		<element name="replace" function="true" type="string">
-			<description><![CDATA[String.replace("abcdef","cd","X") -> "abXef"]]></description>
+			<description><![CDATA[String.replace("abcdef","cd","X") == "abXef"]]></description>
 			<arguments>
 				<argument name="input_string" type="string"/>
@@ -4727,5 +4748,6 @@
 		<element name="split" function="true" type="Vector">
 			<description><![CDATA[return the vector of substrings, cut at separator positions.
-subsequent separators give empty words: split("word1---word2-word3","-") -> ["word1","","","word2","word3"]]]></description>
+subsequent separators give empty words:
+split("word1---word2-word3","-") returns ["word1","","","word2","word3"]]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4735,5 +4757,6 @@
 		<element name="split2" function="true" type="Vector">
 			<description><![CDATA[return the vector of substrings, cut at separator positions.
-subsequent separators are treated as one: split2("word1---word2-word3","-") -> ["word1","word2","word3"]]]></description>
+subsequent separators are treated as one:
+split2("word1---word2-word3","-") returns ["word1","word2","word3"]]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4742,6 +4765,6 @@
 		</element>
 		<element name="indexOf" function="true" type="integer">
-			<description><![CDATA[String.indexOf("abcdef","cd") -> 2
-String.indexOf("abcdef","dc") -> -1
+			<description><![CDATA[String.indexOf("abcdef","cd") == 2
+String.indexOf("abcdef","dc") == -1
 ]]></description>
 			<arguments>
@@ -4751,6 +4774,6 @@
 		</element>
 		<element name="indexOfStart" function="true" type="integer">
-			<description><![CDATA[String.indexOfStart("abcdef","cd",1) -> 2
-String.indexOfStart("abcdef","cd",3) -> -1
+			<description><![CDATA[String.indexOfStart("abcdef","cd",1) == 2
+String.indexOfStart("abcdef","cd",3) == -1
 ]]></description>
 			<arguments>
@@ -4761,5 +4784,5 @@
 		</element>
 		<element name="substr" function="true" type="string">
-			<description><![CDATA[String.substr("abcdef",3,2) -> ="de"]]></description>
+			<description><![CDATA[String.substr("abcdef",3,2) == "de"]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4769,5 +4792,5 @@
 		</element>
 		<element name="substr" function="true" type="string">
-			<description><![CDATA[String.substr("abcdef",3) -> ="def"]]></description>
+			<description><![CDATA[String.substr("abcdef",3) == "def"]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4776,5 +4799,5 @@
 		</element>
 		<element name="left" function="true" type="string">
-			<description><![CDATA[String.left("abcdef",3) -> ="abc"]]></description>
+			<description><![CDATA[String.left("abcdef",3) == "abc"]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4783,5 +4806,5 @@
 		</element>
 		<element name="right" function="true" type="string">
-			<description><![CDATA[String.right("abcdef",3) -> ="def"]]></description>
+			<description><![CDATA[String.right("abcdef",3) == "def"]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4822,11 +4845,11 @@
 
 Examples:
- String.format("|%07.2f|",Math.pi) -> ="|0003.14|"
- String.format("|%04x|",255) -> ="|00ff|"
- String.format("|%7s|","text") -> ="|   text|"
- String.format("|%-7d|",12345) -> ="|12345  |"
- String.format("%t",Math.time) -> ="Sun Apr 29 19:22:02 2007"
- String.format("%T",Math.time) -> ="2007-05-29 19:22:02"
- String.format("x=%d%%",100) -> ="100%"]]></description>
+ String.format("|%07.2f|",Math.pi) == "|0003.14|"
+ String.format("|%04x|",255) == "|00ff|"
+ String.format("|%7s|","text") == "|   text|"
+ String.format("|%-7d|",12345) == "|12345  |"
+ String.format("%t",Math.time) == "Sun Apr 29 19:22:02 2007"
+ String.format("%T",Math.time) == "2007-05-29 19:22:02"
+ String.format("x=%d%%",100) == "100%"]]></description>
 			<arguments>
 				<argument name="format_string" type="string"/>
@@ -4849,7 +4872,7 @@
 			<description><![CDATA[Returns an integer, a floating point, or null if the string cannot be parsed as a number.
 The 'typeof' operator can be used to distinguish between an integer and a floating point value:
-typeof String.parseNumber("qwerty") is 0
-typeof String.parseNumber("1234") is 1
-typeof String.parseNumber("3.14") is 2.]]></description>
+typeof(String.parseNumber("qwerty")) == "null"
+typeof(String.parseNumber("1234")) == "int"
+typeof(String.parseNumber("3.14")) == "float"]]></description>
 			<arguments>
 				<argument type="string"/>
@@ -4975,4 +4998,7 @@
 		</element>
 		<element name="iterator" type="Object" flags="257"/>
+		<element name="clone" function="true" type="Vector" flags="256">
+			<description><![CDATA[The resulting clone is a shallow copy (contains the same object references as the original). A deep copy can be obtained through serialization: String.deserialize(String.serialize(object));]]></description>
+<arguments/></element>
 	</type>
 	<type name="World" context="Global context">
@@ -4993,5 +5019,5 @@
 		</element>
 		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+		<element name="wrldbnd" type="integer" min="0" max="2" default="0">
 			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
 		</element>
@@ -5389,6 +5415,12 @@
 		<element name="user3" type="untyped"/>
 		<element name="mutate" function="true" type="void"><arguments/></element>
-		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8227"/>
-		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="32"/>
+		<element name="isValid" type="integer" min="0" max="1" deprecated="true" flags="8227">
+			<description><![CDATA[Use 'is_valid' instead of 'isValid'.]]></description>
+		</element>
+		<element name="is_valid" type="integer" min="-1" max="1" default="-1" flags="32">
+			<description><![CDATA[0 = invalid genotype
+1 = valid genotype
+-1 = validity is not known. This is a transient state. The value of "is_valid" will never be -1 when read. It is safe to treat is_valid as boolean in statements like "if (g.is_valid) ...". Setting "is_valid=-1" will make it 0 or 1 again. This third state (-1) is only needed for loading Genotype objects from files where the "is_valid" field might not be present.]]></description>
+		</element>
 		<element name="getNormalized" function="true" type="float" flags="35">
 			<arguments>
@@ -5991,4 +6023,10 @@
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="worldbgcolor" type="integer" min="0" max="16777215" default="16764040" flags="192">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="hideworld" type="integer" min="0" max="1" default="0" flags="192">
+			<description><![CDATA[Can be useful for screenshots]]></description>
+		</element>
 		<element name="modelpan" type="integer" min="0" max="3" default="1" flags="192">
 			<description><![CDATA[]]></description>
@@ -6061,4 +6099,10 @@
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="worldbgcolor" type="integer" min="0" max="16777215" default="16764040" flags="192">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="hideworld" type="integer" min="0" max="1" default="0" flags="192">
+			<description><![CDATA[Can be useful for screenshots]]></description>
+		</element>
 		<element name="modelpan" type="integer" min="0" max="3" default="1" flags="192">
 			<description><![CDATA[]]></description>
@@ -6105,5 +6149,5 @@
 		</element>
 		<element name="wrldwat" type="float" min="-20" max="200" default="-1.0"/>
-		<element name="wrldbnd" type="integer" min="0" max="2" default="1">
+		<element name="wrldbnd" type="integer" min="0" max="2" default="0">
 			<description><![CDATA[Teleporting a creature that is outside of the world area is attempted every 'performance sampling period' steps. Teleport succeeds only when the target location in the world is empty (there is no collision).]]></description>
 		</element>
@@ -6348,9 +6392,4 @@
 		<element name="active" type="integer" min="0" max="1" flags="1"/>
 		<element name="banner" type="string"/>
-		<element name="user_interaction" type="integer" min="0" max="1" default="1">
-			<description><![CDATA[Bit field:
-1 - menu access
-]]></description>
-		</element>
 		<element name="minfps" type="integer" min="1" max="100" default="5"/>
 		<element name="maxfps" type="integer" min="1" max="100" default="30"/>
@@ -6381,4 +6420,304 @@
 		<element name="newCreatureCharts" function="true"/>
 		<element name="newSimStatsCharts" function="true"/>
+		<element name="user_interaction" type="integer" min="0" max="31" default="31">
+			<description><![CDATA[Bit field:
+1 - menu access
+2 - rotate camera
+4 - use manupulator
+8 - select creatures
+16 - change ShowManager options in menu (including switching shows)
+Bits 2-16 are not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="world_visibility" type="integer" min="0" max="7" default="7">
+			<description><![CDATA[Bit field:
+1 - background/panorama
+2 - environment
+4 - creatures
+Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="menu_visible" type="integer" min="0" max="1">
+			<description><![CDATA[Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="menu_state" type="string">
+			<description><![CDATA[Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="back_action" type="string">
+			<description><![CDATA[Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="skybox" type="string">
+			<description><![CDATA[Traditionally, all visualization aspects belonged to the *.style file, which is not yet implemented in mobi version. But actually, changing some (or even all) aspects of the world directly in the show might be highly desirable in many "interactive" scripts. So this is the forerunner.
+Skybox name can be a list of 6 cube face textures (separated by slash), single name with _ placeholder (will be replaced by 1-6 for 6 cube faces) or a regular name (the same texture on all 6 faces).
+Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="bgcolor" type="integer">
+			<description><![CDATA[Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="world3d" type="Obj3D" flags="1">
+			<description><![CDATA[Not implemented in the old Framsticks Theater application.]]></description>
+		</element>
+		<element name="project3D" function="true" type="XYZ">
+			<description><![CDATA[Returns 2D position of the 3D point in world or modelviewer coordinates, 'object' can be Obj3D or GUIElement/Model
+Not implemented in the old Framsticks Theater application.]]></description>
+			<arguments>
+				<argument name="object" type="untyped"/>
+				<argument name="point" type="XYZ"/>
+			</arguments>
+		</element>
+	</type>
+	<type name="GUI" context="Command line interface">
+<description><![CDATA[Manage GUI elements]]></description>
+		<element name="newLabel" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="newButton" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="newImage" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="newFrame" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="newModel" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="genotype" type="string"/>
+			</arguments>
+		</element>
+		<element name="newTextview" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="newList" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="newDrawing" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="newBubble" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="newSlider" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="value" type="integer"/>
+				<argument name="min" type="integer"/>
+				<argument name="max" type="integer"/>
+			</arguments>
+		</element>
+		<element name="newGroup" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="newTextField" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+				<argument name="text" type="string"/>
+			</arguments>
+		</element>
+		<element name="get" function="true" type="GUIElement">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="removeElement" function="true" type="void">
+			<arguments>
+				<argument name="object or name" type="untyped"/>
+			</arguments>
+		</element>
+		<element name="removeAll" function="true" type="void"><arguments/></element>
+		<element name="fontHeight" function="true" type="void">
+			<arguments>
+				<argument name="font id" type="integer"/>
+			</arguments>
+		</element>
+		<element name="clipboard" type="string"/>
+		<element name="setTimeout" function="true" type="void">
+			<description><![CDATA[Events can be rescheduled by reusing identifiers. Cancel the event by setting its function to null.]]></description>
+			<arguments>
+				<argument name="identifier" type="string"/>
+				<argument name="timeout" type="float"/>
+				<argument name="function" type="JumpTarget"/>
+			</arguments>
+		</element>
+		<element name="messageBox" function="true" type="void">
+			<arguments>
+				<argument name="title" type="string"/>
+				<argument name="message" type="string"/>
+			</arguments>
+		</element>
+		<element name="messageBox4" function="true" type="void">
+			<arguments>
+				<argument name="title" type="string"/>
+				<argument name="message" type="string"/>
+				<argument name="buttons" type="Vector"/>
+				<argument name="function" type="JumpTarget"/>
+			</arguments>
+		</element>
+		<element name="playSound" function="true" type="void">
+			<arguments>
+				<argument name="name" type="string"/>
+			</arguments>
+		</element>
+		<element name="KEY_BACK" type="integer" flags="1"/>
+		<element name="KEY_MENU" type="integer" flags="1"/>
+		<element name="KEY_SEARCH" type="integer" flags="1"/>
+		<element name="SHARING_HTML" type="string" flags="1"/>
+		<element name="top_left" type="Element" flags="1"/>
+		<element name="top_center" type="Element" flags="1"/>
+		<element name="top_right" type="Element" flags="1"/>
+		<element name="bottom_left" type="Element" flags="1"/>
+		<element name="bottom_center" type="Element" flags="1"/>
+		<element name="bottom_right" type="Element" flags="1"/>
+	</type>
+	<type name="GUIElement" context="Command line interface">
+<description><![CDATA[GUI element]]></description>
+		<element name="name" type="string"/>
+		<element name="text" type="string"/>
+		<element name="image" type="untyped"/>
+		<element name="bgcolor" type="integer"/>
+		<element name="fgcolor" type="integer"/>
+		<element name="align" type="integer">
+			<description><![CDATA[labels: -1/0/1 means left/center/right, buttons and lists: 0/1 means horizontal/vertical]]></description>
+		</element>
+		<element name="valign" type="integer">
+			<description><![CDATA[-1/0/1 means top/center/bottom]]></description>
+		</element>
+		<element name="x" type="float"/>
+		<element name="y" type="float"/>
+		<element name="width" type="float"/>
+		<element name="height" type="float"/>
+		<element name="tooltip" type="string"/>
+		<element name="rowheight" type="float"/>
+		<element name="addItem" function="true" type="integer">
+			<arguments>
+				<argument name="label" type="string"/>
+				<argument name="image" type="string"/>
+			</arguments>
+		</element>
+		<element name="insertItem" function="true" type="integer">
+			<arguments>
+				<argument name="position" type="integer"/>
+				<argument name="label" type="string"/>
+				<argument name="image" type="string"/>
+			</arguments>
+		</element>
+		<element name="getItemLabel" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="getItemImage" function="true" type="string">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="setItemLabel" function="true" type="void">
+			<arguments>
+				<argument name="index" type="integer"/>
+				<argument name="label" type="string"/>
+			</arguments>
+		</element>
+		<element name="setItemImage" function="true" type="void">
+			<arguments>
+				<argument name="index" type="integer"/>
+				<argument name="image" type="string"/>
+			</arguments>
+		</element>
+		<element name="removeItem" function="true" type="void">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="removeAllItems" function="true" type="void"><arguments/></element>
+		<element name="itemcount" type="integer" flags="1"/>
+		<element name="rect" type="Rectangle"/>
+		<element name="absoluteRect" type="Rectangle"/>
+		<element name="setRect" function="true" type="void">
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="width" type="float"/>
+				<argument name="height" type="float"/>
+			</arguments>
+		</element>
+		<element name="setPos" function="true" type="void">
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+			</arguments>
+		</element>
+		<element name="setAutolayout" function="true" type="void">
+			<description><![CDATA[rel_* values refer to the parent element's dimensions]]></description>
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="width" type="float"/>
+				<argument name="height" type="float"/>
+				<argument name="rel_x" type="float"/>
+				<argument name="rel_y" type="float"/>
+				<argument name="rel_width" type="float"/>
+				<argument type="float"/>
+			</arguments>
+		</element>
+		<element name="minimalRect" type="Rectangle" flags="1"/>
+		<element name="font" type="integer" min="0" max="5"/>
+		<element name="selected" type="integer"/>
+		<element name="data" type="untyped"/>
+		<element name="mode" type="integer"/>
+		<element name="enabled" type="integer"/>
+		<element name="autorepeat" type="integer" min="0" max="1"/>
+		<element name="style" type="integer"/>
+		<element name="userdata" type="untyped"/>
+		<element name="visible" type="integer" min="0" max="1"/>
+		<element name="addTo" function="true" type="void">
+			<arguments>
+				<argument name="parent" type="GUIElement"/>
+			</arguments>
+		</element>
+		<element name="scrollIntoView" function="true" type="void">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="scroll_x" type="float" flags="1"/>
+		<element name="scroll_y" type="float" flags="1"/>
+		<element name="focus" type="integer" min="0" max="1"/>
+		<element name="edit" function="true" type="void">
+			<arguments>
+				<argument name="characters" type="string"/>
+			</arguments>
+		</element>
+		<element name="orient" type="Orient" flags="1"/>
+		<element name="min" type="float"/>
+		<element name="max" type="float"/>
+		<element name="animSetBegin" function="true" type="void"><arguments/></element>
+		<element name="animSetEnd" function="true" type="void"><arguments/></element>
+		<element name="startAnimation" function="true" type="void">
+			<arguments>
+				<argument name="duration" type="float"/>
+			</arguments>
+		</element>
 	</type>
 	<type name="ImageExport" context="Command line interface">
@@ -6408,4 +6747,58 @@
 		<element name="imgex_lastfile" type="string" flags="18"/>
 	</type>
+	<type name="Material" context="Command line interface">
+<description><![CDATA[Material object]]></description>
+		<element name="new" function="true" type="Material"><arguments/></element>
+		<element name="color" type="string" flags="256"/>
+		<element name="lighting" type="integer" min="0" max="1" flags="256"/>
+		<element name="shine" type="integer" flags="256"/>
+		<element name="texture" type="string" flags="256"/>
+		<element name="shader" type="Shader" flags="256"/>
+	</type>
+	<type name="Matrix" context="Command line interface">
+<description><![CDATA[4x4 Marix object]]></description>
+		<element name="new" function="true" type="Matrix"><arguments/></element>
+		<element name="newRotation" function="true" type="Matrix">
+			<arguments>
+				<argument name="angles" type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="newTranslation" function="true" type="Matrix">
+			<arguments>
+				<argument name="translation" type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="newScale" function="true" type="Matrix">
+			<arguments>
+				<argument name="angles" type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="add" function="true" type="Matrix" flags="256">
+			<arguments>
+				<argument name="another matrix" type="Matrix"/>
+			</arguments>
+		</element>
+		<element name="mul" function="true" type="Matrix" flags="256">
+			<arguments>
+				<argument name="another matrix" type="Matrix"/>
+			</arguments>
+		</element>
+		<element name="translate" function="true" type="Matrix" flags="256">
+			<arguments>
+				<argument name="translation" type="XYZ"/>
+			</arguments>
+		</element>
+		<element name="rotate" function="true" type="Matrix" flags="256">
+			<arguments>
+				<argument name="axis" type="XYZ"/>
+				<argument name="angle" type="float"/>
+			</arguments>
+		</element>
+		<element name="scale" function="true" type="Matrix" flags="256">
+			<arguments>
+				<argument name="scale" type="XYZ"/>
+			</arguments>
+		</element>
+	</type>
 	<type name="NeuroDiagram" context="Command line interface">
 <description><![CDATA[Can be used as the client object in the Window.]]></description>
@@ -6422,4 +6815,72 @@
 		</element>
 		<element name="hide" function="true" type="void" flags="288"><arguments/></element>
+	</type>
+	<type name="Obj3D" context="Command line interface">
+<description><![CDATA[3D object]]></description>
+		<element name="newEmpty" function="true" type="Obj3D"><arguments/></element>
+		<element name="newFromCreature" function="true" type="Obj3D">
+			<arguments>
+				<argument type="untyped"/>
+			</arguments>
+		</element>
+		<element name="newText" function="true" type="Obj3D">
+			<arguments>
+				<argument name="text" type="string"/>
+				<argument name="horizontal align" type="integer"/>
+				<argument name="vertical align" type="integer"/>
+				<argument name="transformation" type="Matrix"/>
+			</arguments>
+		</element>
+		<element name="load" function="true" type="Obj3D">
+			<arguments>
+				<argument name="filename" type="string"/>
+			</arguments>
+		</element>
+		<element name="name" type="string" flags="256"/>
+		<element name="visible" type="integer" min="0" max="1" flags="256"/>
+		<element name="transparent" type="integer" min="0" max="1" flags="256"/>
+		<element name="material" type="Material" flags="256"/>
+		<element name="add" function="true" type="void" flags="256">
+			<arguments>
+				<argument name="child object" type="Obj3D"/>
+			</arguments>
+		</element>
+		<element name="get" function="true" type="Obj3D" flags="256">
+			<arguments>
+				<argument name="index" type="integer"/>
+			</arguments>
+		</element>
+		<element name="children" type="integer" flags="257"/>
+		<element name="parent" type="Obj3D" flags="257"/>
+		<element name="removeFromParent" function="true" type="void" flags="256"><arguments/></element>
+		<element name="deleteChildren" function="true" type="void" flags="256"><arguments/></element>
+		<element name="delete" function="true" type="void" flags="256"><arguments/></element>
+		<element name="center" type="XYZ" flags="257"/>
+		<element name="size" type="float" flags="257"/>
+		<element name="transform" type="Matrix" flags="256"/>
+		<element name="position" type="XYZ" flags="256"/>
+		<element name="rotation" type="XYZ" flags="256"/>
+		<element name="scale" type="XYZ" flags="256"/>
+		<element name="setPositionAndRotation" function="true" type="void" flags="256">
+			<arguments>
+				<argument name="position" type="XYZ"/>
+				<argument name="rotation" type="XYZ"/>
+			</arguments>
+		</element>
+	</type>
+	<type name="Rectangle" context="Command line interface">
+<description><![CDATA[GUI Rectangle]]></description>
+		<element name="x" type="float" flags="256"/>
+		<element name="y" type="float" flags="256"/>
+		<element name="width" type="float" flags="256"/>
+		<element name="height" type="float" flags="256"/>
+		<element name="newFromXYWH" function="true" type="Rectangle">
+			<arguments>
+				<argument name="x" type="float"/>
+				<argument name="y" type="float"/>
+				<argument name="width" type="float"/>
+				<argument name="height" type="float"/>
+			</arguments>
+		</element>
 	</type>
 	<type name="RowFormat" context="Command line interface">
@@ -6462,4 +6923,29 @@
 			<description><![CDATA[Contains the field names with the same formatting applied (i.e. with fill and separators)]]></description>
 		</element>
+	</type>
+	<type name="Shader" context="Command line interface">
+<description><![CDATA[Shader object]]></description>
+		<element name="new" function="true" type="Shader">
+			<arguments>
+				<argument name="flags" type="integer"/>
+			</arguments>
+		</element>
+		<element name="vertex" type="string" flags="256"/>
+		<element name="fragment" type="string" flags="256"/>
+	</type>
+	<type name="Sharing" context="Command line interface">
+		<element name="service" type="integer" min="0" max="4"/>
+		<element name="message" type="string"/>
+		<element name="url" type="string"/>
+		<element name="attach_file" type="string"/>
+		<element name="addScreenshot" function="true" type="void"><arguments/></element>
+		<element name="removeImage" function="true" type="void"><arguments/></element>
+		<element name="select" function="true" type="void">
+			<arguments>
+				<argument name="prompt" type="string"/>
+				<argument name="function" type="Object"/>
+			</arguments>
+		</element>
+		<element name="execute" function="true" type="void"><arguments/></element>
 	</type>
 	<type name="ShowManager" context="Command line interface">
@@ -6539,4 +7025,5 @@
 			<description><![CDATA[Update camera position and restore automatic tracking]]></description>
 <arguments/></element>
+		<element name="cam_world" type="integer" min="0" max="1" default="1"/>
 		<element name="cam_change" type="integer" min="0" max="5" default="2"/>
 		<element name="cam_chspeed" type="float" min="0.1" max="10" default="1.0"/>
@@ -6604,4 +7091,10 @@
 			<description><![CDATA[]]></description>
 		</element>
+		<element name="worldbgcolor" type="integer" min="0" max="16777215" default="16764040" flags="192">
+			<description><![CDATA[]]></description>
+		</element>
+		<element name="hideworld" type="integer" min="0" max="1" default="0" flags="192">
+			<description><![CDATA[Can be useful for screenshots]]></description>
+		</element>
 		<element name="modelpan" type="integer" min="0" max="3" default="1" flags="192">
 			<description><![CDATA[]]></description>
