<api>
	<function name="GetIntParam">
		<input name="name" type="string" optional="false" desc="Parameter name"/>
		<input name="default" type="number" optional="false" desc="Default parameter value"/>
		<output name="value" type="number" desc="Parameter value"/>
	</function>
	<function name="GetFloatParam">
		<input name="name" type="string" optional="false" desc="Parameter name"/>
		<input name="default" type="number" optional="false" desc="Default parameter value"/>
		<output name="value" type="number" desc="Parameter value"/>
	</function>
	<function name="GetBoolParam">
		<input name="name" type="string" optional="false" desc="Parameter name"/>
		<input name="default" type="boolean" optional="false" desc="Default parameter value"/>
		<output name="value" type="boolean" desc="Parameter value"/>
	</function>
	<function name="GetStringParam">
		<input name="name" type="string" optional="false" desc="Parameter name"/>
		<input name="default" type="string" optional="false" desc="Default parameter value"/>
		<output name="value" type="string" desc="Parameter value"/>
	</function>
	<function name="GetColorParam">
		<input name="name" type="string" optional="false" desc="Parameter name"/>
		<input name="default" type="number" optional="false" desc="Default parameter value"/>
		<output name="value" type="number" desc="Parameter value"/>
	</function>
	<function name="GetVersion">
		<output name="version" type="string" desc="Dot separated string of current version of the game"/>
	</function>
	<function name="HasVersion">
		<input name="version" type="string" optional="false" desc="Reference version"/>
		<output name="match" type="boolean" desc="True if current version is at least provided one"/>
	</function>
	<function name="GetTime">
		<output name="time" type="number" desc="The time in seconds since level was started"/>
	</function>
	<function name="GetTimeStep">
		<output name="dt" type="number" desc="The timestep in seconds"/>
	</function>
	<function name="InputLastPressedKey">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="name" type="string" desc="Name of last pressed key, empty if no key is pressed"/>
	</function>
	<function name="InputPressed">
		<input name="input" type="string" optional="false" desc="The input identifier"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="pressed" type="boolean" desc="True if input was pressed during last frame"/>
	</function>
	<function name="InputReleased">
		<input name="input" type="string" optional="false" desc="The input identifier"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="pressed" type="boolean" desc="True if input was released during last frame"/>
	</function>
	<function name="InputDown">
		<input name="input" type="string" optional="false" desc="The input identifier"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="pressed" type="boolean" desc="True if input is currently held down"/>
	</function>
	<function name="InputValue">
		<input name="input" type="string" optional="false" desc="The input identifier"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="value" type="number" desc="Depends on input type"/>
	</function>
	<function name="InputClear" clientonly="true">
	</function>
	<function name="InputResetOnTransition" clientonly="true">
	</function>
	<function name="LastInputDevice">
		<output name="value" type="number" desc="Last device id"/>
	</function>
	<function name="SetValue">
		<input name="variable" type="string" optional="false" desc="Name of number variable in the global context"/>
		<input name="value" type="number" optional="false" desc="The new value"/>
		<input name="transition" type="string" optional="true" desc="Transition type. See description."/>
		<input name="time" type="number" optional="true" desc="Transition time (seconds)"/>
	</function>
	<function name="SetValueInTable">
		<input name="tableId" type="table" optional="false" desc="Id of the table"/>
		<input name="memberName" type="string" optional="false" desc="Name of the member"/>
		<input name="newValue" type="number" optional="false" desc="New value"/>
		<input name="type" type="string" optional="false" desc="Transition type"/>
		<input name="length" type="number" optional="false" desc="Transition length"/>
	</function>
	<function name="PauseMenuButton">
		<input name="title" type="string" optional="false" desc="Text on button"/>
		<input name="location" type="string" optional="true" desc="Button location. If 'bottom_bar' - bottom bar, if 'main_bottom' - below 'Main menu' button, if 'main_top' - above 'Main menu' button. Default 'bottom_bar'."/>
		<input name="disabled" type="bool" optional="true" desc="Disable button. Button will be rendered as grayed out. Default is false. Only available when used with 'bottom_bar'."/>
		<output name="clicked" type="boolean" desc="True if clicked, false otherwise"/>
	</function>
	<function name="HasFile">
		<input name="path" type="string" optional="false" desc="Path to file"/>
		<output name="exists" type="boolean" desc="True if file exists"/>
	</function>
	<function name="StartLevel">
		<input name="mission" type="string" optional="false" desc="An identifier of your choice"/>
		<input name="path" type="string" optional="false" desc="Path to level XML file"/>
		<input name="layers" type="string" optional="true" desc="Active layers. Default is no layers."/>
		<input name="passThrough" type="boolean" optional="true" desc="If set, loading screen will have no text and music will keep playing"/>
	</function>
	<function name="SetPaused">
		<input name="paused" type="boolean" optional="false" desc="True if game should be paused"/>
	</function>
	<function name="Restart">
	</function>
	<function name="Menu">
	</function>
	<function name="ClientCall">
		<input name="playerId" type="number" optional="false" desc="Player ID of the recipient. Use 0 to broadcast to every player."/>
		<input name="function" type="string" optional="false" desc="Name of the function to be invoked. This function must exist within issuing script."/>
		<input name="param1, param2, .., paramN" type="any" optional="true" desc="Optional parameters to send to the recipent(s). Arguments should match the signature of the specified function."/>
	</function>
	<function name="ServerCall">
		<input name="function" type="string" optional="false" desc="Name of the function to be invoked. This function must exist within issuing script."/>
		<input name="param1, param2, .., paramN" type="any" optional="true" desc="Optional parameters to send to the server. Arguments should match the signature of the specified function."/>
	</function>
	<function name="ClearKey">
		<input name="key" type="string" optional="false" desc="Registry key to clear"/>
	</function>
	<function name="ListKeys">
		<input name="parent" type="string" optional="false" desc="The parent registry key"/>
		<output name="children" type="table" desc="Indexed table of strings with child keys"/>
	</function>
	<function name="HasKey">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="exists" type="boolean" desc="True if key exists"/>
	</function>
	<function name="SetInt">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<input name="value" type="number" optional="false" desc="Desired value"/>
		<input name="sync" type="boolean" optional="true" desc="Synchronize to clients"/>
	</function>
	<function name="GetInt">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="value" type="number" desc="Integer value of registry node or zero if not found"/>
	</function>
	<function name="SetFloat">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<input name="value" type="number" optional="false" desc="Desired value"/>
		<input name="sync" type="boolean" optional="true" desc="Synchronize to clients"/>
	</function>
	<function name="GetFloat">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="value" type="number" desc="Float value of registry node or zero if not found"/>
	</function>
	<function name="SetBool">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<input name="value" type="boolean" optional="false" desc="Desired value"/>
		<input name="sync" type="boolean" optional="true" desc="Synchronize to clients"/>
	</function>
	<function name="GetBool">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="value" type="boolean" desc="Boolean value of registry node or false if not found"/>
	</function>
	<function name="SetString">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<input name="value" type="string" optional="false" desc="Desired value"/>
		<input name="sync" type="boolean" optional="true" desc="Synchronize to clients"/>
	</function>
	<function name="GetString">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="value" type="string" desc="String value of registry node or '' if not found"/>
	</function>
	<function name="SetColor">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<input name="r" type="number" optional="false" desc="Desired red channel value"/>
		<input name="g" type="number" optional="false" desc="Desired green channel value"/>
		<input name="b" type="number" optional="false" desc="Desired blue channel value"/>
		<input name="a" type="number" optional="true" desc="Desired alpha channel value"/>
	</function>
	<function name="GetColor">
		<input name="key" type="string" optional="false" desc="Registry key"/>
		<output name="r" type="number" desc="Desired red channel value"/>
		<output name="g" type="number" desc="Desired green channel value"/>
		<output name="b" type="number" desc="Desired blue channel value"/>
		<output name="a" type="number" desc="Desired alpha channel value"/>
	</function>
	<function name="GetTranslatedStringByKey">
		<input name="key" type="string" optional="false" desc="Translation key"/>
		<input name="default" type="string" optional="true" desc="Default value"/>
		<output name="value" type="string" desc="Translation"/>
	</function>
	<function name="HasTranslationByKey">
		<input name="key" type="string" optional="false" desc="Translation key"/>
		<output name="value" type="boolean" desc="True if translation exists"/>
	</function>
	<function name="LoadLanguageTable">
		<input name="id" type="number" optional="false" desc="Language id (enum)"/>
	</function>
	<function name="GetUserNickname">
		<input name="id" type="number" optional="true" desc="User id"/>
		<output name="value" type="string" desc="User nickname"/>
	</function>
	<function name="GetEventCount">
		<input name="type" type="string" optional="false" desc="Event type"/>
		<output name="value" type="number" desc="Number of event available"/>
	</function>
	<function name="PostEvent">
		<input name="eventName" type="string" optional="false" desc="Event name"/>
		<input name="param1, param2, .., paramN" type="any" optional="true" desc="Optional parameters to send with the event."/>
	</function>
	<function name="GetEvent">
		<input name="type" type="string" optional="false" desc="Event type"/>
		<input name="index" type="number" optional="false" desc="Event index (starting with one)"/>
		<output name="returnValues" type="varying" desc="Return values depending on event type"/>
	</function>
	<function name="Vec">
		<input name="x" type="number" optional="true" desc="X value"/>
		<input name="y" type="number" optional="true" desc="Y value"/>
		<input name="z" type="number" optional="true" desc="Z value"/>
		<output name="vec" type="TVec" desc="New vector"/>
	</function>
	<function name="VecCopy">
		<input name="org" type="TVec" optional="false" desc="A vector"/>
		<output name="new" type="TVec" desc="Copy of org vector"/>
	</function>
	<function name="VecStr">
		<input name="vector" type="TVec" optional="false" desc="Vector"/>
		<output name="str" type="string" desc="String representation"/>
	</function>
	<function name="VecLength">
		<input name="vec" type="TVec" optional="false" desc="A vector"/>
		<output name="length" type="number" desc="Length (magnitude) of the vector"/>
	</function>
	<function name="VecNormalize">
		<input name="vec" type="TVec" optional="false" desc="A vector"/>
		<output name="norm" type="TVec" desc="A vector of length 1.0"/>
	</function>
	<function name="VecScale">
		<input name="vec" type="TVec" optional="false" desc="A vector"/>
		<input name="scale" type="number" optional="false" desc="A scale factor"/>
		<output name="norm" type="TVec" desc="A scaled version of input vector"/>
	</function>
	<function name="VecAdd">
		<input name="a" type="TVec" optional="false" desc="Vector"/>
		<input name="b" type="TVec" optional="false" desc="Vector"/>
		<output name="c" type="TVec" desc="New vector with sum of a and b"/>
	</function>
	<function name="VecSub">
		<input name="a" type="TVec" optional="false" desc="Vector"/>
		<input name="b" type="TVec" optional="false" desc="Vector"/>
		<output name="c" type="TVec" desc="New vector representing a-b"/>
	</function>
	<function name="VecDot">
		<input name="a" type="TVec" optional="false" desc="Vector"/>
		<input name="b" type="TVec" optional="false" desc="Vector"/>
		<output name="c" type="number" desc="Dot product of a and b"/>
	</function>
	<function name="VecCross">
		<input name="a" type="TVec" optional="false" desc="Vector"/>
		<input name="b" type="TVec" optional="false" desc="Vector"/>
		<output name="c" type="TVec" desc="Cross product of a and b (also called vector product)"/>
	</function>
	<function name="VecLerp">
		<input name="a" type="TVec" optional="false" desc="Vector"/>
		<input name="b" type="TVec" optional="false" desc="Vector"/>
		<input name="t" type="number" optional="false" desc="fraction (usually between 0.0 and 1.0)"/>
		<output name="c" type="TVec" desc="Linearly interpolated vector between a and b, using t"/>
	</function>
	<function name="Quat">
		<input name="x" type="number" optional="true" desc="X value"/>
		<input name="y" type="number" optional="true" desc="Y value"/>
		<input name="z" type="number" optional="true" desc="Z value"/>
		<input name="w" type="number" optional="true" desc="W value"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatCopy">
		<input name="org" type="TQuat" optional="false" desc="Quaternion"/>
		<output name="new" type="TQuat" desc="Copy of org quaternion"/>
	</function>
	<function name="QuatAxisAngle">
		<input name="axis" type="TVec" optional="false" desc="Rotation axis, unit vector"/>
		<input name="angle" type="number" optional="false" desc="Rotation angle in degrees"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatDeltaNormals">
		<input name="normal0" type="TVec" optional="false" desc="Unit vector"/>
		<input name="normal1" type="TVec" optional="false" desc="Unit vector"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatDeltaVectors">
		<input name="vector0" type="TVec" optional="false" desc="Vector"/>
		<input name="vector1" type="TVec" optional="false" desc="Vector"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatEuler">
		<input name="x" type="number" optional="false" desc="Angle around X axis in degrees, sometimes also called roll or bank"/>
		<input name="y" type="number" optional="false" desc="Angle around Y axis in degrees, sometimes also called yaw or heading"/>
		<input name="z" type="number" optional="false" desc="Angle around Z axis in degrees, sometimes also called pitch or attitude"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatAlignXZ">
		<input name="xAxis" type="TVec" optional="false" desc="X axis"/>
		<input name="zAxis" type="TVec" optional="false" desc="Z axis"/>
		<output name="quat" type="TQuat" desc="Quaternion"/>
	</function>
	<function name="GetQuatEuler">
		<input name="quat" type="TQuat" optional="false" desc="Quaternion"/>
		<output name="x" type="number" desc="Angle around X axis in degrees, sometimes also called roll or bank"/>
		<output name="y" type="number" desc="Angle around Y axis in degrees, sometimes also called yaw or heading"/>
		<output name="z" type="number" desc="Angle around Z axis in degrees, sometimes also called pitch or attitude"/>
	</function>
	<function name="QuatLookAt">
		<input name="eye" type="TVec" optional="false" desc="Vector representing the camera location"/>
		<input name="target" type="TVec" optional="false" desc="Vector representing the point to look at"/>
		<output name="quat" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatSlerp">
		<input name="a" type="TQuat" optional="false" desc="Quaternion"/>
		<input name="b" type="TQuat" optional="false" desc="Quaternion"/>
		<input name="t" type="number" optional="false" desc="fraction (usually between 0.0 and 1.0)"/>
		<output name="c" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatStr">
		<input name="quat" type="TQuat" optional="false" desc="Quaternion"/>
		<output name="str" type="string" desc="String representation"/>
	</function>
	<function name="QuatRotateQuat">
		<input name="a" type="TQuat" optional="false" desc="Quaternion"/>
		<input name="b" type="TQuat" optional="false" desc="Quaternion"/>
		<output name="c" type="TQuat" desc="New quaternion"/>
	</function>
	<function name="QuatRotateVec">
		<input name="a" type="TQuat" optional="false" desc="Quaternion"/>
		<input name="vec" type="TVec" optional="false" desc="Vector"/>
		<output name="vec" type="TVec" desc="Rotated vector"/>
	</function>
	<function name="Transform">
		<input name="pos" type="TVec" optional="true" desc="Vector representing transform position"/>
		<input name="rot" type="TQuat" optional="true" desc="Quaternion representing transform rotation"/>
		<output name="transform" type="TTransform" desc="New transform"/>
	</function>
	<function name="TransformCopy">
		<input name="org" type="TTransform" optional="false" desc="Transform"/>
		<output name="new" type="TTransform" desc="Copy of org transform"/>
	</function>
	<function name="TransformStr">
		<input name="transform" type="TTransform" optional="false" desc="Transform"/>
		<output name="str" type="string" desc="String representation"/>
	</function>
	<function name="TransformToParentTransform">
		<input name="parent" type="TTransform" optional="false" desc="Transform"/>
		<input name="child" type="TTransform" optional="false" desc="Transform"/>
		<output name="transform" type="TTransform" desc="New transform"/>
	</function>
	<function name="TransformToLocalTransform">
		<input name="parent" type="TTransform" optional="false" desc="Transform"/>
		<input name="child" type="TTransform" optional="false" desc="Transform"/>
		<output name="transform" type="TTransform" desc="New transform"/>
	</function>
	<function name="TransformToParentVec">
		<input name="t" type="TTransform" optional="false" desc="Transform"/>
		<input name="v" type="TVec" optional="false" desc="Vector"/>
		<output name="r" type="TVec" desc="Transformed vector"/>
	</function>
	<function name="TransformToLocalVec">
		<input name="t" type="TTransform" optional="false" desc="Transform"/>
		<input name="v" type="TVec" optional="false" desc="Vector"/>
		<output name="r" type="TVec" desc="Transformed vector"/>
	</function>
	<function name="TransformToParentPoint">
		<input name="t" type="TTransform" optional="false" desc="Transform"/>
		<input name="p" type="TVec" optional="false" desc="Vector representing position"/>
		<output name="r" type="TVec" desc="Transformed position"/>
	</function>
	<function name="TransformToLocalPoint">
		<input name="t" type="TTransform" optional="false" desc="Transform"/>
		<input name="p" type="TVec" optional="false" desc="Vector representing position"/>
		<output name="r" type="TVec" desc="Transformed position"/>
	</function>
	<function name="SetRandomSeed">
		<input name="seed" type="number" optional="false" desc="Random seed"/>
	</function>
	<function name="GetRandomBool">
		<output name="result" type="boolean" desc="Random true/false"/>
	</function>
	<function name="GetRandomInt">
		<input name="min" type="number" optional="false" desc="Lower number"/>
		<input name="max" type="number" optional="false" desc="Upper number"/>
		<output name="result" type="number" desc="Random number in given range, including max."/>
	</function>
	<function name="GetRandomFloat">
		<input name="min" type="number" optional="false" desc="Lower number"/>
		<input name="max" type="number" optional="false" desc="Upper number"/>
		<output name="result" type="number" desc="Random number in given range, including max."/>
	</function>
	<function name="GetRandomDirection">
		<input name="length" type="number" optional="true" desc="Optional length use to scale the generated direction."/>
		<output name="vector" type="Vec3" desc="Random direction with unit length"/>
	</function>
	<function name="FindEntity">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<input name="type" type="string" optional="true" desc="Entity type ('body', 'shape', 'light', 'location' etc.)"/>
		<output name="handle" type="number" desc="Handle to first entity with specified tag or zero if not found"/>
	</function>
	<function name="FindEntities">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<input name="type" type="string" optional="true" desc="Entity type ('body', 'shape', 'light', 'location' etc.)"/>
		<output name="list" type="table" desc="Indexed table with handles to all entities with specified tag"/>
	</function>
	<function name="GetEntityChildren">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="recursive" type="boolean" optional="true" desc="Search recursively"/>
		<input name="type" type="string" optional="true" desc="Entity type ('body', 'shape', 'light', 'location' etc.)"/>
		<output name="list" type="table" desc="Indexed table with child elements of the entity"/>
	</function>
	<function name="GetEntityParent">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="type" type="string" optional="true" desc="Entity type ('body', 'shape', 'light', 'location' etc.)"/>
		<output name="handle" type="number" desc=""/>
	</function>
	<function name="SetTag">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="false" desc="Tag name"/>
		<input name="value" type="string" optional="true" desc="Tag value"/>
	</function>
	<function name="RemoveTag">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="false" desc="Tag name"/>
	</function>
	<function name="HasTag">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="false" desc="Tag name"/>
		<output name="exists" type="boolean" desc="Returns true if entity has tag"/>
	</function>
	<function name="GetTagValue">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="tag" type="string" optional="false" desc="Tag name"/>
		<output name="value" type="string" desc="Returns the tag value, if any. Empty string otherwise."/>
	</function>
	<function name="ListTags">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<output name="tags" type="table" desc="Indexed table of tags on entity"/>
	</function>
	<function name="GetDescription">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<output name="description" type="string" desc="The description string"/>
	</function>
	<function name="SetDescription">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="description" type="string" optional="false" desc="The description string"/>
	</function>
	<function name="Delete">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
	</function>
	<function name="IsHandleValid">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<output name="exists" type="boolean" desc="Returns true if the entity pointed to by handle still exists"/>
	</function>
	<function name="GetEntityType">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<output name="type" type="string" desc="Type name of the provided entity"/>
	</function>
	<function name="GetProperty">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="property" type="string" optional="false" desc="Property name"/>
		<output name="value" type="any" desc="Property value"/>
	</function>
	<function name="SetProperty" serveronly="true">
		<input name="handle" type="number" optional="false" desc="Entity handle"/>
		<input name="property" type="string" optional="false" desc="Property name"/>
		<input name="value" type="any" optional="false" desc="Property value"/>
	</function>
	<function name="FindBody">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first body with specified tag or zero if not found"/>
	</function>
	<function name="FindBodies">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all bodies with specified tag"/>
	</function>
	<function name="GetBodyTransform">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="transform" type="TTransform" desc="Transform of the body"/>
	</function>
	<function name="SetBodyTransform">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Desired transform"/>
	</function>
	<function name="GetBodyMass">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="mass" type="number" desc="Body mass. Static bodies always return zero mass."/>
	</function>
	<function name="IsBodyDynamic">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="dynamic" type="boolean" desc="Return true if body is dynamic"/>
	</function>
	<function name="SetBodyDynamic">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="dynamic" type="boolean" optional="false" desc="True for dynamic. False for static."/>
	</function>
	<function name="SetBodyVelocity">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<input name="velocity" type="TVec" optional="false" desc="Vector with linear velocity"/>
	</function>
	<function name="GetBodyVelocity">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<output name="velocity" type="TVec" desc="Linear velocity as vector"/>
	</function>
	<function name="GetBodyVelocityAtPos">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<input name="pos" type="TVec" optional="false" desc="World space point as vector"/>
		<output name="velocity" type="TVec" desc="Linear velocity on body at pos as vector"/>
	</function>
	<function name="SetBodyAngularVelocity">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<input name="angVel" type="TVec" optional="false" desc="Vector with angular velocity"/>
	</function>
	<function name="GetBodyAngularVelocity">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<output name="angVel" type="TVec" desc="Angular velocity as vector"/>
	</function>
	<function name="IsBodyActive">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="active" type="boolean" desc="Return true if body is active"/>
	</function>
	<function name="SetBodyActive">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="active" type="boolean" optional="false" desc="Set to tru if body should be active (simulated)"/>
	</function>
	<function name="ApplyBodyImpulse">
		<input name="handle" type="number" optional="false" desc="Body handle (should be a dynamic body)"/>
		<input name="position" type="TVec" optional="false" desc="World space position as vector"/>
		<input name="impulse" type="TVec" optional="false" desc="World space impulse as vector"/>
	</function>
	<function name="GetBodyShapes">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="list" type="table" desc="Indexed table of shape handles"/>
	</function>
	<function name="GetBodyVehicle">
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<output name="handle" type="number" desc="Get parent vehicle for body, or zero if not part of vehicle"/>
	</function>
	<function name="GetBodyAnimator">
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<output name="handle" type="number" desc="Get parent animator for body, or zero if not part of an animator hierarchy"/>
	</function>
	<function name="GetBodyPlayer">
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<output name="playerId" type="number" desc="Get parent player for body, or zero if not part of a player animator hierarchy"/>
	</function>
	<function name="GetBodyBounds">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="min" type="TVec" desc="Vector representing the AABB lower bound"/>
		<output name="max" type="TVec" desc="Vector representing the AABB upper bound"/>
	</function>
	<function name="GetBodyCenterOfMass">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="point" type="TVec" desc="Vector representing local center of mass in body space"/>
	</function>
	<function name="IsBodyVisible">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="maxDist" type="number" optional="false" desc="Maximum visible distance"/>
		<input name="rejectTransparent" type="boolean" optional="true" desc="See through transparent materials. Default false."/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On player, zero means local player."/>
		<output name="visible" type="boolean" desc="Return true if body is visible"/>
	</function>
	<function name="IsBodyBroken">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="broken" type="boolean" desc="Return true if body is broken"/>
	</function>
	<function name="IsBodyJointedToStatic">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<output name="result" type="boolean" desc="Return true if body is in any way connected to a static body"/>
	</function>
	<function name="DrawBodyOutline">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="r" type="number" optional="true" desc="Red"/>
		<input name="g" type="number" optional="true" desc="Green"/>
		<input name="b" type="number" optional="true" desc="Blue"/>
		<input name="a" type="number" optional="true" desc="Alpha"/>
	</function>
	<function name="DrawBodyHighlight">
		<input name="handle" type="number" optional="false" desc="Body handle"/>
		<input name="amount" type="number" optional="false" desc="Amount"/>
	</function>
	<function name="GetBodyClosestPoint">
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<input name="origin" type="TVec" optional="false" desc="World space point"/>
		<output name="hit" type="boolean" desc="True if a point was found"/>
		<output name="point" type="TVec" desc="World space closest point"/>
		<output name="normal" type="TVec" desc="World space normal at closest point"/>
		<output name="shape" type="number" desc="Handle to closest shape"/>
	</function>
	<function name="ConstrainVelocity">
		<input name="bodyA" type="number" optional="false" desc="First body handle (zero for static)"/>
		<input name="bodyB" type="number" optional="false" desc="Second body handle (zero for static)"/>
		<input name="point" type="TVec" optional="false" desc="World space point"/>
		<input name="dir" type="TVec" optional="false" desc="World space direction"/>
		<input name="relVel" type="number" optional="false" desc="Desired relative velocity along the provided direction"/>
		<input name="min" type="number" optional="true" desc="Minimum impulse (default: -infinity)"/>
		<input name="max" type="number" optional="true" desc="Maximum impulse (default: infinity)"/>
	</function>
	<function name="ConstrainAngularVelocity">
		<input name="bodyA" type="number" optional="false" desc="First body handle (zero for static)"/>
		<input name="bodyB" type="number" optional="false" desc="Second body handle (zero for static)"/>
		<input name="dir" type="TVec" optional="false" desc="World space direction"/>
		<input name="relAngVel" type="number" optional="false" desc="Desired relative angular velocity along the provided direction"/>
		<input name="min" type="number" optional="true" desc="Minimum angular impulse (default: -infinity)"/>
		<input name="max" type="number" optional="true" desc="Maximum angular impulse (default: infinity)"/>
	</function>
	<function name="ConstrainPosition">
		<input name="bodyA" type="number" optional="false" desc="First body handle (zero for static)"/>
		<input name="bodyB" type="number" optional="false" desc="Second body handle (zero for static)"/>
		<input name="pointA" type="TVec" optional="false" desc="World space point for first body"/>
		<input name="pointB" type="TVec" optional="false" desc="World space point for second body"/>
		<input name="maxVel" type="number" optional="true" desc="Maximum relative velocity (default: infinite)"/>
		<input name="maxImpulse" type="number" optional="true" desc="Maximum impulse (default: infinite)"/>
	</function>
	<function name="ConstrainOrientation">
		<input name="bodyA" type="number" optional="false" desc="First body handle (zero for static)"/>
		<input name="bodyB" type="number" optional="false" desc="Second body handle (zero for static)"/>
		<input name="quatA" type="TQuat" optional="false" desc="World space orientation for first body"/>
		<input name="quatB" type="TQuat" optional="false" desc="World space orientation for second body"/>
		<input name="maxAngVel" type="number" optional="true" desc="Maximum relative angular velocity (default: infinite)"/>
		<input name="maxAngImpulse" type="number" optional="true" desc="Maximum angular impulse (default: infinite)"/>
	</function>
	<function name="GetWorldBody">
		<output name="body" type="number" desc="Handle to the static world body"/>
	</function>
	<function name="FindShape">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first shape with specified tag or zero if not found"/>
	</function>
	<function name="FindShapes">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all shapes with specified tag"/>
	</function>
	<function name="GetShapeLocalTransform">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="transform" type="TTransform" desc="Return shape transform in body space"/>
	</function>
	<function name="SetShapeLocalTransform">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Shape transform in body space"/>
	</function>
	<function name="GetShapeWorldTransform">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="transform" type="TTransform" desc="Return shape transform in world space"/>
	</function>
	<function name="GetShapeBody">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="handle" type="number" desc="Body handle"/>
	</function>
	<function name="GetShapeJoints">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<output name="list" type="table" desc="Indexed table with joints connected to shape"/>
	</function>
	<function name="GetShapeLights">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<output name="list" type="table" desc="Indexed table of lights owned by shape"/>
	</function>
	<function name="GetShapeBounds">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="min" type="TVec" desc="Vector representing the AABB lower bound"/>
		<output name="max" type="TVec" desc="Vector representing the AABB upper bound"/>
	</function>
	<function name="SetShapeEmissiveScale">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="scale" type="number" optional="false" desc="Scale factor for emissiveness"/>
	</function>
	<function name="SetShapeDensity">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="density" type="number" optional="false" desc="New density for the shape"/>
	</function>
	<function name="GetShapeMaterialAtPosition">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="pos" type="TVec" optional="false" desc="Position in world space"/>
		<input name="includeUnphysical" type="boolean" optional="true" desc="Include unphysical voxels in the search. Default false."/>
		<output name="type" type="string" desc="Material type"/>
		<output name="r" type="number" desc="Red"/>
		<output name="g" type="number" desc="Green"/>
		<output name="b" type="number" desc="Blue"/>
		<output name="a" type="number" desc="Alpha"/>
		<output name="entry" type="number" desc="Palette entry for voxel (zero if empty)"/>
	</function>
	<function name="GetShapeMaterialAtIndex">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="x" type="number" optional="false" desc="X integer coordinate"/>
		<input name="y" type="number" optional="false" desc="Y integer coordinate"/>
		<input name="z" type="number" optional="false" desc="Z integer coordinate"/>
		<output name="type" type="string" desc="Material type"/>
		<output name="r" type="number" desc="Red"/>
		<output name="g" type="number" desc="Green"/>
		<output name="b" type="number" desc="Blue"/>
		<output name="a" type="number" desc="Alpha"/>
		<output name="entry" type="number" desc="Palette entry for voxel (zero if empty)"/>
	</function>
	<function name="GetShapeSize">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="xsize" type="number" desc="Size in voxels along x axis"/>
		<output name="ysize" type="number" desc="Size in voxels along y axis"/>
		<output name="zsize" type="number" desc="Size in voxels along z axis"/>
		<output name="scale" type="number" desc="The size of one voxel in meters (with default scale it is 0.1)"/>
	</function>
	<function name="GetShapeVoxelCount">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="count" type="number" desc="Number of voxels in shape"/>
	</function>
	<function name="IsShapeVisible">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="maxDist" type="number" optional="false" desc="Maximum visible distance"/>
		<input name="rejectTransparent" type="boolean" optional="true" desc="See through transparent materials. Default false."/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server(host) player."/>
		<output name="visible" type="boolean" desc="Return true if shape is visible"/>
	</function>
	<function name="IsShapeBroken">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="broken" type="boolean" desc="Return true if shape is broken"/>
	</function>
	<function name="DrawShapeOutline">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="r" type="number" optional="true" desc="Red"/>
		<input name="g" type="number" optional="true" desc="Green"/>
		<input name="b" type="number" optional="true" desc="Blue"/>
		<input name="a" type="number" optional="false" desc="Alpha"/>
	</function>
	<function name="DrawShapeHighlight">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="amount" type="number" optional="false" desc="Amount"/>
	</function>
	<function name="SetShapeCollisionFilter">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<input name="layer" type="number" optional="false" desc="Layer bits (0-255)"/>
		<input name="mask" type="number" optional="false" desc="Mask bits (0-255)"/>
	</function>
	<function name="GetShapeCollisionFilter">
		<input name="handle" type="number" optional="false" desc="Shape handle"/>
		<output name="layer" type="number" desc="Layer bits (0-255)"/>
		<output name="mask" type="number" desc="Mask bits (0-255)"/>
	</function>
	<function name="CreateShape">
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Shape transform in body space"/>
		<input name="refShape" type="number or string" optional="false" desc="Handle to reference shape or path to vox file"/>
		<output name="newShape" type="number" desc="Handle of new shape"/>
	</function>
	<function name="ClearShape">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
	</function>
	<function name="ResizeShape">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<input name="xmi" type="number" optional="false" desc="Lower X coordinate"/>
		<input name="ymi" type="number" optional="false" desc="Lower Y coordinate"/>
		<input name="zmi" type="number" optional="false" desc="Lower Z coordinate"/>
		<input name="xma" type="number" optional="false" desc="Upper X coordinate"/>
		<input name="yma" type="number" optional="false" desc="Upper Y coordinate"/>
		<input name="zma" type="number" optional="false" desc="Upper Z coordinate"/>
		<output name="resized" type="boolean" desc="Resized successfully"/>
		<output name="offset" type="TVec" desc="Offset vector in shape local space"/>
	</function>
	<function name="SetShapeBody">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<input name="transform" type="TTransform" optional="true" desc="New local shape transform. Default is existing local transform."/>
	</function>
	<function name="CopyShapeContent">
		<input name="src" type="number" optional="false" desc="Source shape handle"/>
		<input name="dst" type="number" optional="false" desc="Destination shape handle"/>
	</function>
	<function name="CopyShapePalette">
		<input name="src" type="number" optional="false" desc="Source shape handle"/>
		<input name="dst" type="number" optional="false" desc="Destination shape handle"/>
	</function>
	<function name="GetShapePalette">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<output name="entries" type="table" desc="Palette material entries"/>
	</function>
	<function name="GetShapeMaterial">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<input name="entry" type="number" optional="false" desc="Material entry"/>
		<output name="type" type="string" desc="Type"/>
		<output name="red" type="number" desc="Red value"/>
		<output name="green" type="number" desc="Green value"/>
		<output name="blue" type="number" desc="Blue value"/>
		<output name="alpha" type="number" desc="Alpha value"/>
		<output name="reflectivity" type="number" desc="Range 0 to 1"/>
		<output name="shininess" type="number" desc="Range 0 to 1"/>
		<output name="metallic" type="number" desc="Range 0 to 1"/>
		<output name="emissive" type="number" desc="Range 0 to 32"/>
	</function>
	<function name="SetBrush">
		<input name="type" type="string" optional="false" desc="One of 'sphere', 'cube' or 'noise'"/>
		<input name="size" type="number" optional="false" desc="Size of brush in voxels (must be in range 1 to 16)"/>
		<input name="index or path" type="number or string" optional="false" desc="Material index or path to brush vox file"/>
		<input name="object" type="string" optional="true" desc="Optional object in brush vox file if brush vox file is used"/>
	</function>
	<function name="DrawShapeLine">
		<input name="shape" type="number" optional="false" desc="Handle to shape"/>
		<input name="x0" type="number" optional="false" desc="Start X coordinate"/>
		<input name="y0" type="number" optional="false" desc="Start Y coordinate"/>
		<input name="z0" type="number" optional="false" desc="Start Z coordinate"/>
		<input name="x1" type="number" optional="false" desc="End X coordinate"/>
		<input name="y1" type="number" optional="false" desc="End Y coordinate"/>
		<input name="z1" type="number" optional="false" desc="End Z coordinate"/>
		<input name="paint" type="boolean" optional="true" desc="Paint mode. Default is false."/>
		<input name="noOverwrite" type="boolean" optional="true" desc="Only fill in voxels if space isn't already occupied. Default is false."/>
	</function>
	<function name="DrawShapeBox">
		<input name="shape" type="number" optional="false" desc="Handle to shape"/>
		<input name="x0" type="number" optional="false" desc="Start X coordinate"/>
		<input name="y0" type="number" optional="false" desc="Start Y coordinate"/>
		<input name="z0" type="number" optional="false" desc="Start Z coordinate"/>
		<input name="x1" type="number" optional="false" desc="End X coordinate"/>
		<input name="y1" type="number" optional="false" desc="End Y coordinate"/>
		<input name="z1" type="number" optional="false" desc="End Z coordinate"/>
	</function>
	<function name="ExtrudeShape">
		<input name="shape" type="number" optional="false" desc="Handle to shape"/>
		<input name="x" type="number" optional="false" desc="X coordinate to extrude"/>
		<input name="y" type="number" optional="false" desc="Y coordinate to extrude"/>
		<input name="z" type="number" optional="false" desc="Z coordinate to extrude"/>
		<input name="dx" type="number" optional="false" desc="X component of extrude direction, should be -1, 0 or 1"/>
		<input name="dy" type="number" optional="false" desc="Y component of extrude direction, should be -1, 0 or 1"/>
		<input name="dz" type="number" optional="false" desc="Z component of extrude direction, should be -1, 0 or 1"/>
		<input name="steps" type="number" optional="false" desc="Length of extrusion in voxels"/>
		<input name="mode" type="string" optional="false" desc="Extrusion mode, one of 'exact', 'material', 'geometry'. Default is 'exact'"/>
	</function>
	<function name="TrimShape">
		<input name="shape" type="number" optional="false" desc="Source handle"/>
		<output name="offset" type="TVec" desc="Offset vector in shape local space"/>
	</function>
	<function name="SplitShape">
		<input name="shape" type="number" optional="false" desc="Source handle"/>
		<input name="removeResidual" type="boolean" optional="false" desc="Remove residual shapes (default false)"/>
		<output name="newShapes" type="table" desc="List of shape handles created"/>
	</function>
	<function name="MergeShape">
		<input name="shape" type="number" optional="false" desc="Input shape"/>
		<output name="shape" type="number" desc="Shape handle after merge"/>
	</function>
	<function name="IsShapeDisconnected">
		<input name="shape" type="number" optional="false" desc="Input shape"/>
		<output name="disconnected" type="boolean" desc="True if shape disconnected (has detached parts)"/>
	</function>
	<function name="IsStaticShapeDetached">
		<input name="shape" type="number" optional="false" desc="Input shape"/>
		<output name="disconnected" type="boolean" desc="True if static shape has detached parts"/>
	</function>
	<function name="GetShapeClosestPoint">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<input name="origin" type="TVec" optional="false" desc="World space point"/>
		<output name="hit" type="boolean" desc="True if a point was found"/>
		<output name="point" type="TVec" desc="World space closest point"/>
		<output name="normal" type="TVec" desc="World space normal at closest point"/>
	</function>
	<function name="IsShapeTouching">
		<input name="a" type="number" optional="false" desc="Handle to first shape"/>
		<input name="b" type="number" optional="false" desc="Handle to second shape"/>
		<output name="touching" type="boolean" desc="True is shapes a and b are touching each other"/>
	</function>
	<function name="FindLocation">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first location with specified tag or zero if not found"/>
	</function>
	<function name="FindLocations">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all locations with specified tag"/>
	</function>
	<function name="GetLocationTransform">
		<input name="handle" type="number" optional="false" desc="Location handle"/>
		<output name="transform" type="TTransform" desc="Transform of the location"/>
	</function>
	<function name="FindJoint">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first joint with specified tag or zero if not found"/>
	</function>
	<function name="FindJoints">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all joints with specified tag"/>
	</function>
	<function name="IsJointBroken">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="broken" type="boolean" desc="True if joint is broken"/>
	</function>
	<function name="GetJointType">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="type" type="string" desc="Joint type"/>
	</function>
	<function name="GetJointOtherShape">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<output name="other" type="number" desc="Other shape handle"/>
	</function>
	<function name="GetJointShapes">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="shapes" type="number" desc="Shape handles"/>
	</function>
	<function name="SetJointMotor">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<input name="velocity" type="number" optional="false" desc="Desired velocity"/>
		<input name="strength" type="number" optional="true" desc="Desired strength. Default is infinite. Zero to disable."/>
	</function>
	<function name="SetJointMotorTarget">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<input name="target" type="number" optional="false" desc="Desired movement target"/>
		<input name="maxVel" type="number" optional="true" desc="Maximum velocity to reach target. Default is infinite."/>
		<input name="strength" type="number" optional="true" desc="Desired strength. Default is infinite. Zero to disable."/>
	</function>
	<function name="GetJointLimits">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="min" type="number" desc="Minimum joint limit (angle or distance)"/>
		<output name="max" type="number" desc="Maximum joint limit (angle or distance)"/>
	</function>
	<function name="GetJointMovement">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="movement" type="number" desc="Current joint position or angle"/>
	</function>
	<function name="GetJointedBodies">
		<input name="body" type="number" optional="false" desc="Body handle (must be dynamic)"/>
		<output name="bodies" type="table" desc="Handles to all dynamic bodies in the jointed structure. The input handle will also be included."/>
	</function>
	<function name="DetachJointFromShape">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
	</function>
	<function name="GetRopeNumberOfPoints">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="amount" type="number" desc="Number of points in a rope or zero if invalid"/>
	</function>
	<function name="GetRopePointPosition">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<input name="index" type="number" optional="false" desc="The point index, starting at 1"/>
		<output name="pos" type="TVec" desc="World position of the point, or nil, if invalid"/>
	</function>
	<function name="GetRopeBounds">
		<input name="joint" type="number" optional="false" desc="Joint handle"/>
		<output name="min" type="TVec" desc="Lower point of rope bounds in world space"/>
		<output name="max" type="TVec" desc="Upper point of rope bounds in world space"/>
	</function>
	<function name="BreakRope">
		<input name="joint" type="number" optional="false" desc="Rope type joint handle"/>
		<input name="point" type="TVec" optional="false" desc="Point of break as world space vector"/>
	</function>
	<function name="SetAnimatorPositionIK">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="begname" type="string" optional="false" desc="Name of the start-bone of the chain"/>
		<input name="endname" type="string" optional="false" desc="Name of the end-bone of the chain"/>
		<input name="target" type="TVec" optional="false" desc="World target position that the 'endname' bone should reach"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="history" type="number" optional="true" desc="How much of the previous frames result [0,1] that should be used when start the IK search, default is 0.0"/>
		<input name="flag" type="boolean" optional="true" desc="TRUE if constraints should be used, default is TRUE"/>
	</function>
	<function name="SetAnimatorTransformIK">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="begname" type="string" optional="false" desc="Name of the start-bone of the chain"/>
		<input name="endname" type="string" optional="false" desc="Name of the end-bone of the chain"/>
		<input name="transform" type="TTransform" optional="false" desc="World target transform that the 'endname' bone should reach"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="history" type="number" optional="true" desc="How much of the previous frames result [0,1] that should be used when start the IK search, default is 0.0"/>
		<input name="locktarget" type="boolean" optional="true" desc="TRUE if the end-bone should be fixed to the target-transform, FALSE if IK solution is used"/>
		<input name="useconstraints" type="boolean" optional="true" desc="TRUE if constraints should be used, default is TRUE"/>
	</function>
	<function name="GetBoneChainLength">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="begname" type="string" optional="false" desc="Name of the start-bone of the chain"/>
		<input name="endname" type="string" optional="false" desc="Name of the end-bone of the chain"/>
		<output name="length" type="number" desc="Length of the bone chain between 'start-bone' and 'end-bone'"/>
	</function>
	<function name="FindAnimator">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first animator with specified tag or zero if not found"/>
	</function>
	<function name="FindAnimators">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all animators with specified tag"/>
	</function>
	<function name="GetAnimatorTransform">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<output name="transform" type="TTransform" desc="World space transform of the animator"/>
	</function>
	<function name="GetAnimatorAdjustTransformIK">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Name of the location node"/>
		<output name="transform" type="TTransform" desc="World space transform of the animator"/>
	</function>
	<function name="SetAnimatorTransform">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Desired transform"/>
	</function>
	<function name="MakeRagdoll">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
	</function>
	<function name="UnRagdoll">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="time" type="number" optional="true" desc="Transition time"/>
	</function>
	<function name="PlayAnimation">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="filter" type="string" optional="true" desc="Name of the bone and its subtree that will be affected"/>
		<output name="handle" type="number" desc="Handle to the instance that can be used with PlayAnimationInstance, zero if clip reached its end"/>
	</function>
	<function name="PlayAnimationLoop">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="filter" type="string" optional="true" desc="Name of the bone and its subtree that will be affected"/>
	</function>
	<function name="PlayAnimationInstance">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="instance" type="number" optional="false" desc="Instance handle"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="speed" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<output name="handle" type="number" desc="Handle to the instance that can be used with PlayAnimationInstance, zero if clip reached its end"/>
	</function>
	<function name="StopAnimationInstance">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="instance" type="number" optional="false" desc="Instance handle"/>
	</function>
	<function name="PlayAnimationFrame">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="time" type="number" optional="false" desc="Time in the animation"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this animation, default is 1.0"/>
		<input name="filter" type="string" optional="true" desc="Name of the bone and its subtree that will be affected"/>
	</function>
	<function name="BeginAnimationGroup">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] of this group, default is 1.0"/>
		<input name="filter" type="string" optional="true" desc="Name of the bone and its subtree that will be affected"/>
	</function>
	<function name="EndAnimationGroup">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
	</function>
	<function name="PlayAnimationInstances">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
	</function>
	<function name="GetAnimationClipNames">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<output name="list" type="table" desc="Indexed table with animation names"/>
	</function>
	<function name="GetAnimationClipDuration">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<output name="time" type="number" desc="Total duration of the animation"/>
	</function>
	<function name="SetAnimationClipFade">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="fadein" type="number" optional="false" desc="Fadein time of the animation"/>
		<input name="fadeout" type="number" optional="false" desc="Fadeout time of the animation"/>
	</function>
	<function name="SetAnimationClipSpeed">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="speed" type="number" optional="false" desc="Sets the speed factor of the animation"/>
	</function>
	<function name="TrimAnimationClip">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="begoffset" type="number" optional="false" desc="Time offset from the beginning of the animation"/>
		<input name="endoffset" type="number" optional="true" desc="Time offset, positive value means from the beginning and negative value means from the end, zero(default) means at end"/>
	</function>
	<function name="GetAnimationClipLoopPosition">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<output name="time" type="number" desc="Time of the current playposition in the animation"/>
	</function>
	<function name="GetAnimationInstancePosition">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="instance" type="number" optional="false" desc="Instance handle"/>
		<output name="time" type="number" desc="Time of the current playposition in the animation"/>
	</function>
	<function name="SetAnimationClipLoopPosition">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Animation name"/>
		<input name="time" type="number" optional="false" desc="Time in the animation"/>
	</function>
	<function name="SetBoneRotation">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<input name="quat" type="TQuat" optional="false" desc="Orientation of the bone"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] default is 1.0"/>
	</function>
	<function name="SetBoneLookAt">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<input name="point" type="table" optional="false" desc="World space point as vector"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] default is 1.0"/>
	</function>
	<function name="RotateBone">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<input name="quat" type="TQuat" optional="false" desc="Additive orientation"/>
		<input name="weight" type="number" optional="true" desc="Weight [0,1] default is 1.0"/>
	</function>
	<function name="GetBoneNames">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<output name="list" type="table" desc="Indexed table with bone-names"/>
	</function>
	<function name="GetBoneBody">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<output name="handle" type="number" desc="Handle to the bone's body, or zero if no bone is present."/>
	</function>
	<function name="GetBoneWorldTransform">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<output name="transform" type="TTransform" desc="World space transform of the bone"/>
	</function>
	<function name="GetBoneBindPoseTransform">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
		<input name="name" type="string" optional="false" desc="Bone name"/>
		<output name="transform" type="TTransform" desc="Local space transform of the bone in bindpose"/>
	</function>
	<function name="FindLight">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first light with specified tag or zero if not found"/>
	</function>
	<function name="FindLights">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all lights with specified tag"/>
	</function>
	<function name="SetLightEnabled">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<input name="enabled" type="boolean" optional="false" desc="Set to true if light should be enabled"/>
	</function>
	<function name="SetLightColor">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<input name="r" type="number" optional="false" desc="Red value"/>
		<input name="g" type="number" optional="false" desc="Green value"/>
		<input name="b" type="number" optional="false" desc="Blue value"/>
	</function>
	<function name="SetLightIntensity">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<input name="intensity" type="number" optional="false" desc="Desired intensity of the light"/>
	</function>
	<function name="GetLightTransform">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<output name="transform" type="TTransform" desc="World space light transform"/>
	</function>
	<function name="GetLightShape">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<output name="handle" type="number" desc="Shape handle or zero if not attached to shape"/>
	</function>
	<function name="IsLightActive">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<output name="active" type="boolean" desc="True if light is currently emitting light"/>
	</function>
	<function name="IsPointAffectedByLight">
		<input name="handle" type="number" optional="false" desc="Light handle"/>
		<input name="point" type="TVec" optional="false" desc="World space point as vector"/>
		<output name="affected" type="boolean" desc="Return true if point is in light cone and range"/>
	</function>
	<function name="GetFlashlight">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle of the player's flashlight"/>
	</function>
	<function name="SetFlashlight">
		<input name="handle" type="number" optional="false" desc="Handle of the light"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="FindTrigger">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first trigger with specified tag or zero if not found"/>
	</function>
	<function name="FindTriggers">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all triggers with specified tag"/>
	</function>
	<function name="GetTriggerTransform">
		<input name="handle" type="number" optional="false" desc="Trigger handle"/>
		<output name="transform" type="TTransform" desc="Current trigger transform in world space"/>
	</function>
	<function name="SetTriggerTransform">
		<input name="handle" type="number" optional="false" desc="Trigger handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Desired trigger transform in world space"/>
	</function>
	<function name="GetTriggerBounds">
		<input name="handle" type="number" optional="false" desc="Trigger handle"/>
		<output name="min" type="TVec" desc="Lower point of trigger bounds in world space"/>
		<output name="max" type="TVec" desc="Upper point of trigger bounds in world space"/>
	</function>
	<function name="IsBodyInTrigger">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="body" type="number" optional="false" desc="Body handle"/>
		<output name="inside" type="boolean" desc="True if body is in trigger volume"/>
	</function>
	<function name="IsVehicleInTrigger">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="inside" type="boolean" desc="True if vehicle is in trigger volume"/>
	</function>
	<function name="IsShapeInTrigger">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<output name="inside" type="boolean" desc="True if shape is in trigger volume"/>
	</function>
	<function name="IsPointInTrigger">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="point" type="TVec" optional="false" desc="Word space point as vector"/>
		<output name="inside" type="boolean" desc="True if point is in trigger volume"/>
	</function>
	<function name="IsPointInBoundaries">
		<input name="point" type="TVec" optional="false" desc="Point"/>
		<output name="value" type="boolean" desc="True if point is inside scene boundaries or if there are no boundaries"/>
		<output name="dist" type="number" desc="Distance to the scene boundaries. Zero if there are no boundaries or if point is outside."/>
	</function>
	<function name="IsTriggerEmpty">
		<input name="handle" type="number" optional="false" desc="Trigger handle"/>
		<input name="demolision" type="boolean" optional="true" desc="If true, small debris and vehicles are ignored"/>
		<output name="empty" type="boolean" desc="True if trigger is empty"/>
		<output name="maxpoint" type="TVec" desc="World space point of highest point (largest Y coordinate) if not empty"/>
	</function>
	<function name="GetTriggerDistance">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="point" type="TVec" optional="false" desc="Word space point as vector"/>
		<output name="distance" type="number" desc="Positive if point is outside, negative if inside"/>
	</function>
	<function name="GetTriggerClosestPoint">
		<input name="trigger" type="number" optional="false" desc="Trigger handle"/>
		<input name="point" type="TVec" optional="false" desc="Word space point as vector"/>
		<output name="closest" type="TVec" desc="Closest point in trigger as vector"/>
	</function>
	<function name="FindScreen">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first screen with specified tag or zero if not found"/>
	</function>
	<function name="FindScreens">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all screens with specified tag"/>
	</function>
	<function name="SetScreenEnabled" serveronly="true">
		<input name="screen" type="number" optional="false" desc="Screen handle"/>
		<input name="enabled" type="boolean" optional="false" desc="True if screen should be enabled"/>
	</function>
	<function name="IsScreenEnabled">
		<input name="screen" type="number" optional="false" desc="Screen handle"/>
		<output name="enabled" type="boolean" desc="True if screen is enabled"/>
	</function>
	<function name="GetScreenShape">
		<input name="screen" type="number" optional="false" desc="Screen handle"/>
		<output name="shape" type="number" desc="Shape handle or zero if none"/>
	</function>
	<function name="GetScreenPlayer">
		<input name="screen" type="number" optional="false" desc="Screen handle"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="FindVehicle">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first vehicle with specified tag or zero if not found"/>
	</function>
	<function name="FindVehicles">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="list" type="table" desc="Indexed table with handles to all vehicles with specified tag"/>
	</function>
	<function name="GetVehicleTransform">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="transform" type="TTransform" desc="Transform of vehicle"/>
	</function>
	<function name="GetVehicleExhaustTransforms">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="transforms" type="table" desc="Transforms of vehicle exhausts"/>
	</function>
	<function name="GetVehicleVitalTransforms">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="transforms" type="table" desc="Transforms of vehicle vitals"/>
	</function>
	<function name="GetVehicleBodies">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="transforms" type="table" desc="Vehicle bodies handles"/>
	</function>
	<function name="GetVehicleBody">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="body" type="number" desc="Main body of vehicle"/>
	</function>
	<function name="GetVehicleHealth">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="health" type="number" desc="Vehicle health (zero to one)"/>
	</function>
	<function name="GetVehicleParams">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="params" type="table" desc="Vehicle params"/>
	</function>
	<function name="SetVehicleParam">
		<input name="handle" type="number" optional="false" desc="Vehicle handler"/>
		<input name="param" type="string" optional="false" desc="Param name"/>
		<input name="value" type="number" optional="false" desc="Param value"/>
	</function>
	<function name="GetVehicleDriverPos">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="pos" type="TVec" desc="Driver position as vector in vehicle space"/>
	</function>
	<function name="GetVehicleAvailableSeatPos">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="pos" type="TVec" desc="World space position of the next available seat. {0, 0, 0} if none is available."/>
	</function>
	<function name="GetVehicleSteering">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="steering" type="number" desc="Driver steering value -1 to 1"/>
	</function>
	<function name="GetVehicleDrive">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="drive" type="number" desc="Driver drive value -1 to 1"/>
	</function>
	<function name="DriveVehicle" serveronly="true">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<input name="drive" type="number" optional="false" desc="Reverse/forward control -1 to 1"/>
		<input name="steering" type="number" optional="false" desc="Left/right control -1 to 1"/>
		<input name="handbrake" type="boolean" optional="false" desc="Handbrake control"/>
	</function>
	<function name="GetVehicleLocationWorldTransform">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<output name="transform" type="TTransform" desc="World transform"/>
	</function>
	<function name="GetVehiclePassengerCount">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<output name="count" type="number" desc="Number of passengers"/>
		<output name="seats" type="number" desc="Number of seats"/>
		<output name="hasDriver" type="bool" desc="If vehicle has a driver"/>
	</function>
	<function name="SetVehicleHealth" serveronly="true">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
		<input name="health" type="number" optional="false" desc="Set vehicle health (between zero and one)"/>
	</function>
	<function name="FindRig">
		<input name="tag" type="string" optional="true" desc="Tag name"/>
		<input name="global" type="boolean" optional="true" desc="Search in entire scene"/>
		<output name="handle" type="number" desc="Handle to first rig with specified tag or zero if not found"/>
	</function>
	<function name="GetRigWorldTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<output name="transform" type="TTransform" desc="World transform, nil if rig is missing"/>
	</function>
	<function name="SetRigWorldTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="transform" type="TTransform" optional="false" desc="New world transform"/>
	</function>
	<function name="GetRigLocationWorldTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<output name="transform" type="TTransform" desc="World transform, nil if rig is missing or location is missing"/>
	</function>
	<function name="SetRigLocationWorldTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="transform" type="TTransform" optional="false" desc="New world transform"/>
	</function>
	<function name="GetRigLocationLocalTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<output name="transform" type="TTransform" desc="Local transform, nil if rig is missing or location is missing"/>
	</function>
	<function name="SetRigLocationLocalTransform">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="transform" type="TTransform" optional="false" desc="New world transform"/>
	</function>
	<function name="GetAllPlayers">
		<output name="name" type="list" desc="List of all player Ids"/>
	</function>
	<function name="GetMaxPlayers">
		<output name="count" type="interger" desc="Number of max players for the session. Returns 1 for non-multiplayer."/>
	</function>
	<function name="GetPlayerCount">
		<output name="count" type="number" desc="Number of players"/>
	</function>
	<function name="GetAddedPlayers">
		<output name="playerIds" type="table" desc="List of added player Ids"/>
	</function>
	<function name="GetRemovedPlayers">
		<output name="playerIds" type="table" desc="List of removed player Ids"/>
	</function>
	<function name="GetPlayerName">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="name" type="string" desc="Player name"/>
	</function>
	<function name="GetLocalPlayer">
		<output name="GetLocalPlayer" type="number" desc="Local player ID."/>
	</function>
	<function name="IsPlayerLocal">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="IsPlayerLocal" type="boolean" desc="Whether a player is the local player."/>
	</function>
	<function name="GetPlayerCharacter">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="character" type="string" desc="Character id"/>
	</function>
	<function name="IsPlayerHost">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="IsPlayerHost" type="boolean" desc="Whether a player is the host"/>
	</function>
	<function name="IsPlayerValid">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="IsPlayerValid" type="boolean" desc="Whether a player is valid (existing player)"/>
	</function>
	<function name="GetPlayerPos">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="position" type="TVec" desc="Player center position"/>
	</function>
	<function name="GetPlayerAimInfo">
		<input name="position" type="TVec" optional="false" desc="Start position of the search"/>
		<input name="maxdist" type="number" optional="true" desc="Max search distance"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="hit" type="boolean" desc="TRUE if hit, FALSE otherwise."/>
		<output name="startpos" type="TVec" desc="Player can modify start position when close to walls etc"/>
		<output name="endpos" type="TVec" desc="Hit position"/>
		<output name="direction" type="TVec" desc="Direction from start position to end position"/>
		<output name="hitnormal" type="TVec" desc="Normal of the hitpoint"/>
		<output name="hitdist" type="number" desc="Distance of the hit"/>
		<output name="hitentity" type="handle" desc="Handle of the entitiy being hit"/>
		<output name="hitmaterial" type="handle" desc="Name of the material being hit"/>
	</function>
	<function name="GetPlayerPitch">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="pitch" type="number" desc="Current player pitch angle"/>
	</function>
	<function name="GetPlayerYaw">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="yaw" type="number" desc="Current player yaw angle"/>
	</function>
	<function name="SetPlayerPitch" serveronly="true">
		<input name="pitch" type="number" optional="false" desc="Pitch."/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerCrouch">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="recoil" type="number" desc="Current player crouch"/>
	</function>
	<function name="GetPlayerTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="transform" type="TTransform" desc="Current player transform"/>
	</function>
	<function name="GetPlayerTransformWithPitch">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="transform" type="table" desc="Current player transform, including pitch (look up/down)"/>
	</function>
	<function name="SetPlayerTransform" serveronly="true">
		<input name="transform" type="TTransform" optional="false" desc="Desired player transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerTransformWithPitch" serveronly="true">
		<input name="transform" type="table" optional="false" desc="Desired player transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerGroundVelocity" serveronly="true">
		<input name="vel" type="TVec" optional="false" desc="Desired ground velocity"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerEyeTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="transform" type="TTransform" desc="Current player eye transform"/>
	</function>
	<function name="GetPlayerCameraTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="transform" type="TTransform" desc="Current player camera transform"/>
	</function>
	<function name="SetPlayerCameraOffsetTransform" clientonly="true">
		<input name="transform" type="TTransform" optional="false" desc="Desired player camera offset transform"/>
		<input name="stackable" type="boolean" optional="true" desc="True if eye offset should summ up with multiple calls per tick"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="SetPlayerSpawnTransform" serveronly="true">
		<input name="transform" type="TTransform" optional="false" desc="Desired player spawn transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerSpawnHealth" serveronly="true">
		<input name="health" type="number" optional="false" desc="Desired player spawn health (between zero and one)"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerSpawnTool" serveronly="true">
		<input name="id" type="string" optional="false" desc="Tool unique identifier"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerVelocity">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="velocity" type="TVec" desc="Player velocity in world space as vector"/>
	</function>
	<function name="SetPlayerVehicle" serveronly="true">
		<input name="vehicle" type="number" optional="false" desc="Handle to vehicle or zero to not drive."/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerAnimator">
		<input name="animator" type="number" optional="false" desc="Handle to animator or zero for no animator"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerAnimator">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="animator" type="number" desc="Handle to animator or zero for no animator"/>
	</function>
	<function name="GetPlayerBodies">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="bodies" type="list" desc="Get bodies associated with a player"/>
	</function>
	<function name="SetPlayerVelocity" serveronly="true">
		<input name="velocity" type="TVec" optional="false" desc="Player velocity in world space as vector"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerVehicle">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Current vehicle handle, or zero if not in vehicle"/>
	</function>
	<function name="IsPlayerGrounded">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="isGrounded" type="boolean" desc="Whether the player is grounded"/>
	</function>
	<function name="IsPlayerVehicleDriver">
		<input name="handle" type="number" optional="false" desc="Vehicle handle"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="isDriver" type="boolean" desc="Whether the player is driver for this vehicle"/>
	</function>
	<function name="IsPlayerVehiclePassenger">
		<input name="handle" type="number" optional="false" desc="Vehicle handle"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="isPassenger" type="boolean" desc="Whether the player is a passenger of this vehicle"/>
	</function>
	<function name="IsPlayerJumping">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="isGrounded" type="boolean" desc="Whether the player is jumping or not"/>
	</function>
	<function name="GetPlayerGroundContact">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="contact" type="boolean" desc="Whether the player is grounded"/>
		<output name="shape" type="number" desc="Handle to shape"/>
		<output name="point" type="Vec" desc="Point of contact"/>
		<output name="normal" type="Vec" desc="Normal of contact"/>
	</function>
	<function name="GetPlayerGrabShape">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to grabbed shape or zero if not grabbing."/>
	</function>
	<function name="GetPlayerGrabBody">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to grabbed body or zero if not grabbing."/>
	</function>
	<function name="ReleasePlayerGrab" serveronly="true">
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerGrabPoint">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="pos" type="TVec" desc="The world space grab point."/>
	</function>
	<function name="GetPlayerPickShape">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to picked shape or zero if nothing is picked"/>
	</function>
	<function name="GetPlayerPickBody">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to picked body or zero if nothing is picked"/>
	</function>
	<function name="GetPlayerInteractShape">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to interactable shape or zero"/>
	</function>
	<function name="GetPlayerInteractBody">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to interactable body or zero"/>
	</function>
	<function name="SetPlayerScreen" serveronly="true">
		<input name="handle" type="number" optional="false" desc="Handle to screen or zero for no screen"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerScreen">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to interacted screen or zero if none"/>
	</function>
	<function name="SetPlayerHealth" serveronly="true">
		<input name="health" type="number" optional="false" desc="Set player health (between zero and one)"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerHealth">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="health" type="number" desc="Current player health"/>
	</function>
	<function name="GetPlayerCanUseTool">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="canusetool" type="bool" desc="If the player currenty can use tool."/>
	</function>
	<function name="SetPlayerRegenerationState" serveronly="true">
		<input name="state" type="boolean" optional="false" desc="State of player regeneration"/>
		<input name="player" type="number" optional="true" desc="Player ID change regeneration for"/>
	</function>
	<function name="SetPlayerTool" serveronly="true">
		<input name="toolId" type="string" optional="false" desc="Set Tool ID"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerTool">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="toolId" type="string" desc="Get Tool ID"/>
	</function>
	<function name="RespawnPlayer" serveronly="true">
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="RespawnPlayerAtTransform" serveronly="true">
		<input name="transform" type="transform" optional="false" desc="Transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerWalkingSpeed">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="speed" type="number" desc="Current player base walking speed"/>
	</function>
	<function name="SetPlayerWalkingSpeed" serveronly="true">
		<input name="speed" type="number" optional="false" desc="Set player walking speed"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerCrouchSpeedScale">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="speed" type="number" desc="Current player walking speed while crouched"/>
	</function>
	<function name="SetPlayerCrouchSpeedScale" serveronly="true">
		<input name="speed" type="number" optional="false" desc="Set player walking speed while crouched"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerHurtSpeedScale">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="speed" type="number" desc="Current player walking speed when hurt"/>
	</function>
	<function name="SetPlayerHurtSpeedScale" serveronly="true">
		<input name="speed" type="number" optional="false" desc="Set player walking speed when hurt"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerParam">
		<input name="parameter" type="string" optional="false" desc="Parameter name"/>
		<input name="player" type="number" optional="true" desc="Player ID. On player, zero means local player."/>
		<output name="value" type="any" desc="Parameter value"/>
	</function>
	<function name="SetPlayerParam" serveronly="true">
		<input name="parameter" type="string" optional="false" desc="Parameter name"/>
		<input name="value" type="any" optional="false" desc="Parameter value"/>
		<input name="player" type="number" optional="true" desc="Player ID. On player, zero means local player."/>
	</function>
	<function name="SetPlayerHidden">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="RegisterTool" serveronly="true">
		<input name="id" type="string" optional="false" desc="Tool unique identifier"/>
		<input name="name" type="string" optional="false" desc="Tool name to show in hud"/>
		<input name="file" type="string" optional="false" desc="Path to vox file or prefab xml"/>
		<input name="group" type="number" optional="true" desc="Tool group for this tool (1-6) Default is 6."/>
	</function>
	<function name="SetToolAmmoPickupAmount" serveronly="true">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<input name="ammo" type="number" optional="false" desc="The default ammo pickup amount"/>
	</function>
	<function name="GetToolAmmoPickupAmount">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<output name="ammo" type="number" desc="The default ammo pickup amount"/>
	</function>
	<function name="GetToolBody">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="handle" type="number" desc="Handle to currently visible tool body or zero if none"/>
	</function>
	<function name="GetToolHandPoseLocalTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="right" type="TTransform" desc="Transform of right hand relative to the tool body origin, or nil if the right hand is not used"/>
		<output name="left" type="TTransform" desc="Transform of left hand, or nil if left hand is not used"/>
	</function>
	<function name="GetToolHandPoseWorldTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="right" type="TTransform" desc="Transform of right hand in world space, or nil if the right hand is not used"/>
		<output name="left" type="TTransform" desc="Transform of left hand, or nil if left hand is not used"/>
	</function>
	<function name="SetToolHandPoseLocalTransform" clientonly="true">
		<input name="right" type="TTransform" optional="false" desc="Transform of right hand relative to the tool body origin, or nil if right hand is not used"/>
		<input name="left" type="TTransform" optional="false" desc="Transform of left hand, or nil if left hand is not used"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="GetToolLocationLocalTransform">
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="location" type="TTransform" desc="Transform of a tool location in tool space or nil if location is not found."/>
	</function>
	<function name="GetToolLocationWorldTransform">
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="location" type="TTransform" desc="Transform of a tool location in world space or nil if the location is not found or if there is no visible tool body."/>
	</function>
	<function name="SetToolTransform" clientonly="true">
		<input name="transform" type="TTransform" optional="false" desc="Tool body transform"/>
		<input name="sway" type="number" optional="true" desc="Tool sway amount. Default is 1.0"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="SetToolAllowedZoom" clientonly="true">
		<input name="zoom" type="number" optional="false" desc="Zoom factor"/>
		<input name="zoom sensitivity" type="number" optional="true" desc="Input sensitivity when zoomed in. Default is 1.0."/>
	</function>
	<function name="SetToolTransformOverride" clientonly="true">
		<input name="transform" type="TTransform" optional="false" desc="Tool body transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="SetToolOffset" clientonly="true">
		<input name="offset" type="TVec" optional="false" desc="Tool body offset"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="SetToolAmmo" serveronly="true">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<input name="ammo" type="number" optional="false" desc="Total ammo"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On server, zero means server (host) player."/>
	</function>
	<function name="GetToolAmmo">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="ammo" type="number" desc="Total ammo for tool"/>
	</function>
	<function name="SetToolEnabled" serveronly="true">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<input name="enabled" type="bool" optional="false" desc="Tool enabled"/>
		<input name="playerId" type="number" optional="true" desc="Player ID"/>
	</function>
	<function name="IsToolEnabled">
		<input name="toolId" type="string" optional="false" desc="Tool ID"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="enabled" type="bool" desc="Tool enabled for player"/>
	</function>
	<function name="SetPlayerOrientation" serveronly="true">
		<input name="orientation" type="Quat" optional="false" desc="Base orientation"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerOrientation">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerUp">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="up" type="TVec" desc="Up vector of the player"/>
	</function>
	<function name="SetPlayerRig">
		<input name="rig" type="number" optional="false" desc="Rig handle"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerRig">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="rig" type="number" desc="Rig handle"/>
	</function>
	<function name="GetPlayerRigWorldTransform">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="transform" type="TTransform" desc="World transform, nil if player doesnt have a rig"/>
	</function>
	<function name="ClearPlayerRig">
		<input name="rig-id" type="number" optional="false" desc="Unique rig-id, -1 means all rigs"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerRigLocationLocalTransform">
		<input name="rig-id" type="number" optional="false" desc="Unique id"/>
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="location" type="table" optional="false" desc="Rig Local transform of the location"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="SetPlayerRigTransform">
		<input name="rig-id" type="number" optional="false" desc="Unique id"/>
		<input name="location" type="table" optional="false" desc="New world transform"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="GetPlayerRigLocationWorldTransform">
		<input name="name" type="string" optional="false" desc="Name of location"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="location" type="table" desc="Transform of a location in world space"/>
	</function>
	<function name="SetPlayerRigTags" clientonly="true">
		<input name="rig-id" type="number" optional="false" desc="Unique id"/>
		<input name="tag" type="string" optional="false" desc="Tag"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player."/>
	</function>
	<function name="GetPlayerRigHasTag">
		<input name="tag" type="string" optional="false" desc="Tag name"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="exists" type="boolean" desc="Returns true if entity has tag"/>
	</function>
	<function name="GetPlayerRigTagValue">
		<input name="tag" type="string" optional="false" desc="Tag name"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="value" type="string" desc="Returns the tag value, if any. Empty string otherwise."/>
	</function>
	<function name="GetPlayerColor">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
		<output name="inuse" type="boolean" desc="If color is used or not"/>
		<output name="r" type="number" desc="Red channel value"/>
		<output name="g" type="number" desc="Green channel value"/>
		<output name="b" type="number" desc="Blue channel value"/>
	</function>
	<function name="SetPlayerColor">
		<input name="r" type="number" optional="false" desc="Red value"/>
		<input name="g" type="number" optional="false" desc="Green value"/>
		<input name="b" type="number" optional="false" desc="Blue value"/>
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="ApplyPlayerDamage" serveronly="true">
		<input name="targetPlayerId" type="number" optional="false" desc="Target player ID"/>
		<input name="damage" type="number" optional="false" desc="Damage to apply to target player"/>
		<input name="cause" type="string" optional="true" desc="The cause of damage"/>
		<input name="instigatingPlayerId" type="number" optional="true" desc="Instigating player ID."/>
	</function>
	<function name="DisablePlayerInput" serveronly="true">
		<input name="player" type="playerIndex" optional="false" desc="Player to disable input for"/>
	</function>
	<function name="DisablePlayer" serveronly="true">
		<input name="playerId" type="number" optional="false" desc="Player to disable"/>
	</function>
	<function name="IsPlayerDisabled">
		<input name="playerId" type="number" optional="false" desc="Check if player is disabled"/>
	</function>
	<function name="DisablePlayerDamage" serveronly="true">
		<input name="playerId" type="number" optional="false" desc="Player for which damage should be disabled"/>
	</function>
	<function name="LoadSound">
		<input name="path" type="string" optional="false" desc="Path to ogg sound file"/>
		<input name="nominalDistance" type="number" optional="true" desc="The distance in meters this sound is recorded at. Affects attenuation, default is 10.0"/>
		<output name="handle" type="number" desc="Sound handle"/>
	</function>
	<function name="UnloadSound">
		<input name="handle" type="number" optional="false" desc="Sound handle"/>
	</function>
	<function name="LoadLoop">
		<input name="path" type="string" optional="false" desc="Path to ogg sound file"/>
		<input name="nominalDistance" type="number" optional="true" desc="The distance in meters this sound is recorded at. Affects attenuation, default is 10.0"/>
		<output name="handle" type="number" desc="Loop handle"/>
	</function>
	<function name="UnloadLoop">
		<input name="handle" type="number" optional="false" desc="Loop handle"/>
	</function>
	<function name="SetSoundLoopUser" clientonly="true">
		<input name="handle" type="number" optional="false" desc="Loop handle"/>
		<input name="nominalDistance" type="number" optional="false" desc="User index"/>
		<output name="flag" type="boolean" desc="TRUE if sound applied to gamepad speaker, FALSE otherwise."/>
	</function>
	<function name="PlaySound">
		<input name="handle" type="number" optional="false" desc="Sound handle"/>
		<input name="pos" type="TVec" optional="true" desc="World position as vector. Default is player position."/>
		<input name="volume" type="number" optional="true" desc="Playback volume. Default is 1.0"/>
		<input name="registerVolume" type="boolean" optional="true" desc="Register position and volume of this sound for GetLastSound. Default is true"/>
		<input name="pitch" type="number" optional="true" desc="Playback pitch. Default 1.0"/>
		<output name="handle" type="number" desc="Sound play handle"/>
	</function>
	<function name="PlaySoundForUser" clientonly="true">
		<input name="handle" type="number" optional="false" desc="Sound handle"/>
		<input name="user" type="number" optional="false" desc="Index of user to play."/>
		<input name="pos" type="TVec" optional="true" desc="World position as vector. Default is player position."/>
		<input name="volume" type="number" optional="true" desc="Playback volume. Default is 1.0"/>
		<input name="registerVolume" type="boolean" optional="true" desc="Register position and volume of this sound for GetLastSound. Default is true"/>
		<input name="pitch" type="number" optional="true" desc="Playback pitch. Default 1.0"/>
		<output name="handle" type="number" desc="Sound play handle"/>
	</function>
	<function name="StopSound">
		<input name="handle" type="number" optional="false" desc="Sound play handle"/>
	</function>
	<function name="IsSoundPlaying">
		<input name="handle" type="number" optional="false" desc="Sound play handle"/>
		<output name="playing" type="boolean" desc="True if sound is playing, false otherwise."/>
	</function>
	<function name="GetSoundProgress">
		<input name="handle" type="number" optional="false" desc="Sound play handle"/>
		<output name="progress" type="number" desc="Current sound progress in seconds."/>
	</function>
	<function name="SetSoundProgress">
		<input name="handle" type="number" optional="false" desc="Sound play handle"/>
		<input name="progress" type="number" optional="false" desc="Progress in seconds"/>
	</function>
	<function name="PlayLoop">
		<input name="handle" type="number" optional="false" desc="Loop handle"/>
		<input name="pos" type="TVec" optional="true" desc="World position as vector. Default is player position."/>
		<input name="volume" type="number" optional="true" desc="Playback volume. Default is 1.0"/>
		<input name="registerVolume" type="boolean" optional="true" desc="Register position and volume of this sound for GetLastSound. Default is true"/>
		<input name="pitch" type="number" optional="true" desc="Playback pitch. Default 1.0"/>
	</function>
	<function name="GetSoundLoopProgress">
		<input name="handle" type="number" optional="false" desc="Loop handle"/>
		<output name="progress" type="number" desc="Current music progress in seconds."/>
	</function>
	<function name="SetSoundLoopProgress">
		<input name="handle" type="number" optional="false" desc="Loop handle"/>
		<input name="progress" type="number" optional="true" desc="Progress in seconds. Default 0.0."/>
	</function>
	<function name="PlayMusic">
		<input name="path" type="string" optional="false" desc="Music path"/>
	</function>
	<function name="StopMusic">
	</function>
	<function name="IsMusicPlaying">
		<output name="playing" type="boolean" desc="True if music is playing, false otherwise."/>
	</function>
	<function name="SetMusicPaused">
		<input name="paused" type="boolean" optional="false" desc="True to pause, false to resume."/>
	</function>
	<function name="GetMusicProgress">
		<output name="progress" type="number" desc="Current music progress in seconds."/>
	</function>
	<function name="SetMusicProgress">
		<input name="progress" type="number" optional="true" desc="Progress in seconds. Default 0.0."/>
	</function>
	<function name="SetMusicVolume">
		<input name="volume" type="number" optional="false" desc="Music volume."/>
	</function>
	<function name="SetMusicLowPass">
		<input name="wet" type="number" optional="false" desc="Music low pass filter 0.0 - 1.0."/>
	</function>
	<function name="LoadSprite">
		<input name="path" type="string" optional="false" desc="Path to sprite. Must be PNG or JPG format."/>
		<output name="handle" type="number" desc="Sprite handle"/>
	</function>
	<function name="DrawSprite">
		<input name="handle" type="number" optional="false" desc="Sprite handle"/>
		<input name="transform" type="TTransform" optional="false" desc="Transform"/>
		<input name="width" type="number" optional="false" desc="Width in meters"/>
		<input name="height" type="number" optional="false" desc="Height in meters"/>
		<input name="r" type="number" optional="true" desc="Red color. Default 1.0."/>
		<input name="g" type="number" optional="true" desc="Green color. Default 1.0."/>
		<input name="b" type="number" optional="true" desc="Blue color. Default 1.0."/>
		<input name="a" type="number" optional="true" desc="Alpha. Default 1.0."/>
		<input name="depthTest" type="boolean" optional="true" desc="Depth test enabled. Default false."/>
		<input name="additive" type="boolean" optional="true" desc="Additive blending enabled. Default false."/>
		<input name="fogAffected" type="boolean" optional="true" desc="Enable distance fog effect. Default false."/>
	</function>
	<function name="QueryRequire">
		<input name="layers" type="string" optional="false" desc="Space separate list of layers"/>
	</function>
	<function name="QueryInclude">
		<input name="layers" type="string" optional="false" desc="Space separate list of layers"/>
	</function>
	<function name="QueryCollisionMask">
		<input name="mask" type="number" optional="false" desc="Mask bits (0-255)"/>
	</function>
	<function name="QueryRejectAnimator">
		<input name="handle" type="number" optional="false" desc="Animator handle"/>
	</function>
	<function name="QueryRejectVehicle">
		<input name="vehicle" type="number" optional="false" desc="Vehicle handle"/>
	</function>
	<function name="QueryRejectBody">
		<input name="body" type="number" optional="false" desc="Body handle"/>
	</function>
	<function name="QueryRejectBodies">
		<input name="bodies" type="table" optional="false" desc="Array with bodies handles"/>
	</function>
	<function name="QueryRejectShape">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
	</function>
	<function name="QueryRejectShapes">
		<input name="shapes" type="table" optional="false" desc="Array with shapes handles"/>
	</function>
	<function name="QueryRejectPlayer">
		<input name="playerId" type="number" optional="true" desc="Player ID. On client, zero means client player. On server, zero means server (host) player."/>
	</function>
	<function name="QueryRaycast">
		<input name="origin" type="TVec" optional="false" desc="Raycast origin as world space vector"/>
		<input name="direction" type="TVec" optional="false" desc="Unit length raycast direction as world space vector"/>
		<input name="maxDist" type="number" optional="false" desc="Raycast maximum distance. Keep this as low as possible for good performance."/>
		<input name="radius" type="number" optional="true" desc="Raycast thickness. Default zero."/>
		<input name="rejectTransparent" type="boolean" optional="true" desc="Raycast through transparent materials. Default false."/>
		<output name="hit" type="boolean" desc="True if raycast hit something"/>
		<output name="dist" type="number" desc="Hit distance from origin"/>
		<output name="normal" type="TVec" desc="World space normal at hit point"/>
		<output name="shape" type="number" desc="Handle to hit shape"/>
	</function>
	<function name="QueryRaycastRope">
		<input name="origin" type="TVec" optional="false" desc="Raycast origin as world space vector"/>
		<input name="direction" type="TVec" optional="false" desc="Unit length raycast direction as world space vector"/>
		<input name="maxDist" type="number" optional="false" desc="Raycast maximum distance. Keep this as low as possible for good performance."/>
		<input name="radius" type="number" optional="true" desc="Raycast thickness. Default zero."/>
		<output name="hit" type="boolean" desc="True if raycast hit something"/>
		<output name="dist" type="number" desc="Hit distance from origin"/>
		<output name="joint" type="number" desc="Handle to hit joint of rope type"/>
	</function>
	<function name="QueryRaycastWater">
		<input name="origin" type="TVec" optional="false" desc="Raycast origin as world space vector"/>
		<input name="direction" type="TVec" optional="false" desc="Unit length raycast direction as world space vector"/>
		<input name="maxDist" type="number" optional="false" desc="Raycast maximum distance. Keep this as low as possible for good performance."/>
		<output name="hit" type="boolean" desc="True if raycast hit something"/>
		<output name="dist" type="number" desc="Hit distance from origin"/>
		<output name="hitPos" type="TVec" desc="Hit point as world space vector"/>
	</function>
	<function name="QueryShot">
		<input name="origin" type="TVec" optional="false" desc="Shot ray origin as world space vector"/>
		<input name="direction" type="TVec" optional="false" desc="Unit length direction as world space vector"/>
		<input name="maxDist" type="number" optional="false" desc="Shot maximum distance. Keep this as low as possible for good performance."/>
		<input name="radius" type="number" optional="true" desc="Ray thickness. Default zero."/>
		<input name="playerId" type="number" optional="true" desc="Instigating player, will be ignored during hit detection."/>
		<output name="didHit" type="bool" desc="If it was a valid hit."/>
		<output name="dist" type="number" desc="Distance along direction where the hit was registered."/>
		<output name="shape" type="number" desc="Handle to hit shape, zero if it did not hit a shape"/>
		<output name="playerId" type="number" desc="PlayerId of hit player, zero if it did not hit a player"/>
		<output name="playerDamageFactor" type="number" desc="1.0 for a hit on the torso, and less for a lower body hit. Applicable only if a player was hit. Use this to scale the damage."/>
		<output name="normal" type="Vec" desc="Normal vector of the hit"/>
	</function>
	<function name="QueryClosestPoint">
		<input name="origin" type="TVec" optional="false" desc="World space point"/>
		<input name="maxDist" type="number" optional="false" desc="Maximum distance. Keep this as low as possible for good performance."/>
		<output name="hit" type="boolean" desc="True if a point was found"/>
		<output name="point" type="TVec" desc="World space closest point"/>
		<output name="normal" type="TVec" desc="World space normal at closest point"/>
		<output name="shape" type="number" desc="Handle to closest shape"/>
	</function>
	<function name="QueryAabbShapes">
		<input name="min" type="TVec" optional="false" desc="Aabb minimum point"/>
		<input name="max" type="TVec" optional="false" desc="Aabb maximum point"/>
		<output name="list" type="table" desc="Indexed table with handles to all shapes in the aabb"/>
	</function>
	<function name="QueryAabbBodies">
		<input name="min" type="TVec" optional="false" desc="Aabb minimum point"/>
		<input name="max" type="TVec" optional="false" desc="Aabb maximum point"/>
		<output name="list" type="table" desc="Indexed table with handles to all bodies in the aabb"/>
	</function>
	<function name="QueryPath">
		<input name="start" type="TVec" optional="false" desc="World space start point"/>
		<input name="end" type="TVec" optional="false" desc="World space target point"/>
		<input name="maxDist" type="number" optional="true" desc="Maximum path length before giving up. Default is infinite."/>
		<input name="targetRadius" type="number" optional="true" desc="Maximum allowed distance to target in meters. Default is 2.0"/>
		<input name="type" type="string" optional="true" desc="Type of path. Can be 'low', 'standart', 'water', 'flying'. Default is 'standart'"/>
	</function>
	<function name="CreatePathPlanner">
		<output name="id" type="number" desc="Path planner id"/>
	</function>
	<function name="DeletePathPlanner">
		<input name="id" type="number" optional="false" desc="Path planner id"/>
	</function>
	<function name="PathPlannerQuery">
		<input name="id" type="number" optional="false" desc="Path planner id"/>
		<input name="start" type="TVec" optional="false" desc="World space start point"/>
		<input name="end" type="TVec" optional="false" desc="World space target point"/>
		<input name="maxDist" type="number" optional="true" desc="Maximum path length before giving up. Default is infinite."/>
		<input name="targetRadius" type="number" optional="true" desc="Maximum allowed distance to target in meters. Default is 2.0"/>
		<input name="type" type="string" optional="true" desc="Type of path. Can be 'low', 'standart', 'water', 'flying'. Default is 'standart'"/>
	</function>
	<function name="AbortPath">
		<input name="id" type="number" optional="true" desc="Path planner id. Default value is 0."/>
	</function>
	<function name="GetPathState">
		<input name="id" type="number" optional="true" desc="Path planner id. Default value is 0."/>
		<output name="state" type="string" desc="Current path planning state"/>
	</function>
	<function name="GetPathLength">
		<input name="id" type="number" optional="true" desc="Path planner id. Default value is 0."/>
		<output name="length" type="number" desc="Length of last path planning result (in meters)"/>
	</function>
	<function name="GetPathPoint">
		<input name="dist" type="number" optional="false" desc="The distance along path. Should be between zero and result from GetPathLength()"/>
		<input name="id" type="number" optional="true" desc="Path planner id. Default value is 0."/>
		<output name="point" type="TVec" desc="The path point dist meters along the path"/>
	</function>
	<function name="GetLastSound">
		<output name="volume" type="number" desc="Volume of loudest sound played last frame"/>
		<output name="position" type="TVec" desc="World position of loudest sound played last frame"/>
	</function>
	<function name="IsPointInWater">
		<input name="point" type="TVec" optional="false" desc="World point as vector"/>
		<output name="inWater" type="boolean" desc="True if point is in water"/>
		<output name="depth" type="number" desc="Depth of point into water, or zero if not in water"/>
	</function>
	<function name="GetWindVelocity">
		<input name="point" type="TVec" optional="false" desc="World point as vector"/>
		<output name="vel" type="TVec" desc="Wind at provided position"/>
	</function>
	<function name="ParticleReset">
	</function>
	<function name="ParticleType">
		<input name="type" type="string" optional="false" desc="Type of particle. Can be 'smoke' or 'plain'."/>
	</function>
	<function name="ParticleTile">
		<input name="type" type="number" optional="false" desc="Tile in the particle texture atlas (0-15)"/>
	</function>
	<function name="ParticleColor">
		<input name="r0" type="number" optional="false" desc="Red value"/>
		<input name="g0" type="number" optional="false" desc="Green value"/>
		<input name="b0" type="number" optional="false" desc="Blue value"/>
		<input name="r1" type="number" optional="true" desc="Red value at end"/>
		<input name="g1" type="number" optional="true" desc="Green value at end"/>
		<input name="b1" type="number" optional="true" desc="Blue value at end"/>
	</function>
	<function name="ParticleRadius">
		<input name="r0" type="number" optional="false" desc="Radius"/>
		<input name="r1" type="number" optional="true" desc="End radius"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleAlpha">
		<input name="a0" type="number" optional="false" desc="Alpha (0.0 - 1.0)"/>
		<input name="a1" type="number" optional="true" desc="End alpha (0.0 - 1.0)"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleGravity">
		<input name="g0" type="number" optional="false" desc="Gravity"/>
		<input name="g1" type="number" optional="true" desc="End gravity"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleDrag">
		<input name="d0" type="number" optional="false" desc="Drag"/>
		<input name="d1" type="number" optional="true" desc="End drag"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleEmissive">
		<input name="d0" type="number" optional="false" desc="Emissive"/>
		<input name="d1" type="number" optional="true" desc="End emissive"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleRotation">
		<input name="r0" type="number" optional="false" desc="Rotation speed in radians per second."/>
		<input name="r1" type="number" optional="true" desc="End rotation speed in radians per second."/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleStretch">
		<input name="s0" type="number" optional="false" desc="Stretch"/>
		<input name="s1" type="number" optional="true" desc="End stretch"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleSticky">
		<input name="s0" type="number" optional="false" desc="Sticky (0.0 - 1.0)"/>
		<input name="s1" type="number" optional="true" desc="End sticky (0.0 - 1.0)"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleCollide">
		<input name="c0" type="number" optional="false" desc="Collide (0.0 - 1.0)"/>
		<input name="c1" type="number" optional="true" desc="End collide (0.0 - 1.0)"/>
		<input name="interpolation" type="string" optional="true" desc="Interpolation method: linear, smooth, easein, easeout or constant. Default is linear."/>
		<input name="fadein" type="number" optional="true" desc="Fade in between t=0 and t=fadein. Default is zero."/>
		<input name="fadeout" type="number" optional="true" desc="Fade out between t=fadeout and t=1. Default is one."/>
	</function>
	<function name="ParticleFlags">
		<input name="bitmask" type="number" optional="false" desc="Particle flags (bitmask 0-65535)"/>
	</function>
	<function name="SpawnParticle">
		<input name="pos" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="velocity" type="TVec" optional="false" desc="World space velocity as vector"/>
		<input name="lifetime" type="number" optional="false" desc="Particle lifetime in seconds"/>
	</function>
	<function name="Spawn">
		<input name="xml" type="string" optional="false" desc="File name or xml string"/>
		<input name="transform" type="TTransform" optional="false" desc="Spawn transform"/>
		<input name="allowStatic" type="boolean" optional="true" desc="Allow spawning static shapes and bodies (default false)"/>
		<input name="jointExisting" type="boolean" optional="true" desc="Allow joints to connect to existing scene geometry (default false)"/>
		<output name="entities" type="table" desc="Indexed table with handles to all spawned entities"/>
	</function>
	<function name="SpawnLayer">
		<input name="xml" type="string" optional="false" desc="File name or xml string"/>
		<input name="layer" type="string" optional="false" desc="Vox layer name"/>
		<input name="transform" type="TTransform" optional="false" desc="Spawn transform"/>
		<input name="allowStatic" type="boolean" optional="true" desc="Allow spawning static shapes and bodies (default false)"/>
		<input name="jointExisting" type="boolean" optional="true" desc="Allow joints to connect to existing scene geometry (default false)"/>
		<output name="entities" type="table" desc="Indexed table with handles to all spawned entities"/>
	</function>
	<function name="SpawnTool">
		<input name="id" type="string" optional="false" desc="Tool ID"/>
		<input name="transform" type="TTransform" optional="false" desc="Spawn transform"/>
		<input name="allowStatic" type="boolean" optional="true" desc="Allow spawning static shapes and bodies (default false)"/>
		<input name="voxScale" type="number" optional="true" desc="Applies a scale to voxels (default 1.0)"/>
		<output name="entities" type="table" desc="Indexed table with handles to all spawned entities"/>
	</function>
	<function name="AddMapMarker" clientonly="true">
		<input name="id" type="number" optional="false" desc="An id to identify the marker, typically player ID or body ID."/>
		<input name="tag" type="string" optional="false" desc="A tag to help distinguish markers."/>
		<input name="name" type="string" optional="false" desc="Name of the marker."/>
		<input name="category" type="string" optional="false" desc="Used to group markers together in map target list."/>
		<input name="showLabelOnMap" type="bool" optional="false" desc="name label will be shown on map if true"/>
		<input name="info" type="string" optional="false" desc="Additional information about the marker, displayed when selected."/>
		<input name="pos" type="Vec" optional="false" desc="The world position of the marker."/>
		<input name="color" type="Vec" optional="false" desc="The color of the marker, as a Vec table (e.g. Vec(1, 0, 0) for red)"/>
		<input name="infoImage" type="string" optional="true" desc="Path to the image to be displayed in the info section."/>
		<input name="dotIcon" type="string" optional="true" desc="Path to the image used to represent the marker on map."/>
	</function>
	<function name="SelectedMapMarker" clientonly="true">
		<output name="id" type="number" desc="id of map marker that was selected this tick."/>
		<output name="tag" type="string" desc="the corresponding tag."/>
	</function>
	<function name="Shoot" serveronly="true">
		<input name="origin" type="TVec" optional="false" desc="Origin in world space as vector"/>
		<input name="direction" type="TVec" optional="false" desc="Unit length direction as world space vector"/>
		<input name="type" type="string" optional="true" desc="Shot type, see description, default is 'bullet'"/>
		<input name="strength" type="number" optional="true" desc="Strength scaling, default is 1.0"/>
		<input name="maxDist" type="number" optional="true" desc="Maximum distance, default is 100.0"/>
		<input name="playerId" type="number" optional="true" desc="Instigating player. Can be skipped for non-player shots (helicopters etc.)"/>
	</function>
	<function name="Paint" serveronly="true">
		<input name="origin" type="TVec" optional="false" desc="Origin in world space as vector"/>
		<input name="radius" type="number" optional="false" desc="Affected radius, in range 0.0 to 5.0"/>
		<input name="type" type="string" optional="true" desc="Paint type. Can be 'explosion' or 'spraycan'. Default is spraycan."/>
		<input name="probability" type="number" optional="true" desc="Dithering probability between zero and one, default is 1.0"/>
	</function>
	<function name="PaintRGBA" serveronly="true">
		<input name="origin" type="TVec" optional="false" desc="Origin in world space as vector"/>
		<input name="radius" type="number" optional="false" desc="Affected radius, in range 0.0 to 5.0"/>
		<input name="red" type="number" optional="false" desc="red color value, in range 0.0 to 1.0"/>
		<input name="green" type="number" optional="false" desc="green color value, in range 0.0 to 1.0"/>
		<input name="blue" type="number" optional="false" desc="blue color value, in range 0.0 to 1.0"/>
		<input name="alpha" type="number" optional="true" desc="alpha channel value, in range 0.0 to 1.0"/>
		<input name="probability" type="number" optional="true" desc="Dithering probability between zero and one, default is 1.0"/>
	</function>
	<function name="MakeHole" serveronly="true">
		<input name="position" type="TVec" optional="false" desc="Hole center point"/>
		<input name="r0" type="number" optional="false" desc="Hole radius for soft materials"/>
		<input name="r1" type="number" optional="true" desc="Hole radius for medium materials. May not be bigger than r0. Default zero."/>
		<input name="r2" type="number" optional="true" desc="Hole radius for hard materials. May not be bigger than r1. Default zero."/>
		<input name="silent" type="boolean" optional="true" desc="Make hole without playing any break sounds."/>
		<output name="count" type="number" desc="Number of voxels that was cut out. This will be zero if there were no changes to any shape."/>
	</function>
	<function name="Explosion" serveronly="true">
		<input name="pos" type="TVec" optional="false" desc="Position in world space as vector"/>
		<input name="size" type="number" optional="false" desc="Explosion size from 0.5 to 4.0"/>
		<input name="instigatingPlayerId" type="number" optional="true" desc="Instigating player ID."/>
	</function>
	<function name="SpawnFire" serveronly="true">
		<input name="pos" type="TVec" optional="false" desc="Position in world space as vector"/>
	</function>
	<function name="GetFireCount">
		<output name="count" type="number" desc="Number of active fires in level"/>
	</function>
	<function name="QueryClosestFire">
		<input name="origin" type="TVec" optional="false" desc="World space position as vector"/>
		<input name="maxDist" type="number" optional="false" desc="Maximum search distance"/>
		<output name="hit" type="boolean" desc="A fire was found within search distance"/>
		<output name="pos" type="TVec" desc="Position of closest fire"/>
	</function>
	<function name="QueryAabbFireCount">
		<input name="min" type="TVec" optional="false" desc="Aabb minimum point"/>
		<input name="max" type="TVec" optional="false" desc="Aabb maximum point"/>
		<output name="count" type="number" desc="Number of active fires in bounding box"/>
	</function>
	<function name="RemoveAabbFires" serveronly="true">
		<input name="min" type="TVec" optional="false" desc="Aabb minimum point"/>
		<input name="max" type="TVec" optional="false" desc="Aabb maximum point"/>
		<output name="count" type="number" desc="Number of fires removed"/>
	</function>
	<function name="GetCameraTransform" clientonly="true">
		<output name="transform" type="TTransform" desc="Current camera transform"/>
	</function>
	<function name="SetCameraTransform" clientonly="true">
		<input name="transform" type="TTransform" optional="false" desc="Desired camera transform"/>
		<input name="fov" type="number" optional="true" desc="Optional horizontal field of view in degrees (default: 90)"/>
	</function>
	<function name="RequestFirstPerson" clientonly="true">
		<input name="transition" type="boolean" optional="false" desc="Use transition"/>
	</function>
	<function name="RequestThirdPerson" clientonly="true">
		<input name="transition" type="boolean" optional="false" desc="Use transition"/>
	</function>
	<function name="SetCameraOffsetTransform" clientonly="true">
		<input name="transform" type="TTransform" optional="false" desc="Desired camera offset transform"/>
		<input name="stackable" type="boolean" optional="true" desc="True if camera offset should summ up with multiple calls per tick"/>
	</function>
	<function name="AttachCameraTo" clientonly="true">
		<input name="handle" type="number" optional="false" desc="Body or shape handle"/>
		<input name="ignoreRotation" type="boolean" optional="true" desc="True to ignore rotation and use position only, false to use full transform"/>
	</function>
	<function name="SetPivotClipBody" clientonly="true">
		<input name="bodyHandle" type="number" optional="false" desc="Handle of a body, shapes of which should be"/>
		<input name="mainShapeIdx" type="number" optional="false" desc="Optional index of a shape among the given"/>
	</function>
	<function name="ShakeCamera" clientonly="true">
		<input name="strength" type="number" optional="false" desc="Normalized strength of shaking"/>
	</function>
	<function name="SetCameraFov" clientonly="true">
		<input name="degrees" type="number" optional="false" desc="Horizontal field of view in degrees (10-170)"/>
	</function>
	<function name="SetCameraDof" clientonly="true">
		<input name="distance" type="number" optional="false" desc="Depth of field distance"/>
		<input name="amount" type="number" optional="true" desc="Optional amount of blur (default 1.0)"/>
	</function>
	<function name="DisableMotionBlur" clientonly="true">
	</function>
	<function name="SetLowHealthBlurThreshold" clientonly="true">
		<input name="health" type="number" optional="false" desc="health value where anything lower results in blurred vision"/>
	</function>
	<function name="PointLight">
		<input name="pos" type="TVec" optional="false" desc="World space light position"/>
		<input name="r" type="number" optional="false" desc="Red"/>
		<input name="g" type="number" optional="false" desc="Green"/>
		<input name="b" type="number" optional="false" desc="Blue"/>
		<input name="intensity" type="number" optional="true" desc="Intensity. Default is 1.0."/>
	</function>
	<function name="SetTimeScale" serveronly="true">
		<input name="scale" type="number" optional="false" desc="Time scale 0.0 to 2.0"/>
	</function>
	<function name="SetEnvironmentDefault" serveronly="true">
	</function>
	<function name="SetEnvironmentProperty" serveronly="true">
		<input name="name" type="string" optional="false" desc="Property name"/>
		<input name="value0" type="any" optional="false" desc="Property value (type depends on property)"/>
		<input name="value1" type="any" optional="true" desc="Extra property value (only some properties)"/>
		<input name="value2" type="any" optional="true" desc="Extra property value (only some properties)"/>
		<input name="value3" type="any" optional="true" desc="Extra property value (only some properties)"/>
	</function>
	<function name="GetEnvironmentProperty">
		<input name="name" type="string" optional="false" desc="Property name"/>
		<output name="value0" type="any" desc="Property value (type depends on property)"/>
		<output name="value1" type="any" desc="Property value (only some properties)"/>
		<output name="value2" type="any" desc="Property value (only some properties)"/>
		<output name="value3" type="any" desc="Property value (only some properties)"/>
		<output name="value4" type="any" desc="Property value (only some properties)"/>
	</function>
	<function name="SetPostProcessingDefault">
	</function>
	<function name="SetPostProcessingProperty">
		<input name="name" type="string" optional="false" desc="Property name"/>
		<input name="value0" type="number" optional="false" desc="Property value"/>
		<input name="value1" type="number" optional="true" desc="Extra property value (only some properties)"/>
		<input name="value2" type="number" optional="true" desc="Extra property value (only some properties)"/>
	</function>
	<function name="GetPostProcessingProperty">
		<input name="name" type="string" optional="false" desc="Property name"/>
		<output name="value0" type="number" desc="Property value"/>
		<output name="value1" type="number" desc="Property value (only some properties)"/>
		<output name="value2" type="number" desc="Property value (only some properties)"/>
	</function>
	<function name="DrawLine">
		<input name="p0" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="p1" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="r" type="number" optional="true" desc="Red"/>
		<input name="g" type="number" optional="true" desc="Green"/>
		<input name="b" type="number" optional="true" desc="Blue"/>
		<input name="a" type="number" optional="true" desc="Alpha"/>
	</function>
	<function name="DebugLine">
		<input name="p0" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="p1" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="r" type="number" optional="true" desc="Red"/>
		<input name="g" type="number" optional="true" desc="Green"/>
		<input name="b" type="number" optional="true" desc="Blue"/>
		<input name="a" type="number" optional="true" desc="Alpha"/>
	</function>
	<function name="DebugCross">
		<input name="p0" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="r" type="number" optional="true" desc="Red"/>
		<input name="g" type="number" optional="true" desc="Green"/>
		<input name="b" type="number" optional="true" desc="Blue"/>
		<input name="a" type="number" optional="true" desc="Alpha"/>
	</function>
	<function name="DebugTransform">
		<input name="transform" type="TTransform" optional="false" desc="The transform"/>
		<input name="scale" type="number" optional="true" desc="Length of the axis"/>
	</function>
	<function name="DebugWatch">
		<input name="name" type="string" optional="false" desc="Name"/>
		<input name="value" type="any" optional="false" desc="Value"/>
		<input name="lineWrapping" type="boolean" optional="true" desc="True if you need to wrap Table lines. Works only with tables."/>
	</function>
	<function name="DebugPrint">
		<input name="message" type="string" optional="false" desc="Message to display"/>
		<input name="lineWrapping" type="boolean" optional="true" desc="True if you need to wrap Table lines. Works only with tables."/>
	</function>
	<function name="RegisterListenerTo">
		<input name="eventName" type="string" optional="false" desc="Event name"/>
		<input name="listenerFunction" type="string" optional="false" desc="Listener function name"/>
	</function>
	<function name="UnregisterListener">
		<input name="eventName" type="string" optional="false" desc="Event name"/>
		<input name="listenerFunction" type="string" optional="false" desc="Listener function name"/>
	</function>
	<function name="TriggerEvent">
		<input name="eventName" type="string" optional="false" desc="Event name"/>
		<input name="args" type="string" optional="true" desc="Event parameters"/>
	</function>
	<function name="LoadHaptic" clientonly="true">
		<input name="filepath" type="string" optional="false" desc="Path to Haptic effect to play"/>
		<output name="handle" type="string" desc="Haptic effect handle"/>
	</function>
	<function name="CreateHaptic" clientonly="true">
		<input name="leftMotorRumble" type="number" optional="false" desc="Amount of rumble for left motor"/>
		<input name="rightMotorRumble" type="number" optional="false" desc="Amount of rumble for right motor"/>
		<input name="leftTriggerRumble" type="number" optional="false" desc="Amount of rumble for left trigger"/>
		<input name="rightTriggerRumble" type="number" optional="false" desc="Amount of rumble for right trigger"/>
		<output name="handle" type="string" desc="Haptic effect handle"/>
	</function>
	<function name="PlayHaptic" clientonly="true">
		<input name="handle" type="string" optional="false" desc="Handle of haptic effect"/>
		<input name="amplitude" type="number" optional="false" desc="Amplidute used for calculation of Haptic effect."/>
	</function>
	<function name="PlayHapticDirectional" clientonly="true">
		<input name="handle" type="string" optional="false" desc="Handle of haptic effect"/>
		<input name="direction" type="TVec" optional="false" desc="Direction in which effect must be played"/>
		<input name="amplitude" type="number" optional="false" desc="Amplidute used for calculation of Haptic effect."/>
	</function>
	<function name="HapticIsPlaying" clientonly="true">
		<input name="handle" type="string" optional="false" desc="Handle of haptic effect"/>
		<output name="flag" type="boolean" desc="is current Haptic playing or not"/>
	</function>
	<function name="SetToolHaptic" clientonly="true">
		<input name="id" type="string" optional="false" desc="Tool unique identifier"/>
		<input name="handle" type="string" optional="false" desc="Handle of haptic effect"/>
		<input name="amplitude" type="number" optional="true" desc="Amplitude multiplier. Default (1.0)"/>
	</function>
	<function name="StopHaptic" clientonly="true">
		<input name="handle" type="string" optional="false" desc="Handle of haptic effect"/>
	</function>
	<function name="AddHeat" serveronly="true">
		<input name="shape" type="number" optional="false" desc="Shape handle"/>
		<input name="pos" type="TVec" optional="false" desc="World space point as vector"/>
		<input name="amount" type="number" optional="false" desc="amount of heat"/>
	</function>
	<function name="GetBoundaryArea">
		<output name="area" type="Number" desc="Number representing the area of the boundary."/>
	</function>
	<function name="GetBoundaryBounds">
		<output name="min" type="Vec" desc="Vector representing the AABB lower bound"/>
		<output name="max" type="Vec" desc="Vector representing the AABB upper bound"/>
	</function>
	<function name="GetGravity">
		<output name="vector" type="TVec" desc="Gravity vector"/>
	</function>
	<function name="SetGravity" serveronly="true">
		<input name="vec" type="TVec" optional="false" desc="Gravity vector"/>
	</function>
	<function name="GetFps">
		<output name="fps" type="number" desc="Frames per second"/>
	</function>
	<function name="UiMakeInteractive">
	</function>
	<function name="UiPush">
	</function>
	<function name="UiPop">
	</function>
	<function name="UiWidth">
		<output name="width" type="number" desc="Width of draw context"/>
	</function>
	<function name="UiHeight">
		<output name="height" type="number" desc="Height of draw context"/>
	</function>
	<function name="UiCenter">
		<output name="center" type="number" desc="Half width of draw context"/>
	</function>
	<function name="UiMiddle">
		<output name="middle" type="number" desc="Half height of draw context"/>
	</function>
	<function name="UiColor">
		<input name="r" type="number" optional="false" desc="Red channel"/>
		<input name="g" type="number" optional="false" desc="Green channel"/>
		<input name="b" type="number" optional="false" desc="Blue channel"/>
		<input name="a" type="number" optional="true" desc="Alpha channel. Default 1.0"/>
	</function>
	<function name="UiColorFilter">
		<input name="r" type="number" optional="false" desc="Red channel"/>
		<input name="g" type="number" optional="false" desc="Green channel"/>
		<input name="b" type="number" optional="false" desc="Blue channel"/>
		<input name="a" type="number" optional="true" desc="Alpha channel. Default 1.0"/>
	</function>
	<function name="UiResetColor">
	</function>
	<function name="UiTranslate">
		<input name="x" type="number" optional="false" desc="X component"/>
		<input name="y" type="number" optional="false" desc="Y component"/>
	</function>
	<function name="UiRotate">
		<input name="angle" type="number" optional="false" desc="Angle in degrees, counter clockwise"/>
	</function>
	<function name="UiScale">
		<input name="x" type="number" optional="false" desc="X component"/>
		<input name="y" type="number" optional="true" desc="Y component. Default value is x."/>
	</function>
	<function name="UiGetScale">
		<output name="x" type="number" desc="X scale"/>
		<output name="y" type="number" desc="Y scale"/>
	</function>
	<function name="UiClipRect">
		<input name="width" type="number" optional="false" desc="Rect width"/>
		<input name="height" type="number" optional="false" desc="Rect height"/>
		<input name="inherit" type="boolean" optional="true" desc="True if must include the parent's clip rect"/>
	</function>
	<function name="UiWindow">
		<input name="width" type="number" optional="false" desc="Window width"/>
		<input name="height" type="number" optional="false" desc="Window height"/>
		<input name="clip" type="boolean" optional="true" desc="Clip content outside window. Default is false."/>
		<input name="inherit" type="boolean" optional="true" desc="Inherit current clip region (for nested clip regions)"/>
	</function>
	<function name="UiGetCurrentWindow">
		<output name="tl_x" type="number" desc="Top left x"/>
		<output name="tl_y" type="number" desc="Top left y"/>
		<output name="br_x" type="number" desc="Bottom right x"/>
		<output name="br_y" type="number" desc="Bottom right y"/>
	</function>
	<function name="UiIsInCurrentWindow">
		<input name="x" type="number" optional="false" desc="X"/>
		<input name="y" type="number" optional="false" desc="Y"/>
		<output name="val" type="boolean" desc="True if"/>
	</function>
	<function name="UiIsRectFullyClipped">
		<input name="w" type="number" optional="false" desc="Width"/>
		<input name="h" type="number" optional="false" desc="Height"/>
		<output name="value" type="boolean" desc="True if rect is fully clipped"/>
	</function>
	<function name="UiIsInClipRegion">
		<input name="x" type="number" optional="false" desc="X"/>
		<input name="y" type="number" optional="false" desc="Y"/>
		<output name="value" type="boolean" desc="True if point is in clip region"/>
	</function>
	<function name="UiIsFullyClipped">
		<input name="w" type="number" optional="false" desc="Width"/>
		<input name="h" type="number" optional="false" desc="Height"/>
		<output name="value" type="boolean" desc="True if rect is not overlapping clip region"/>
	</function>
	<function name="UiSafeMargins">
		<output name="x0" type="number" desc="Left"/>
		<output name="y0" type="number" desc="Top"/>
		<output name="x1" type="number" desc="Right"/>
		<output name="y1" type="number" desc="Bottom"/>
	</function>
	<function name="UiCanvasSize">
		<output name="value" type="table" desc="Canvas width and height"/>
	</function>
	<function name="UiAlign">
		<input name="alignment" type="string" optional="false" desc="Alignment keywords"/>
	</function>
	<function name="UiTextAlignment">
		<input name="alignment" type="string" optional="false" desc="Alignment keyword"/>
	</function>
	<function name="UiModalBegin">
		<input name="force" type="boolean" optional="true" desc="Pass true if you need to increase the priority of this modal in the context"/>
	</function>
	<function name="UiModalEnd">
	</function>
	<function name="UiDisableInput">
	</function>
	<function name="UiEnableInput">
	</function>
	<function name="UiReceivesInput">
		<output name="receives" type="boolean" desc="True if current context receives input"/>
	</function>
	<function name="UiGetMousePos">
		<output name="x" type="number" desc="X coordinate"/>
		<output name="y" type="number" desc="Y coordinate"/>
	</function>
	<function name="UiGetCanvasMousePos">
		<output name="x" type="number" desc="X coordinate"/>
		<output name="y" type="number" desc="Y coordinate"/>
	</function>
	<function name="UiIsMouseInRect">
		<input name="w" type="number" optional="false" desc="Width"/>
		<input name="h" type="number" optional="false" desc="Height"/>
		<output name="inside" type="boolean" desc="True if mouse pointer is within rectangle"/>
	</function>
	<function name="UiWorldToPixel">
		<input name="point" type="TVec" optional="false" desc="3D world position as vector"/>
		<output name="x" type="number" desc="X coordinate"/>
		<output name="y" type="number" desc="Y coordinate"/>
		<output name="distance" type="number" desc="Distance to point"/>
	</function>
	<function name="UiPixelToWorld">
		<input name="x" type="number" optional="false" desc="X coordinate"/>
		<input name="y" type="number" optional="false" desc="Y coordinate"/>
		<output name="direction" type="TVec" desc="3D world direction as vector"/>
	</function>
	<function name="UiGetCursorPos">
	</function>
	<function name="UiBlur">
		<input name="amount" type="number" optional="false" desc="Blur amount (0.0 to 1.0)"/>
	</function>
	<function name="UiFont">
		<input name="path" type="string" optional="false" desc="Path to TTF font file"/>
		<input name="size" type="number" optional="false" desc="Font size (10 to 100)"/>
	</function>
	<function name="UiFontHeight">
		<output name="size" type="number" desc="Font size"/>
	</function>
	<function name="UiText">
		<input name="text" type="string" optional="false" desc="Print text at cursor location"/>
		<input name="move" type="boolean" optional="true" desc="Automatically move cursor vertically. Default false."/>
		<input name="maxChars" type="number" optional="true" desc="Maximum amount of characters. Default 100000."/>
		<output name="w" type="number" desc="Width of text"/>
		<output name="h" type="number" desc="Height of text"/>
		<output name="x" type="number" desc="End x-position of text."/>
		<output name="y" type="number" desc="End y-position of text."/>
		<output name="linkId" type="string" desc="Link id of clicked link"/>
	</function>
	<function name="UiTextDisableWildcards">
		<input name="disable" type="boolean" optional="false" desc="Enable or disable wildcard [[...]] substitution support in UiText"/>
	</function>
	<function name="UiTextUniformHeight">
		<input name="uniform" type="boolean" optional="false" desc="Enable or disable fixed line height for text rendering"/>
	</function>
	<function name="UiGetTextSize">
		<input name="text" type="string" optional="false" desc="A text string"/>
		<output name="w" type="number" desc="Width of text"/>
		<output name="h" type="number" desc="Height of text"/>
		<output name="x" type="number" desc="Offset x-component of text AABB"/>
		<output name="y" type="number" desc="Offset y-component of text AABB"/>
	</function>
	<function name="UiMeasureText">
		<input name="space" type="number" optional="false" desc="Space between lines"/>
		<input name="text/locale" type="string" optional="false" desc=", ... A text strings"/>
		<output name="w" type="number" desc="Width of biggest line"/>
		<output name="h" type="number" desc="Height of all lines combined with interval"/>
	</function>
	<function name="UiGetSymbolsCount">
		<input name="text" type="string" optional="false" desc="Text"/>
		<output name="count" type="number" desc="Symbols count"/>
	</function>
	<function name="UiTextSymbolsSub">
		<input name="text" type="string" optional="false" desc="Text"/>
		<input name="from" type="number" optional="false" desc="From element index"/>
		<input name="to" type="number" optional="false" desc="To element index"/>
		<output name="substring" type="string" desc="Substring"/>
	</function>
	<function name="UiWordWrap">
		<input name="width" type="number" optional="false" desc="Maximum width of text"/>
	</function>
	<function name="UiTextLineSpacing">
		<input name="value" type="number" optional="false" desc="Text linespacing"/>
	</function>
	<function name="UiTextOutline">
		<input name="r" type="number" optional="false" desc="Red channel"/>
		<input name="g" type="number" optional="false" desc="Green channel"/>
		<input name="b" type="number" optional="false" desc="Blue channel"/>
		<input name="a" type="number" optional="false" desc="Alpha channel"/>
		<input name="thickness" type="number" optional="true" desc="Outline thickness. Default is 0.1"/>
	</function>
	<function name="UiTextShadow">
		<input name="r" type="number" optional="false" desc="Red channel"/>
		<input name="g" type="number" optional="false" desc="Green channel"/>
		<input name="b" type="number" optional="false" desc="Blue channel"/>
		<input name="a" type="number" optional="false" desc="Alpha channel"/>
		<input name="distance" type="number" optional="true" desc="Shadow distance. Default is 1.0"/>
		<input name="blur" type="number" optional="true" desc="Shadow blur. Default is 0.5"/>
	</function>
	<function name="UiRect">
		<input name="w" type="number" optional="false" desc="Width"/>
		<input name="h" type="number" optional="false" desc="Height"/>
	</function>
	<function name="UiRectOutline">
		<input name="width" type="number" optional="false" desc="Rectangle width"/>
		<input name="height" type="number" optional="false" desc="Rectangle height"/>
		<input name="thickness" type="number" optional="false" desc="Rectangle outline thickness"/>
	</function>
	<function name="UiRoundedRect">
		<input name="width" type="number" optional="false" desc="Rectangle width"/>
		<input name="height" type="number" optional="false" desc="Rectangle height"/>
		<input name="roundingRadius" type="number" optional="false" desc="Round corners radius"/>
	</function>
	<function name="UiRoundedRectOutline">
		<input name="width" type="number" optional="false" desc="Rectangle width"/>
		<input name="height" type="number" optional="false" desc="Rectangle height"/>
		<input name="roundingRadius" type="number" optional="false" desc="Round corners radius"/>
		<input name="thickness" type="number" optional="false" desc="Rectangle outline thickness"/>
	</function>
	<function name="UiCircle">
		<input name="radius" type="number" optional="false" desc="Circle radius"/>
	</function>
	<function name="UiCircleOutline">
		<input name="radius" type="number" optional="false" desc="Circle radius"/>
		<input name="thickness" type="number" optional="false" desc="Circle outline thickness"/>
	</function>
	<function name="UiFillImage">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
	</function>
	<function name="UiBackgroundBlur">
		<input name="amount" type="number" optional="false" desc="Blur amount (0.0 to 1.0)"/>
	</function>
	<function name="UiImage">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
		<input name="x0" type="number" optional="true" desc="Lower x coordinate (default is 0)"/>
		<input name="y0" type="number" optional="true" desc="Lower y coordinate (default is 0)"/>
		<input name="x1" type="number" optional="true" desc="Upper x coordinate (default is image width)"/>
		<input name="y1" type="number" optional="true" desc="Upper y coordinate (default is image height)"/>
		<output name="w" type="number" desc="Width of drawn image"/>
		<output name="h" type="number" desc="Height of drawn image"/>
	</function>
	<function name="UiUnloadImage">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
	</function>
	<function name="UiHasImage">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
		<output name="exists" type="boolean" desc="Does the image exists at the specified path"/>
	</function>
	<function name="UiGetImageSize">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
		<output name="w" type="number" desc="Image width"/>
		<output name="h" type="number" desc="Image height"/>
	</function>
	<function name="UiImageBox">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
		<input name="width" type="number" optional="false" desc="Width"/>
		<input name="height" type="number" optional="false" desc="Height"/>
		<input name="borderWidth" type="number" optional="true" desc="Border width. Default 0"/>
		<input name="borderHeight" type="number" optional="true" desc="Border height. Default 0"/>
	</function>
	<function name="UiSound">
		<input name="path" type="string" optional="false" desc="Path to sound file (OGG format)"/>
		<input name="volume" type="number" optional="true" desc="Playback volume. Default 1.0"/>
		<input name="pitch" type="number" optional="true" desc="Playback pitch. Default 1.0"/>
		<input name="panAzimuth" type="number" optional="true" desc="Playback stereo panning azimuth (-PI to PI). Default 0.0."/>
		<input name="panDepth" type="number" optional="true" desc="Playback stereo panning depth (0.0 to 1.0). Default 1.0."/>
	</function>
	<function name="UiSoundLoop">
		<input name="path" type="string" optional="false" desc="Path to looping sound file (OGG format)"/>
		<input name="volume" type="number" optional="true" desc="Playback volume. Default 1.0"/>
		<input name="pitch" type="number" optional="true" desc="Playback pitch. Default 1.0"/>
	</function>
	<function name="UiMute">
		<input name="amount" type="number" optional="false" desc="Mute by this amount (0.0 to 1.0)"/>
		<input name="music" type="boolean" optional="true" desc="Mute music as well"/>
	</function>
	<function name="UiButtonImageBox">
		<input name="path" type="string" optional="false" desc="Path to image (PNG or JPG format)"/>
		<input name="borderWidth" type="number" optional="false" desc="Border width"/>
		<input name="borderHeight" type="number" optional="false" desc="Border height"/>
		<input name="r" type="number" optional="true" desc="Red multiply. Default 1.0"/>
		<input name="g" type="number" optional="true" desc="Green multiply. Default 1.0"/>
		<input name="b" type="number" optional="true" desc="Blue multiply. Default 1.0"/>
		<input name="a" type="number" optional="true" desc="Alpha channel. Default 1.0"/>
	</function>
	<function name="UiButtonHoverColor">
		<input name="r" type="number" optional="false" desc="Red multiply"/>
		<input name="g" type="number" optional="false" desc="Green multiply"/>
		<input name="b" type="number" optional="false" desc="Blue multiply"/>
		<input name="a" type="number" optional="true" desc="Alpha channel. Default 1.0"/>
	</function>
	<function name="UiButtonPressColor">
		<input name="r" type="number" optional="false" desc="Red multiply"/>
		<input name="g" type="number" optional="false" desc="Green multiply"/>
		<input name="b" type="number" optional="false" desc="Blue multiply"/>
		<input name="a" type="number" optional="true" desc="Alpha channel. Default 1.0"/>
	</function>
	<function name="UiButtonPressDist">
		<input name="distX" type="number" optional="false" desc="Press distance along X axis"/>
		<input name="distY" type="number" optional="false" desc="Press distance along Y axis"/>
	</function>
	<function name="UiButtonTextHandling">
		<input name="type" type="number" optional="false" desc="One of the enum value"/>
	</function>
	<function name="UiTextButton">
		<input name="text" type="string" optional="false" desc="Text on button"/>
		<input name="w" type="number" optional="true" desc="Button width"/>
		<input name="h" type="number" optional="true" desc="Button height"/>
		<output name="pressed" type="boolean" desc="True if user clicked button"/>
	</function>
	<function name="UiImageButton">
		<input name="path" type="string" optional="false" desc="Image path (PNG or JPG file)"/>
		<output name="pressed" type="boolean" desc="True if user clicked button"/>
	</function>
	<function name="UiBlankButton">
		<input name="w" type="number" optional="false" desc="Button width"/>
		<input name="h" type="number" optional="false" desc="Button height"/>
		<output name="pressed" type="boolean" desc="True if user clicked button"/>
	</function>
	<function name="UiSlider">
		<input name="path" type="string" optional="false" desc="Image path (PNG or JPG file)"/>
		<input name="axis" type="string" optional="false" desc="Drag axis, must be 'x' or 'y'"/>
		<input name="current" type="number" optional="false" desc="Current value"/>
		<input name="min" type="number" optional="false" desc="Minimum value"/>
		<input name="max" type="number" optional="false" desc="Maximum value"/>
		<output name="value" type="number" desc="New value, same as current if not changed"/>
		<output name="done" type="boolean" desc="True if user is finished changing (released slider)"/>
	</function>
	<function name="UiSliderHoverColorFilter">
		<input name="r" type="number" optional="false" desc="Red channel"/>
		<input name="g" type="number" optional="false" desc="Green channel"/>
		<input name="b" type="number" optional="false" desc="Blue channel"/>
		<input name="a" type="number" optional="false" desc="Alpha channel"/>
	</function>
	<function name="UiSliderThumbSize">
		<input name="width" type="number" optional="false" desc="Thumb width"/>
		<input name="height" type="number" optional="false" desc="Thumb height"/>
	</function>
	<function name="UiGetScreen">
		<output name="handle" type="number" desc="Handle to the screen running this script or zero if none."/>
	</function>
	<function name="UiNavComponent">
		<input name="w" type="number" optional="false" desc="Width of the component"/>
		<input name="h" type="number" optional="false" desc="Height of the component"/>
		<output name="id" type="string" desc="Generated ID of the component which can be used to get an info about the component state"/>
	</function>
	<function name="UiIgnoreNavigation">
		<input name="ignore" type="boolean" optional="true" desc="Whether ignore the navigation in a current UI scope or not."/>
	</function>
	<function name="UiResetNavigation">
	</function>
	<function name="UiNavSkipUpdate">
	</function>
	<function name="UiIsComponentInFocus">
		<input name="id" type="string" optional="false" desc="Navigation id of the component"/>
		<output name="focus" type="boolean" desc="Flag whether the component in focus on not"/>
	</function>
	<function name="UiNavGroupBegin">
		<input name="id" type="string" optional="true" desc="Name of navigation group. If not presented, will be generated automatically."/>
		<output name="id" type="string" desc="Generated ID of the group which can be used to get an info about the group state"/>
	</function>
	<function name="UiNavGroupEnd">
	</function>
	<function name="UiNavGroupSize">
		<input name="w" type="number" optional="false" desc="Width of the component"/>
		<input name="h" type="number" optional="false" desc="Height of the component"/>
	</function>
	<function name="UiForceFocus">
		<input name="id" type="string" optional="false" desc="Id of the component"/>
	</function>
	<function name="UiFocusedComponentId">
		<output name="id" type="string" desc="Id of the focused component"/>
	</function>
	<function name="UiFocusedComponentRect">
		<input name="n" type="number" optional="true" desc="Take n-th parent of the focused component insetad of the component itself"/>
		<output name="rect" type="table" desc="Rect object with info about the component bounding rectangle"/>
	</function>
	<function name="UiGetItemSize">
		<output name="x" type="number" desc="Width"/>
		<output name="y" type="number" desc="Height"/>
	</function>
	<function name="UiAutoTranslate">
		<input name="value" type="boolean" optional="false" desc=""/>
	</function>
	<function name="UiBeginFrame">
	</function>
	<function name="UiResetFrame">
	</function>
	<function name="UiFrameOccupy">
		<input name="width" type="number" optional="false" desc="Width"/>
		<input name="height" type="number" optional="false" desc="Height"/>
	</function>
	<function name="UiEndFrame">
		<output name="width" type="number" desc="Width of content drawn between since UiBeginFrame was called"/>
		<output name="height" type="number" desc="Height of content drawn between since UiBeginFrame was called"/>
	</function>
	<function name="UiFrameSkipItem">
		<input name="skip" type="boolean" optional="false" desc="Should skip item"/>
	</function>
	<function name="UiGetFrameNo">
		<output name="frameNo" type="number" desc="Frame number since the level start"/>
	</function>
	<function name="UiGetLanguage">
		<output name="index" type="number" desc="Language index"/>
	</function>
	<function name="UiSetCursorState">
		<input name="state" type="number" optional="false" desc=""/>
	</function>
</api>
