https://powdertoy.co.uk/Wiki/index.php?action=history&feed=atom&title=Powder_Toy_Lua_API_%28preview%29 Powder Toy Lua API (preview) - Revision history 2024-12-22T09:03:29Z Revision history for this page on the wiki MediaWiki 1.30.0 https://powdertoy.co.uk/Wiki/index.php?title=Powder_Toy_Lua_API_(preview)&diff=9131&oldid=prev LBPHacker: Praised be pandoc, I would wither away typing all this out in the mediawiki format 2024-01-27T20:41:00Z <p>Praised be pandoc, I would wither away typing all this out in the mediawiki format</p> <p><b>New page</b></p><div>== bz2 ==<br /> <br /> The &lt;code&gt;bz2&lt;/code&gt; API provides access to the bzip2 library TPT bundles. It can be used for compressing and decompressing blocks of data, such as TPT saves.<br /> <br /> Only one-shot functionality is exposed because streaming functionality is only useful for tasks that are beyond the scope of this API.<br /> <br /> Unless stated otherwise, all functions raise errors if supplied with parameters that disagree with their descriptions.<br /> <br /> === bz2.compress ===<br /> <br /> Compress data with bzip2 at compression level 9.<br /> <br /> &lt;pre&gt;compressedData, errCode, errStr = bz2.compress(data, [maxSize])&lt;/pre&gt;<br /> * &lt;code&gt;data&lt;/code&gt;: string, the data to be compressed<br /> * &lt;code&gt;maxSize&lt;/code&gt;: number, upper limit on the length of &lt;code&gt;compressedData&lt;/code&gt;; defaults to &lt;code&gt;0&lt;/code&gt;, which means no limit<br /> * &lt;code&gt;compressedData&lt;/code&gt;: string, the compressed data, or &lt;code&gt;nil&lt;/code&gt; on error<br /> * &lt;code&gt;errCode&lt;/code&gt;: &lt;code&gt;nil&lt;/code&gt;, or one of the following values on error:<br /> ** &lt;code&gt;bz2.COMPRESS_NOMEM&lt;/code&gt;: out of memory, TPT will probably crash soon<br /> ** &lt;code&gt;bz2.COMPRESS_LIMIT&lt;/code&gt;: the length of &lt;code&gt;compressedData&lt;/code&gt; would exceed &lt;code&gt;maxSize&lt;/code&gt;<br /> * &lt;code&gt;errStr&lt;/code&gt;: &lt;code&gt;nil&lt;/code&gt;, or a human-friendly string that explains the error<br /> <br /> === bz2.decompress ===<br /> <br /> Decompress bzip2-compressed data.<br /> <br /> &lt;pre&gt;data, errCode, errStr = bz2.decompress(compressedData, [maxSize])&lt;/pre&gt;<br /> * &lt;code&gt;compressedData&lt;/code&gt;: string, the compressed data<br /> * &lt;code&gt;maxSize&lt;/code&gt;: number, upper limit on the length of &lt;code&gt;data&lt;/code&gt;; defaults to &lt;code&gt;0&lt;/code&gt;, which means no limit<br /> * &lt;code&gt;data&lt;/code&gt;: string, the original data, or &lt;code&gt;nil&lt;/code&gt; on error<br /> * &lt;code&gt;errCode&lt;/code&gt;: &lt;code&gt;nil&lt;/code&gt;, or one of the following values on error:<br /> ** &lt;code&gt;bz2.DECOMPRESS_NOMEM&lt;/code&gt;: out of memory, TPT will probably crash soon<br /> ** &lt;code&gt;bz2.DECOMPRESS_LIMIT&lt;/code&gt;: the length of &lt;code&gt;data&lt;/code&gt; would exceed &lt;code&gt;maxSize&lt;/code&gt;<br /> ** &lt;code&gt;bz2.DECOMPRESS_TYPE&lt;/code&gt;: &lt;code&gt;compressedData&lt;/code&gt; is not bzip2-compressed data<br /> ** &lt;code&gt;bz2.DECOMPRESS_BAD&lt;/code&gt;: &lt;code&gt;compressedData&lt;/code&gt; is otherwise corrupt<br /> ** &lt;code&gt;bz2.DECOMPRESS_EOF&lt;/code&gt;: &lt;code&gt;compressedData&lt;/code&gt; contains data beyond the end of the bzip2 stream<br /> * &lt;code&gt;errStr&lt;/code&gt;: &lt;code&gt;nil&lt;/code&gt;, or a human-friendly string that explains the error<br /> <br /> == elements ==<br /> <br /> The &lt;code&gt;elements&lt;/code&gt; API contains methods and constants for creating and modifying elements.<br /> <br /> '''The shorter alias &lt;code&gt;elem&lt;/code&gt; is also available.'''<br /> <br /> Unless stated otherwise, all functions raise errors if supplied with parameters that disagree with their descriptions.<br /> <br /> &lt;span id=&quot;elements.group_pt_iname&quot;&gt;&lt;/span&gt;<br /> === elements.[group]_PT_[iname] ===<br /> <br /> &lt;pre&gt;watrNumber = elements.DEFAULT_PT_WATR&lt;/pre&gt;<br /> There are two ways to refer to elements: element numbers and element identifiers, which are strings of the form &lt;code&gt;&amp;quot;[group]_PT_[iname]&amp;quot;&lt;/code&gt;. Both &lt;code&gt;[group]&lt;/code&gt; and &lt;code&gt;[iname]&lt;/code&gt; can be any string without underscores (&lt;code&gt;_&lt;/code&gt;). All built-in elements are in group &lt;code&gt;DEFAULT&lt;/code&gt;. For example, the identifier of WATR is &lt;code&gt;&amp;quot;DEFAULT_PT_WATR&amp;quot;&lt;/code&gt;, because WATR belongs to the group &lt;code&gt;DEFAULT&lt;/code&gt; and its internal name is &lt;code&gt;WATR&lt;/code&gt;. This is different from [[#elements.property|the &lt;code&gt;Name&lt;/code&gt; property]].<br /> <br /> These constants map element identifiers to element numbers. The element number of WATR is &lt;code&gt;2&lt;/code&gt;, so &lt;code&gt;elements.DEFAULT_PT_WATR&lt;/code&gt; is also &lt;code&gt;2&lt;/code&gt;.<br /> <br /> === elements.allocate ===<br /> <br /> Create a new element.<br /> <br /> &lt;pre&gt;elemNumber = elements.allocate(group, iname)&lt;/pre&gt;<br /> * &lt;code&gt;group&lt;/code&gt;: string without underscores (&lt;code&gt;_&lt;/code&gt;), the group the element belongs to; gets uppercased by the function<br /> * &lt;code&gt;iname&lt;/code&gt;: string without underscores (&lt;code&gt;_&lt;/code&gt;), the internal name of the element; gets uppercased by the function<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: the positive element number allocated for the element created, or &lt;code&gt;-1&lt;/code&gt; on error, if there are no free element numbers left<br /> <br /> &lt;code&gt;group&lt;/code&gt; should be something unique to your script, and should be the same across the entire script. It is common to use a simpler version of your username or the script’s name, for example if your script is called ''Ultimate Chemistry Pack v3'', you might use &lt;code&gt;&amp;quot;CHEMPACK3&amp;quot;&lt;/code&gt; as the group name.<br /> <br /> &lt;code&gt;iname&lt;/code&gt; should be unique to the element within your script, and should ultimately resemble [[#elements.property|the &lt;code&gt;Name&lt;/code&gt; property]] of the element. For example, if your element’s name is ''C-6'' you should use &lt;code&gt;C6&lt;/code&gt; as the internal name.<br /> <br /> The resulting element identifier must be unique across all scripts in use at any point in time. Elements that seem like built-in elements, i.e. ones in the group &lt;code&gt;DEFAULT&lt;/code&gt;, cannot be created. Note that, as stated above, both &lt;code&gt;group&lt;/code&gt; and &lt;code&gt;iname&lt;/code&gt; get uppercased, so &lt;code&gt;elements.allocate(&amp;quot;CheMpaCk3&amp;quot;, &amp;quot;c6&amp;quot;)&lt;/code&gt; is equivalent to &lt;code&gt;elements.allocate(&amp;quot;CHEMPACK3&amp;quot;, &amp;quot;C6&amp;quot;)&lt;/code&gt;.<br /> <br /> Make the choice such that it is convenient to refer to your element via [[#elements.group_pt_iname|an &lt;code&gt;elements.[group]_PT_[iname]&lt;/code&gt; constant]]. While it is perfectly possible to type &lt;code&gt;elem[&amp;quot;Ultimate Chemistry Pack v3_PT_C-6&amp;quot;]&lt;/code&gt;, it is much more convenient to type &lt;code&gt;elem.CHEMPACK3_PT_C6&lt;/code&gt;.<br /> <br /> The new element is created with all the default properties, and will not be visible until you modify it to show up in the menu.<br /> <br /> === elements.element ===<br /> <br /> Query all or update multiple properties of an element.<br /> <br /> &lt;pre&gt;elemProps = elements.element(elemNumber) -- query variant<br /> elements.element(elemNumber, elemProps) -- update variant&lt;/pre&gt;<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: number of the element whose properties are to be queried or update<br /> * &lt;code&gt;elemProps&lt;/code&gt;: table that maps property names to property values<br /> <br /> The keys and values of &lt;code&gt;elemProps&lt;/code&gt; are the same as the &lt;code&gt;propName&lt;/code&gt; and &lt;code&gt;propValue&lt;/code&gt; parameters of [[#elements.property|elements.property]]. The query variant returns all properties of the element in &lt;code&gt;elemProps&lt;/code&gt; with the same caveats as [[#elements.property|elements.property]]. The update variant accepts any subset of properties, only updates the ones present in the table, applying the same checks as [[#elements.property|elements.property]].<br /> <br /> This function is commonly used to base an element off another element by first copying all properties of the source element and applying them to the new element, and then customizing the new element a bit afterwards:<br /> <br /> &lt;pre&gt;local purpleGold = elem.allocate(&amp;quot;EXAMPLE&amp;quot;, &amp;quot;PGLD&amp;quot;)<br /> assert(purpleGold ~= -1, &amp;quot;ran out of element numbers&amp;quot;)<br /> elem.element(purpleGold, elem.element(elem.DEFAULT_PT_GOLD))<br /> elem.property(purpleGold, &amp;quot;Name&amp;quot;, &amp;quot;PGLD&amp;quot;)<br /> elem.property(purpleGold, &amp;quot;Color&amp;quot;, 0x8040FF)&lt;/pre&gt;<br /> === elements.exists ===<br /> <br /> Check whether a number is a real element number and refers to an element.<br /> <br /> &lt;pre&gt;exists = elements.exists(elemNumber)&lt;/pre&gt;<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: number of the element to be checked<br /> * &lt;code&gt;exists&lt;/code&gt;: boolean, &lt;code&gt;true&lt;/code&gt; if &lt;code&gt;elemNumber&lt;/code&gt; refers to an element<br /> <br /> If an element exists, there exists [[#elements.group_pt_iname|a corresponding &lt;code&gt;elements.[group]_PT_[iname]&lt;/code&gt; constant]], and conversely, if there exists such a constant, there exists a corresponding element.<br /> <br /> === elements.free ===<br /> <br /> Free a previously allocated element.<br /> <br /> &lt;pre&gt;elements.free(elemNumber)&lt;/pre&gt;<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: number of the element to be freed<br /> <br /> The element number is freed and can used later by another script. Built-in elements, i.e. elements in the group &lt;code&gt;DEFAULT&lt;/code&gt;, cannot be freed.<br /> <br /> &lt;span id=&quot;elements.getbyname&quot;&gt;&lt;/span&gt;<br /> === elements.getByName ===<br /> <br /> Find an element by name, [[#elements.property|the &lt;code&gt;Name&lt;/code&gt; property]].<br /> <br /> &lt;pre&gt;elementNumber = elements.getByName(name)&lt;/pre&gt;<br /> * &lt;code&gt;name&lt;/code&gt;: string, the name to find the element by<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: positive number of the element &lt;code&gt;name&lt;/code&gt; refers to, or &lt;code&gt;-1&lt;/code&gt; on error if no such element exists<br /> <br /> This function converts a human-friendly element name to an element number, essentially the same way the PROP tool or the console works.<br /> <br /> &lt;span id=&quot;elements.loaddefault&quot;&gt;&lt;/span&gt;<br /> === elements.loadDefault ===<br /> <br /> Restore the set of elements to its initial state at startup.<br /> <br /> &lt;pre&gt;elements.loadDefault()&lt;/pre&gt;<br /> This frees all elements created and resets all properties of all built-in elements to their defaults.<br /> <br /> === elements.property ===<br /> <br /> Query or update a property of an element.<br /> <br /> &lt;pre&gt;propValue = elements.property(elemNumber, propName) -- query variant<br /> elements.property(elemNumber, propName, propValue) -- update variant<br /> elements.property(elemNumber, &amp;quot;Update&amp;quot;, propValue, [runWhen]) -- special update variant for the Update property&lt;/pre&gt;<br /> * &lt;code&gt;elemNumber&lt;/code&gt;: number of the element whose property is to be queried or updated<br /> * &lt;code&gt;propName&lt;/code&gt;: string, name of the property to be queried or updated<br /> * &lt;code&gt;propValue&lt;/code&gt;: various types, value of the property to be queried or updated<br /> * &lt;code&gt;runWhen&lt;/code&gt;: number, specifies when the update function should be run, one of:<br /> ** &lt;code&gt;elements.UPDATE_AFTER&lt;/code&gt;: run before the built-in update function, this is the default<br /> ** &lt;code&gt;elements.UPDATE_REPLACE&lt;/code&gt;: run instead of the built-in update function<br /> ** &lt;code&gt;elements.UPDATE_BEFORE&lt;/code&gt;: run after the built-in update function<br /> <br /> The following table lists all element properties accessible via this function:<br /> <br /> {| class=&quot;wikitable&quot;<br /> |-<br /> ! &lt;code&gt;propName&lt;/code&gt;<br /> ! &lt;code&gt;propValue&lt;/code&gt; type<br /> ! description<br /> |-<br /> | &lt;code&gt;&amp;quot;Advection&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;AirDrag&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;AirLoss&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;CarriesTypeIn&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;ChangeType&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;Collision&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Color&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Create&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;CreateAllowed&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;CtypeDraw&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;DefaultProperties&amp;quot;&lt;/code&gt;<br /> | table<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Description&amp;quot;&lt;/code&gt;<br /> | string<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Diffusion&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Explosive&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Falldown&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Flammable&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Graphics&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;Gravity&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Hardness&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HeatConduct&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HighPressure&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HighPressureTransition&amp;quot;&lt;/code&gt;<br /> | element number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HighTemperature&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HighTemperatureTransition&amp;quot;&lt;/code&gt;<br /> | element number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;HotAir&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Identifier&amp;quot;&lt;/code&gt;<br /> | string<br /> | element identifier, read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;Loss&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;LowPressure&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;LowPressureTransition&amp;quot;&lt;/code&gt;<br /> | element number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;LowTemperature&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;LowTemperatureTransition&amp;quot;&lt;/code&gt;<br /> | element number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Meltable&amp;quot;&lt;/code&gt;<br /> | &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;MenuSection&amp;quot;&lt;/code&gt;<br /> | menu number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;MenuVisible&amp;quot;&lt;/code&gt;<br /> | &lt;code&gt;0&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Name&amp;quot;&lt;/code&gt;<br /> | string<br /> | text that appears on the element button<br /> |-<br /> | &lt;code&gt;&amp;quot;NewtonianGravity&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;PhotonReflectWavelengths&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Properties&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Temperature&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |-<br /> | &lt;code&gt;&amp;quot;Update&amp;quot;&lt;/code&gt;<br /> | function<br /> | read-only<br /> |-<br /> | &lt;code&gt;&amp;quot;Weight&amp;quot;&lt;/code&gt;<br /> | number<br /> |<br /> |}<br /> <br /> &lt;code&gt;runWhen&lt;/code&gt; is not possible to specify with [[#elements.element|elements.element]].<br /> <br /> == event ==<br /> <br /> &lt;span id=&quot;event.getmodifiers&quot;&gt;&lt;/span&gt;<br /> === event.getModifiers ===<br /> <br /> === event.register ===<br /> <br /> === event.unregister ===<br /> <br /> &lt;span id=&quot;filesystem&quot;&gt;&lt;/span&gt;<br /> == fileSystem ==<br /> <br /> &lt;span id=&quot;filesystem.copy&quot;&gt;&lt;/span&gt;<br /> === fileSystem.copy ===<br /> <br /> &lt;span id=&quot;filesystem.exists&quot;&gt;&lt;/span&gt;<br /> === fileSystem.exists ===<br /> <br /> &lt;span id=&quot;filesystem.isdirectory&quot;&gt;&lt;/span&gt;<br /> === fileSystem.isDirectory ===<br /> <br /> &lt;span id=&quot;filesystem.isfile&quot;&gt;&lt;/span&gt;<br /> === fileSystem.isFile ===<br /> <br /> &lt;span id=&quot;filesystem.islink&quot;&gt;&lt;/span&gt;<br /> === fileSystem.isLink ===<br /> <br /> &lt;span id=&quot;filesystem.list&quot;&gt;&lt;/span&gt;<br /> === fileSystem.list ===<br /> <br /> &lt;span id=&quot;filesystem.makedirectory&quot;&gt;&lt;/span&gt;<br /> === fileSystem.makeDirectory ===<br /> <br /> &lt;span id=&quot;filesystem.move&quot;&gt;&lt;/span&gt;<br /> === fileSystem.move ===<br /> <br /> &lt;span id=&quot;filesystem.removedirectory&quot;&gt;&lt;/span&gt;<br /> === fileSystem.removeDirectory ===<br /> <br /> &lt;span id=&quot;filesystem.removefile&quot;&gt;&lt;/span&gt;<br /> === fileSystem.removeFile ===<br /> <br /> == graphics ==<br /> <br /> &lt;span id=&quot;graphics.drawcircle&quot;&gt;&lt;/span&gt;<br /> === graphics.drawCircle ===<br /> <br /> &lt;span id=&quot;graphics.drawline&quot;&gt;&lt;/span&gt;<br /> === graphics.drawLine ===<br /> <br /> &lt;span id=&quot;graphics.drawpixel&quot;&gt;&lt;/span&gt;<br /> === graphics.drawPixel ===<br /> <br /> &lt;span id=&quot;graphics.drawrect&quot;&gt;&lt;/span&gt;<br /> === graphics.drawRect ===<br /> <br /> &lt;span id=&quot;graphics.drawtext&quot;&gt;&lt;/span&gt;<br /> === graphics.drawText ===<br /> <br /> &lt;span id=&quot;graphics.fillcircle&quot;&gt;&lt;/span&gt;<br /> === graphics.fillCircle ===<br /> <br /> &lt;span id=&quot;graphics.fillrect&quot;&gt;&lt;/span&gt;<br /> === graphics.fillRect ===<br /> <br /> &lt;span id=&quot;graphics.getcolors&quot;&gt;&lt;/span&gt;<br /> === graphics.getColors ===<br /> <br /> &lt;span id=&quot;graphics.gethexcolor&quot;&gt;&lt;/span&gt;<br /> === graphics.getHexColor ===<br /> <br /> &lt;span id=&quot;graphics.setcliprect&quot;&gt;&lt;/span&gt;<br /> === graphics.setClipRect ===<br /> <br /> &lt;span id=&quot;graphics.textsize&quot;&gt;&lt;/span&gt;<br /> === graphics.textSize ===<br /> <br /> === constants ===<br /> <br /> == http ==<br /> <br /> === http.get ===<br /> <br /> &lt;span id=&quot;http.getauthtoken&quot;&gt;&lt;/span&gt;<br /> === http.getAuthToken ===<br /> <br /> === http.post ===<br /> <br /> == interface ==<br /> <br /> &lt;span id=&quot;interface.activemenu&quot;&gt;&lt;/span&gt;<br /> === interface.activeMenu ===<br /> <br /> &lt;span id=&quot;interface.activetool&quot;&gt;&lt;/span&gt;<br /> === interface.activeTool ===<br /> <br /> &lt;span id=&quot;interface.addcomponent&quot;&gt;&lt;/span&gt;<br /> === interface.addComponent ===<br /> <br /> &lt;span id=&quot;interface.beginconfirm&quot;&gt;&lt;/span&gt;<br /> === interface.beginConfirm ===<br /> <br /> &lt;span id=&quot;interface.begininput&quot;&gt;&lt;/span&gt;<br /> === interface.beginInput ===<br /> <br /> &lt;span id=&quot;interface.beginmessagebox&quot;&gt;&lt;/span&gt;<br /> === interface.beginMessageBox ===<br /> <br /> &lt;span id=&quot;interface.beginthrowerror&quot;&gt;&lt;/span&gt;<br /> === interface.beginThrowError ===<br /> <br /> &lt;span id=&quot;interface.brushid&quot;&gt;&lt;/span&gt;<br /> === interface.brushID ===<br /> <br /> &lt;span id=&quot;interface.brushradius&quot;&gt;&lt;/span&gt;<br /> === interface.brushRadius ===<br /> <br /> === interface.button ===<br /> <br /> === interface.checkbox ===<br /> <br /> &lt;span id=&quot;interface.closewindow&quot;&gt;&lt;/span&gt;<br /> === interface.closeWindow ===<br /> <br /> === interface.console ===<br /> <br /> &lt;span id=&quot;interface.droptextinput&quot;&gt;&lt;/span&gt;<br /> === interface.dropTextInput ===<br /> <br /> &lt;span id=&quot;interface.grabtextinput&quot;&gt;&lt;/span&gt;<br /> === interface.grabTextInput ===<br /> <br /> === interface.label ===<br /> <br /> &lt;span id=&quot;interface.menuenabled&quot;&gt;&lt;/span&gt;<br /> === interface.menuEnabled ===<br /> <br /> &lt;span id=&quot;interface.mouseposition&quot;&gt;&lt;/span&gt;<br /> === interface.mousePosition ===<br /> <br /> &lt;span id=&quot;interface.nummenus&quot;&gt;&lt;/span&gt;<br /> === interface.numMenus ===<br /> <br /> &lt;span id=&quot;interface.perfectcirclebrush&quot;&gt;&lt;/span&gt;<br /> === interface.perfectCircleBrush ===<br /> <br /> &lt;span id=&quot;interface.progressbar&quot;&gt;&lt;/span&gt;<br /> === interface.progressBar ===<br /> <br /> &lt;span id=&quot;interface.removecomponent&quot;&gt;&lt;/span&gt;<br /> === interface.removeComponent ===<br /> <br /> &lt;span id=&quot;interface.showwindow&quot;&gt;&lt;/span&gt;<br /> === interface.showWindow ===<br /> <br /> === interface.slider ===<br /> <br /> &lt;span id=&quot;interface.textinputrect&quot;&gt;&lt;/span&gt;<br /> === interface.textInputRect ===<br /> <br /> === interface.textbox ===<br /> <br /> === interface.window ===<br /> <br /> &lt;span id=&quot;interface.windowsize&quot;&gt;&lt;/span&gt;<br /> === interface.windowSize ===<br /> <br /> &lt;span id=&quot;constants-1&quot;&gt;&lt;/span&gt;<br /> === constants ===<br /> <br /> == platform ==<br /> <br /> &lt;span id=&quot;platform.clipboardcopy&quot;&gt;&lt;/span&gt;<br /> === platform.clipboardCopy ===<br /> <br /> &lt;span id=&quot;platform.clipboardpaste&quot;&gt;&lt;/span&gt;<br /> === platform.clipboardPaste ===<br /> <br /> &lt;span id=&quot;platform.exename&quot;&gt;&lt;/span&gt;<br /> === platform.exeName ===<br /> <br /> === platform.ident ===<br /> <br /> &lt;span id=&quot;platform.openlink&quot;&gt;&lt;/span&gt;<br /> === platform.openLink ===<br /> <br /> === platform.platform ===<br /> <br /> &lt;span id=&quot;platform.releasetype&quot;&gt;&lt;/span&gt;<br /> === platform.releaseType ===<br /> <br /> === platform.restart ===<br /> <br /> == renderer ==<br /> <br /> &lt;span id=&quot;renderer.colormode&quot;&gt;&lt;/span&gt;<br /> === renderer.colorMode ===<br /> <br /> &lt;span id=&quot;renderer.debughud&quot;&gt;&lt;/span&gt;<br /> === renderer.debugHud ===<br /> <br /> === renderer.decorations ===<br /> <br /> === renderer.depth3d ===<br /> <br /> &lt;span id=&quot;renderer.displaymodes&quot;&gt;&lt;/span&gt;<br /> === renderer.displayModes ===<br /> <br /> &lt;span id=&quot;renderer.firesize&quot;&gt;&lt;/span&gt;<br /> === renderer.fireSize ===<br /> <br /> === renderer.grid ===<br /> <br /> === renderer.hud ===<br /> <br /> &lt;span id=&quot;renderer.rendermodes&quot;&gt;&lt;/span&gt;<br /> === renderer.renderModes ===<br /> <br /> &lt;span id=&quot;renderer.showbrush&quot;&gt;&lt;/span&gt;<br /> === renderer.showBrush ===<br /> <br /> &lt;span id=&quot;renderer.usedisplaypreset&quot;&gt;&lt;/span&gt;<br /> === renderer.useDisplayPreset ===<br /> <br /> &lt;span id=&quot;renderer.zoomenabled&quot;&gt;&lt;/span&gt;<br /> === renderer.zoomEnabled ===<br /> <br /> &lt;span id=&quot;renderer.zoomscope&quot;&gt;&lt;/span&gt;<br /> === renderer.zoomScope ===<br /> <br /> &lt;span id=&quot;renderer.zoomwindow&quot;&gt;&lt;/span&gt;<br /> === renderer.zoomWindow ===<br /> <br /> == simulation ==<br /> <br /> &lt;span id=&quot;simulation.addcustomgol&quot;&gt;&lt;/span&gt;<br /> === simulation.addCustomGol ===<br /> <br /> &lt;span id=&quot;simulation.adjustcoords&quot;&gt;&lt;/span&gt;<br /> === simulation.adjustCoords ===<br /> <br /> &lt;span id=&quot;simulation.airmode&quot;&gt;&lt;/span&gt;<br /> === simulation.airMode ===<br /> <br /> &lt;span id=&quot;simulation.ambientairtemp&quot;&gt;&lt;/span&gt;<br /> === simulation.ambientAirTemp ===<br /> <br /> &lt;span id=&quot;simulation.ambientheat&quot;&gt;&lt;/span&gt;<br /> === simulation.ambientHeat ===<br /> <br /> &lt;span id=&quot;simulation.ambientheatsim&quot;&gt;&lt;/span&gt;<br /> === simulation.ambientHeatSim ===<br /> <br /> === simulation.brush ===<br /> <br /> &lt;span id=&quot;simulation.canmove&quot;&gt;&lt;/span&gt;<br /> === simulation.canMove ===<br /> <br /> &lt;span id=&quot;simulation.clearrect&quot;&gt;&lt;/span&gt;<br /> === simulation.clearRect ===<br /> <br /> &lt;span id=&quot;simulation.clearsim&quot;&gt;&lt;/span&gt;<br /> === simulation.clearSim ===<br /> <br /> &lt;span id=&quot;simulation.createbox&quot;&gt;&lt;/span&gt;<br /> === simulation.createBox ===<br /> <br /> &lt;span id=&quot;simulation.createline&quot;&gt;&lt;/span&gt;<br /> === simulation.createLine ===<br /> <br /> &lt;span id=&quot;simulation.createparts&quot;&gt;&lt;/span&gt;<br /> === simulation.createParts ===<br /> <br /> &lt;span id=&quot;simulation.createwallbox&quot;&gt;&lt;/span&gt;<br /> === simulation.createWallBox ===<br /> <br /> &lt;span id=&quot;simulation.createwallline&quot;&gt;&lt;/span&gt;<br /> === simulation.createWallLine ===<br /> <br /> &lt;span id=&quot;simulation.createwalls&quot;&gt;&lt;/span&gt;<br /> === simulation.createWalls ===<br /> <br /> &lt;span id=&quot;simulation.customgravity&quot;&gt;&lt;/span&gt;<br /> === simulation.customGravity ===<br /> <br /> &lt;span id=&quot;simulation.decobox&quot;&gt;&lt;/span&gt;<br /> === simulation.decoBox ===<br /> <br /> &lt;span id=&quot;simulation.decobrush&quot;&gt;&lt;/span&gt;<br /> === simulation.decoBrush ===<br /> <br /> &lt;span id=&quot;simulation.decocolor&quot;&gt;&lt;/span&gt;<br /> === simulation.decoColor ===<br /> <br /> &lt;span id=&quot;simulation.decoline&quot;&gt;&lt;/span&gt;<br /> === simulation.decoLine ===<br /> <br /> &lt;span id=&quot;simulation.decospace&quot;&gt;&lt;/span&gt;<br /> === simulation.decoSpace ===<br /> <br /> &lt;span id=&quot;simulation.deletestamp&quot;&gt;&lt;/span&gt;<br /> === simulation.deleteStamp ===<br /> <br /> &lt;span id=&quot;simulation.edgemode&quot;&gt;&lt;/span&gt;<br /> === simulation.edgeMode ===<br /> <br /> &lt;span id=&quot;simulation.elecmap&quot;&gt;&lt;/span&gt;<br /> === simulation.elecMap ===<br /> <br /> &lt;span id=&quot;simulation.elementcount&quot;&gt;&lt;/span&gt;<br /> === simulation.elementCount ===<br /> <br /> &lt;span id=&quot;simulation.fanvelocityx&quot;&gt;&lt;/span&gt;<br /> === simulation.fanVelocityX ===<br /> <br /> &lt;span id=&quot;simulation.fanvelocityy&quot;&gt;&lt;/span&gt;<br /> === simulation.fanVelocityY ===<br /> <br /> &lt;span id=&quot;simulation.flooddeco&quot;&gt;&lt;/span&gt;<br /> === simulation.floodDeco ===<br /> <br /> &lt;span id=&quot;simulation.floodparts&quot;&gt;&lt;/span&gt;<br /> === simulation.floodParts ===<br /> <br /> &lt;span id=&quot;simulation.floodwalls&quot;&gt;&lt;/span&gt;<br /> === simulation.floodWalls ===<br /> <br /> &lt;span id=&quot;simulation.framerender&quot;&gt;&lt;/span&gt;<br /> === simulation.frameRender ===<br /> <br /> &lt;span id=&quot;simulation.getsaveid&quot;&gt;&lt;/span&gt;<br /> === simulation.getSaveID ===<br /> <br /> &lt;span id=&quot;simulation.golspeedratio&quot;&gt;&lt;/span&gt;<br /> === simulation.golSpeedRatio ===<br /> <br /> &lt;span id=&quot;simulation.gravityfield&quot;&gt;&lt;/span&gt;<br /> === simulation.gravityField ===<br /> <br /> &lt;span id=&quot;simulation.gravitygrid&quot;&gt;&lt;/span&gt;<br /> === simulation.gravityGrid ===<br /> <br /> &lt;span id=&quot;simulation.gravitymass&quot;&gt;&lt;/span&gt;<br /> === simulation.gravityMass ===<br /> <br /> &lt;span id=&quot;simulation.gravitymode&quot;&gt;&lt;/span&gt;<br /> === simulation.gravityMode ===<br /> <br /> &lt;span id=&quot;simulation.heatsim&quot;&gt;&lt;/span&gt;<br /> === simulation.heatSim ===<br /> <br /> &lt;span id=&quot;simulation.historyforward&quot;&gt;&lt;/span&gt;<br /> === simulation.historyForward ===<br /> <br /> &lt;span id=&quot;simulation.historyrestore&quot;&gt;&lt;/span&gt;<br /> === simulation.historyRestore ===<br /> <br /> &lt;span id=&quot;simulation.lastupdatedid&quot;&gt;&lt;/span&gt;<br /> === simulation.lastUpdatedID ===<br /> <br /> &lt;span id=&quot;simulation.listcustomgol&quot;&gt;&lt;/span&gt;<br /> === simulation.listCustomGol ===<br /> <br /> &lt;span id=&quot;simulation.liststamps&quot;&gt;&lt;/span&gt;<br /> === simulation.listStamps ===<br /> <br /> &lt;span id=&quot;simulation.loadsave&quot;&gt;&lt;/span&gt;<br /> === simulation.loadSave ===<br /> <br /> &lt;span id=&quot;simulation.loadstamp&quot;&gt;&lt;/span&gt;<br /> === simulation.loadStamp ===<br /> <br /> === simulation.neighbors ===<br /> <br /> &lt;span id=&quot;simulation.newtoniangravity&quot;&gt;&lt;/span&gt;<br /> === simulation.newtonianGravity ===<br /> <br /> &lt;span id=&quot;simulation.partchangetype&quot;&gt;&lt;/span&gt;<br /> === simulation.partChangeType ===<br /> <br /> &lt;span id=&quot;simulation.partcount&quot;&gt;&lt;/span&gt;<br /> === simulation.partCount ===<br /> <br /> &lt;span id=&quot;simulation.partcreate&quot;&gt;&lt;/span&gt;<br /> === simulation.partCreate ===<br /> <br /> &lt;span id=&quot;simulation.partexists&quot;&gt;&lt;/span&gt;<br /> === simulation.partExists ===<br /> <br /> &lt;span id=&quot;simulation.partid&quot;&gt;&lt;/span&gt;<br /> === simulation.partID ===<br /> <br /> &lt;span id=&quot;simulation.partkill&quot;&gt;&lt;/span&gt;<br /> === simulation.partKill ===<br /> <br /> &lt;span id=&quot;simulation.partneighbors&quot;&gt;&lt;/span&gt;<br /> === simulation.partNeighbors ===<br /> <br /> &lt;span id=&quot;simulation.partposition&quot;&gt;&lt;/span&gt;<br /> === simulation.partPosition ===<br /> <br /> &lt;span id=&quot;simulation.partproperty&quot;&gt;&lt;/span&gt;<br /> === simulation.partProperty ===<br /> <br /> === simulation.parts ===<br /> <br /> === simulation.paused ===<br /> <br /> === simulation.photons ===<br /> <br /> === simulation.pmap ===<br /> <br /> === simulation.pressure ===<br /> <br /> &lt;span id=&quot;simulation.prettypowders&quot;&gt;&lt;/span&gt;<br /> === simulation.prettyPowders ===<br /> <br /> &lt;span id=&quot;simulation.reloadsave&quot;&gt;&lt;/span&gt;<br /> === simulation.reloadSave ===<br /> <br /> &lt;span id=&quot;simulation.removecustomgol&quot;&gt;&lt;/span&gt;<br /> === simulation.removeCustomGol ===<br /> <br /> &lt;span id=&quot;simulation.replacemodeflags&quot;&gt;&lt;/span&gt;<br /> === simulation.replaceModeFlags ===<br /> <br /> &lt;span id=&quot;simulation.resetgravityfield&quot;&gt;&lt;/span&gt;<br /> === simulation.resetGravityField ===<br /> <br /> &lt;span id=&quot;simulation.resetpressure&quot;&gt;&lt;/span&gt;<br /> === simulation.resetPressure ===<br /> <br /> &lt;span id=&quot;simulation.resetspark&quot;&gt;&lt;/span&gt;<br /> === simulation.resetSpark ===<br /> <br /> &lt;span id=&quot;simulation.resettemp&quot;&gt;&lt;/span&gt;<br /> === simulation.resetTemp ===<br /> <br /> &lt;span id=&quot;simulation.resetvelocity&quot;&gt;&lt;/span&gt;<br /> === simulation.resetVelocity ===<br /> <br /> &lt;span id=&quot;simulation.savestamp&quot;&gt;&lt;/span&gt;<br /> === simulation.saveStamp ===<br /> <br /> === simulation.signs ===<br /> <br /> &lt;span id=&quot;simulation.signs-constants&quot;&gt;&lt;/span&gt;<br /> === simulation.signs constants ===<br /> <br /> &lt;span id=&quot;simulation.signsn&quot;&gt;&lt;/span&gt;<br /> === simulation.signs[n] ===<br /> <br /> === simulation.signs.new ===<br /> <br /> === simulation.signs.delete ===<br /> <br /> &lt;span id=&quot;simulation.takesnapshot&quot;&gt;&lt;/span&gt;<br /> === simulation.takeSnapshot ===<br /> <br /> &lt;span id=&quot;simulation.temperaturescale&quot;&gt;&lt;/span&gt;<br /> === simulation.temperatureScale ===<br /> <br /> &lt;span id=&quot;simulation.toolbox&quot;&gt;&lt;/span&gt;<br /> === simulation.toolBox ===<br /> <br /> &lt;span id=&quot;simulation.toolbrush&quot;&gt;&lt;/span&gt;<br /> === simulation.toolBrush ===<br /> <br /> &lt;span id=&quot;simulation.toolline&quot;&gt;&lt;/span&gt;<br /> === simulation.toolLine ===<br /> <br /> &lt;span id=&quot;simulation.updateupto&quot;&gt;&lt;/span&gt;<br /> === simulation.updateUpTo ===<br /> <br /> &lt;span id=&quot;simulation.velocityx&quot;&gt;&lt;/span&gt;<br /> === simulation.velocityX ===<br /> <br /> &lt;span id=&quot;simulation.velocityy&quot;&gt;&lt;/span&gt;<br /> === simulation.velocityY ===<br /> <br /> &lt;span id=&quot;simulation.wallmap&quot;&gt;&lt;/span&gt;<br /> === simulation.wallMap ===<br /> <br /> === simulation.walls ===<br /> <br /> &lt;span id=&quot;simulation.wallsid&quot;&gt;&lt;/span&gt;<br /> === simulation.walls[id] ===<br /> <br /> &lt;span id=&quot;simulation.walls.wl&quot;&gt;&lt;/span&gt;<br /> === simulation.walls.''''WL'''' ===<br /> <br /> &lt;span id=&quot;simulation.waterequalization&quot;&gt;&lt;/span&gt;<br /> === simulation.waterEqualization ===<br /> <br /> &lt;span id=&quot;constants-2&quot;&gt;&lt;/span&gt;<br /> === constants ===<br /> <br /> == socket ==<br /> <br /> &lt;span id=&quot;socket.gettime&quot;&gt;&lt;/span&gt;<br /> === socket.getTime ===<br /> <br /> === socket.sleep ===<br /> <br /> === socket.tcp ===<br /> <br /> == tpt ==<br /> <br /> === tpt.debug ===<br /> <br /> &lt;span id=&quot;tpt.drawcap&quot;&gt;&lt;/span&gt;<br /> === tpt.drawCap ===<br /> <br /> &lt;span id=&quot;tpt.fpscap&quot;&gt;&lt;/span&gt;<br /> === tpt.fpsCap ===<br /> <br /> &lt;span id=&quot;tpt.getusername&quot;&gt;&lt;/span&gt;<br /> === tpt.getUserName ===<br /> <br /> &lt;span id=&quot;tpt.installscriptmanager&quot;&gt;&lt;/span&gt;<br /> === tpt.installScriptManager ===<br /> <br /> === tpt.log ===<br /> <br /> === tpt.record ===<br /> <br /> === tpt.screenshot ===<br /> <br /> === tpt.version ===<br /> <br /> &lt;span id=&quot;button&quot;&gt;&lt;/span&gt;<br /> == Button ==<br /> <br /> &lt;span id=&quot;buttonaction&quot;&gt;&lt;/span&gt;<br /> === Button:action ===<br /> <br /> &lt;span id=&quot;buttonenabled&quot;&gt;&lt;/span&gt;<br /> === Button:enabled ===<br /> <br /> &lt;span id=&quot;buttonposition&quot;&gt;&lt;/span&gt;<br /> === Button:position ===<br /> <br /> &lt;span id=&quot;buttonsize&quot;&gt;&lt;/span&gt;<br /> === Button:size ===<br /> <br /> &lt;span id=&quot;buttontext&quot;&gt;&lt;/span&gt;<br /> === Button:text ===<br /> <br /> &lt;span id=&quot;buttonvisible&quot;&gt;&lt;/span&gt;<br /> === Button:visible ===<br /> <br /> &lt;span id=&quot;checkbox&quot;&gt;&lt;/span&gt;<br /> == Checkbox ==<br /> <br /> &lt;span id=&quot;checkboxaction&quot;&gt;&lt;/span&gt;<br /> === Checkbox:action ===<br /> <br /> &lt;span id=&quot;checkboxchecked&quot;&gt;&lt;/span&gt;<br /> === Checkbox:checked ===<br /> <br /> &lt;span id=&quot;checkboxposition&quot;&gt;&lt;/span&gt;<br /> === Checkbox:position ===<br /> <br /> &lt;span id=&quot;checkboxsize&quot;&gt;&lt;/span&gt;<br /> === Checkbox:size ===<br /> <br /> &lt;span id=&quot;checkboxtext&quot;&gt;&lt;/span&gt;<br /> === Checkbox:text ===<br /> <br /> &lt;span id=&quot;checkboxvisible&quot;&gt;&lt;/span&gt;<br /> === Checkbox:visible ===<br /> <br /> &lt;span id=&quot;label&quot;&gt;&lt;/span&gt;<br /> == Label ==<br /> <br /> &lt;span id=&quot;labelposition&quot;&gt;&lt;/span&gt;<br /> === Label:position ===<br /> <br /> &lt;span id=&quot;labelsize&quot;&gt;&lt;/span&gt;<br /> === Label:size ===<br /> <br /> &lt;span id=&quot;labeltext&quot;&gt;&lt;/span&gt;<br /> === Label:text ===<br /> <br /> &lt;span id=&quot;labelvisible&quot;&gt;&lt;/span&gt;<br /> === Label:visible ===<br /> <br /> &lt;span id=&quot;progressbar&quot;&gt;&lt;/span&gt;<br /> == ProgressBar ==<br /> <br /> &lt;span id=&quot;progressbarposition&quot;&gt;&lt;/span&gt;<br /> === ProgressBar:position ===<br /> <br /> &lt;span id=&quot;progressbarprogress&quot;&gt;&lt;/span&gt;<br /> === ProgressBar:progress ===<br /> <br /> &lt;span id=&quot;progressbarsize&quot;&gt;&lt;/span&gt;<br /> === ProgressBar:size ===<br /> <br /> &lt;span id=&quot;progressbarstatus&quot;&gt;&lt;/span&gt;<br /> === ProgressBar:status ===<br /> <br /> &lt;span id=&quot;progressbarvisible&quot;&gt;&lt;/span&gt;<br /> === ProgressBar:visible ===<br /> <br /> &lt;span id=&quot;slider&quot;&gt;&lt;/span&gt;<br /> == Slider ==<br /> <br /> &lt;span id=&quot;slideronvaluechanged&quot;&gt;&lt;/span&gt;<br /> === Slider:onValueChanged ===<br /> <br /> &lt;span id=&quot;sliderposition&quot;&gt;&lt;/span&gt;<br /> === Slider:position ===<br /> <br /> &lt;span id=&quot;slidersize&quot;&gt;&lt;/span&gt;<br /> === Slider:size ===<br /> <br /> &lt;span id=&quot;slidersteps&quot;&gt;&lt;/span&gt;<br /> === Slider:steps ===<br /> <br /> &lt;span id=&quot;slidervalue&quot;&gt;&lt;/span&gt;<br /> === Slider:value ===<br /> <br /> &lt;span id=&quot;slidervisible&quot;&gt;&lt;/span&gt;<br /> === Slider:visible ===<br /> <br /> &lt;span id=&quot;textbox&quot;&gt;&lt;/span&gt;<br /> == Textbox ==<br /> <br /> &lt;span id=&quot;textboxontextchanged&quot;&gt;&lt;/span&gt;<br /> === Textbox:onTextChanged ===<br /> <br /> &lt;span id=&quot;textboxposition&quot;&gt;&lt;/span&gt;<br /> === Textbox:position ===<br /> <br /> &lt;span id=&quot;textboxreadonly&quot;&gt;&lt;/span&gt;<br /> === Textbox:readonly ===<br /> <br /> &lt;span id=&quot;textboxsize&quot;&gt;&lt;/span&gt;<br /> === Textbox:size ===<br /> <br /> &lt;span id=&quot;textboxtext&quot;&gt;&lt;/span&gt;<br /> === Textbox:text ===<br /> <br /> &lt;span id=&quot;textboxvisible&quot;&gt;&lt;/span&gt;<br /> === Textbox:visible ===<br /> <br /> &lt;span id=&quot;window&quot;&gt;&lt;/span&gt;<br /> == Window ==<br /> <br /> &lt;span id=&quot;windowaddcomponent&quot;&gt;&lt;/span&gt;<br /> === Window:addComponent ===<br /> <br /> &lt;span id=&quot;windowonblur&quot;&gt;&lt;/span&gt;<br /> === Window:onBlur ===<br /> <br /> &lt;span id=&quot;windowondraw&quot;&gt;&lt;/span&gt;<br /> === Window:onDraw ===<br /> <br /> &lt;span id=&quot;windowonexit&quot;&gt;&lt;/span&gt;<br /> === Window:onExit ===<br /> <br /> &lt;span id=&quot;windowonfocus&quot;&gt;&lt;/span&gt;<br /> === Window:onFocus ===<br /> <br /> &lt;span id=&quot;windowoninitialized&quot;&gt;&lt;/span&gt;<br /> === Window:onInitialized ===<br /> <br /> &lt;span id=&quot;windowonkeypress&quot;&gt;&lt;/span&gt;<br /> === Window:onKeyPress ===<br /> <br /> &lt;span id=&quot;windowonkeyrelease&quot;&gt;&lt;/span&gt;<br /> === Window:onKeyRelease ===<br /> <br /> &lt;span id=&quot;windowonmousedown&quot;&gt;&lt;/span&gt;<br /> === Window:onMouseDown ===<br /> <br /> &lt;span id=&quot;windowonmousemove&quot;&gt;&lt;/span&gt;<br /> === Window:onMouseMove ===<br /> <br /> &lt;span id=&quot;windowonmouseup&quot;&gt;&lt;/span&gt;<br /> === Window:onMouseUp ===<br /> <br /> &lt;span id=&quot;windowonmousewheel&quot;&gt;&lt;/span&gt;<br /> === Window:onMouseWheel ===<br /> <br /> &lt;span id=&quot;windowontick&quot;&gt;&lt;/span&gt;<br /> === Window:onTick ===<br /> <br /> &lt;span id=&quot;windowontryexit&quot;&gt;&lt;/span&gt;<br /> === Window:onTryExit ===<br /> <br /> &lt;span id=&quot;windowontryokay&quot;&gt;&lt;/span&gt;<br /> === Window:onTryOkay ===<br /> <br /> &lt;span id=&quot;windowposition&quot;&gt;&lt;/span&gt;<br /> === Window:position ===<br /> <br /> &lt;span id=&quot;windowremovecomponent&quot;&gt;&lt;/span&gt;<br /> === Window:removeComponent ===<br /> <br /> &lt;span id=&quot;windowsize&quot;&gt;&lt;/span&gt;<br /> === Window:size ===</div> LBPHacker